Simple 301 Redirects - Version 2.0.0

Version Description

  • 01/04/2021 =
  • Revamped: New UI/UX
  • Added: Support for WordPress 5.7
  • Added: Options to Export/Import Links
  • Few minor bug fix and improvements
Download this release

Release Info

Developer Asif2BD
Plugin Icon 128x128 Simple 301 Redirects
Version 2.0.0
Comparing to
See all releases

Code changes from version 1.07 to 2.0.0

assets/css/simple-301-redirects.css ADDED
@@ -0,0 +1 @@
 
1
+ .simple301redirects{padding-right:20px;padding-top:20px}.simple301redirects .simple301redirects__topbar{display:flex;justify-content:center;align-items:center;background:#fff;padding:20px;border:1px solid #ebebeb;box-shadow:0 5px 5px rgba(235,235,235,0.05);margin-bottom:20px;border-radius:5px}.simple301redirects .simple301redirects__topbar .simple301redirects__topbar__logo{display:flex;margin-right:15px}.simple301redirects .simple301redirects__topbar .simple301redirects__topbar__logo img{height:40px}.simple301redirects .simple301redirects__topbar .simple301redirects__topbar__title{font-size:23px;font-weight:400;color:#252525;margin:0}.simple301redirects input[type=text],.simple301redirects textarea{height:40px;border-radius:5px;background:#f7f8fa;padding:0 15px;width:100%;border:1px solid #ebebeb;font-size:15px}.simple301redirects input[type=text]:focus,.simple301redirects textarea:focus{background:#fffaf8;border-color:#faccba;outline:none;box-shadow:none}.simple301redirects input[type=text].error,.simple301redirects textarea.error{border-color:red}.simple301redirects .simple301redirects__managelinks{background:#fff;padding:30px;border:1px solid #ebebeb;box-shadow:0 5px 5px rgba(235,235,235,0.05);border-radius:5px}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item{display:flex}@media screen and (max-width:767.98px){.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item{flex-wrap:wrap}}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner{width:calc(100% - 310px);display:flex}@media screen and (max-width:991.88px){.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner{width:calc(100% - 305px)}}@media screen and (max-width:767.98px){.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner{width:100%}}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__info__request,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__item__request,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__info__request,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__item__request{width:calc(50% - 30px)}@media screen and (max-width:1199.88px){.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__info__request,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__item__request,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__info__request,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__item__request{width:calc(50% - 20px)}}@media screen and (max-width:991.88px){.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__info__request,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__item__request,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__info__request,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__item__request{width:calc(50% - 10px)}}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__info__request,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__info__request{margin-right:60px}@media screen and (max-width:1199.88px){.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__info__request,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__info__request{margin-right:40px}}@media screen and (max-width:991.88px){.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__info__request,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__info__request{margin-right:20px}}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__item__icon,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__item__icon{width:60px;height:40px;display:flex;justify-content:center;align-items:center}@media screen and (max-width:1199.88px){.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__item__icon,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__item__icon{width:40px}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__item__icon img,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__item__icon img{width:20px}}@media screen and (max-width:991.88px){.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__item__icon,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__item__icon{width:20px}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__item__icon img,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__item__icon img{display:none}}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__info__destination,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__item__destination,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__info__destination,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__item__destination{width:calc(50% - 30px)}@media screen and (max-width:1199.88px){.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__info__destination,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__item__destination,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__info__destination,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__item__destination{width:calc(50% - 20px)}}@media screen and (max-width:991.88px){.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__info__destination,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info__inner .simple301redirects__managelinks__item__destination,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__info__destination,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item__inner .simple301redirects__managelinks__item__destination{width:calc(50% - 10px)}}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info{margin-bottom:25px}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info .simple301redirects__managelinks__info__destination h4,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info .simple301redirects__managelinks__info__inner h4{font-size:20px;font-weight:500;color:#252525;margin-top:0;margin-bottom:10px}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info .simple301redirects__managelinks__info__destination p,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__info .simple301redirects__managelinks__info__inner p{color:#707070;font-size:14px;font-weight:400;margin-top:0;margin-bottom:0;line-height:1.3}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item{margin-bottom:15px}@media screen and (max-width:991.88px){.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item{margin-bottom:16px}}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control{display:flex;align-items:center;padding-left:20px}@media screen and (max-width:991.88px){.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control{padding-left:15px}}@media screen and (max-width:767.98px){.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control{padding-left:0;padding-top:9px}}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control .lock__button,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control .Simple301Redirects__loading-dock,.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control>button{margin-right:10px}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control .simple301redirects__icon__button{background:none;border:none;outline:none;max-height:30px;max-width:30px;padding:0;display:flex;cursor:pointer}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control .simple301redirects__icon__button img{height:20px;max-width:100%}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control .simple301redirects__icon__button.delete__button img{height:17px}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control .simple301redirects__button{min-height:36px;display:inline-flex;justify-content:center;align-items:center;padding:8px 20px;border-radius:40px;background:#f7f8fa;border:1px solid #ebebeb;color:#707070;font-size:13px;font-weight:500;text-transform:uppercase;cursor:pointer;transition:all 0.3s ease-in-out;outline:none;box-sizing:border-box}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control .simple301redirects__button.primary__button{background:#003be2;border:1px solid #003be2;color:#fff}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control .simple301redirects__button.primary__button:hover{background:#003add;border-color:#003add;box-shadow:0 10px 10px rgba(41,97,255,0.15)}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control .simple301redirects__button.success__button{width:92px;background:rgba(29,214,133,0.05);border:1px solid #00af5f;color:#00af5f}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control .simple301redirects__button.success__button:hover{background:#00aa5c;border-color:#00aa5c;color:#fff;box-shadow:0 10px 10px rgba(0,175,95,0.15)}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control .simple301redirects__button.lock__button{background:transparent;border:none;box-shadow:0 5px 15px rgba(37,37,37,0.15);color:#0086c6}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control .simple301redirects__button.lock__button img{transform:translateX(-7px)}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control .simple301redirects__button.lock__button span{filter:blur(0.7px)}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control .simple301redirects__button.lock__button:hover{background:#f7f8fa;border:none;color:#0086c6}.simple301redirects .simple301redirects__managelinks .simple301redirects__managelinks__item .simple301redirects__managelinks__item__control .simple301redirects__button:hover{background:#f97272;border-color:#f97272;color:#fff}.simple301redirects .simple301redirects__managelinks .simple301redirects__wildcards{display:flex;align-items:center}.simple301redirects .simple301redirects__managelinks .simple301redirects__wildcards input[type=checkbox]{margin-top:0;margin-right:10px}.simple301redirects .simple301redirects__managelinks.simple301redirects__managelinks--activated-btl .simple301redirects__managelinks__info__inner,.simple301redirects .simple301redirects__managelinks.simple301redirects__managelinks--activated-btl .simple301redirects__managelinks__item__inner{width:calc(100% - 210px)}@media screen and (max-width:991.88px){.simple301redirects .simple301redirects__managelinks.simple301redirects__managelinks--activated-btl .simple301redirects__managelinks__info__inner,.simple301redirects .simple301redirects__managelinks.simple301redirects__managelinks--activated-btl .simple301redirects__managelinks__item__inner{width:calc(100% - 190px)}}.simple301redirects .simple301redirects__managelinks.simple301redirects__managelinks--activated-btl .simple301redirects__wildcards{display:flex;align-items:center}.simple301redirects .simple301redirects__managelinks.simple301redirects__managelinks--activated-btl .simple301redirects__wildcards input[type=checkbox]{margin-top:0;margin-right:10px}.simple301redirects .simple301redirects__betterlinks{background:#fff;padding:30px;border:1px solid #ebebeb;box-shadow:0 5px 5px rgba(235,235,235,0.05);border-radius:0 5px 5px 0;display:flex;flex-direction:column;border-left:3px solid #003be2;margin-top:20px;position:relative}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__close__button{position:absolute;top:20px;right:20px;cursor:pointer;border:none;padding:0;outline:none;background:none;cursor:pointer}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__close__button img{width:13px}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__icon{margin-right:20px}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__content{margin-bottom:10px}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__content h3{font-size:20px;font-weight:500;color:#252525;margin-top:0;margin-bottom:10px}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__content h4{font-size:18px;font-weight:600;color:#6e7178;margin-top:15px;line-height:22px}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__content ul li{color:#707070;font-size:16px;font-weight:400;margin-top:0;margin-bottom:0;line-height:1.5}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__content ul li:before{content:"";height:7px;width:7px;min-width:7px;background:#b0b2ba;border-radius:10px;display:inline-flex;margin-right:10px}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__content p{color:#707070;font-size:16px;font-weight:400;margin-top:0;margin-bottom:0;line-height:1.5}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__content a{color:#003be2;text-decoration:none}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__content button{display:inline-flex;justify-content:center;align-items:center;padding:5px 25px;min-height:36px;background:#003be2;color:#fff;border-radius:4px;border:none;cursor:pointer;outline:none}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__content button:hover{background:#003add;box-shadow:0 10px 10px rgba(41,97,255,0.2)}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__control button{display:inline-flex;justify-content:center;align-items:center;padding:5px 25px;min-height:36px;background:#003be2;color:#fff;border-radius:4px;border:none;cursor:pointer;outline:none}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__control button:hover{background:#003add;box-shadow:0 10px 10px rgba(41,97,255,0.2)}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__control h3{margin-top:25px;font-size:20px;font-weight:500;color:#252525;margin-bottom:0}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__control h4{font-size:18px;font-weight:600;color:#6e7178}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__control p{color:#707070;font-size:16px;font-weight:400;margin-top:0;margin-bottom:0;line-height:1.5}.simple301redirects .simple301redirects__betterlinks .simple301redirects__betterlinks__control a{color:#003be2;text-decoration:none}.simple301redirects .simple301redirects__documentation{background:#fff;padding:20px;border:1px solid #ebebeb;box-shadow:0 5px 5px rgba(235,235,235,0.05);border-radius:5px;margin-top:20px}.simple301redirects .simple301redirects__documentation .simple301redirects__documentation__panel-header{display:flex;align-items:center;cursor:pointer}.simple301redirects .simple301redirects__documentation .simple301redirects__documentation__panel-header h4{margin-top:0;margin-bottom:0;margin-right:20px;display:flex;align-items:center;font-size:20px;font-weight:500;color:#252525;height:26px}@media screen and (max-width:1439.98px){.simple301redirects .simple301redirects__documentation .simple301redirects__documentation__panel-header h4{font-size:16px}}.simple301redirects .simple301redirects__documentation .simple301redirects__documentation__panel-header h4 .dashicons{font-size:26px;color:#707070;height:26px;margin-right:10px}.simple301redirects .simple301redirects__documentation .simple301redirects__documentation__panel-header h4 img{margin-right:10px}@media screen and (max-width:1439.98px){.simple301redirects .simple301redirects__documentation .simple301redirects__documentation__panel-header h4 img{margin-right:5px}}.simple301redirects .simple301redirects__documentation .simple301redirects__documentation__panel-header button{margin-left:auto;background:none;border:none;cursor:pointer;outline:none}.simple301redirects .simple301redirects__documentation .simple301redirects__documentation__panel-body .documentation{margin-top:30px;padding-left:15px}.simple301redirects .simple301redirects__documentation .simple301redirects__documentation__panel-body .documentation h4{font-size:18px;font-weight:500;color:#252525;margin-top:0;margin-bottom:10px}.simple301redirects .simple301redirects__documentation .simple301redirects__documentation__panel-body .documentation h5{font-size:17px;font-weight:600;color:#6e7178;margin-top:15px;margin-bottom:15px}.simple301redirects .simple301redirects__documentation .simple301redirects__documentation__panel-body .documentation ul li{color:#707070;font-size:16px;font-weight:400;margin-top:0;margin-bottom:0;line-height:1.5}.simple301redirects .simple301redirects__documentation .simple301redirects__documentation__panel-body .documentation ul li:before{content:"";height:7px;width:7px;min-width:7px;background:#b0b2ba;border-radius:10px;display:inline-flex;margin-right:10px}.simple301redirects .simple301redirects__documentation .simple301redirects__documentation__panel-body .documentation p{color:#707070;font-size:16px;font-weight:400;margin-top:0;margin-bottom:0;line-height:1.5}.simple301redirects .simple301redirects__documentation .simple301redirects__documentation__panel-body .documentation a{color:#003be2;text-decoration:none}.simple301redirects .simple301redirects__panel__divider{border-radius:5px;background:#fff;padding:20px;border:1px solid #ebebeb;box-shadow:0 5px 5px rgba(235,235,235,0.05)}.simple301redirects .simple301redirects__panel__divider .simple301redirects__import{margin-bottom:60px;position:relative}.simple301redirects .simple301redirects__panel__divider .simple301redirects__import:before{content:"";position:absolute;left:0;right:0;top:calc(100% + 29px);border-bottom:2px solid #ebebeb}.simple301redirects .simple301redirects__panel__divider .simple301redirects__export .simple301redirects__export__head h4,.simple301redirects .simple301redirects__panel__divider .simple301redirects__export .simple301redirects__import__head h4,.simple301redirects .simple301redirects__panel__divider .simple301redirects__import .simple301redirects__export__head h4,.simple301redirects .simple301redirects__panel__divider .simple301redirects__import .simple301redirects__import__head h4{font-size:20px;font-weight:500;color:#252525;margin-top:0;margin-bottom:10px;line-height:1.1}.simple301redirects .simple301redirects__panel__divider .simple301redirects__export .simple301redirects__export__head p,.simple301redirects .simple301redirects__panel__divider .simple301redirects__export .simple301redirects__import__head p,.simple301redirects .simple301redirects__panel__divider .simple301redirects__import .simple301redirects__export__head p,.simple301redirects .simple301redirects__panel__divider .simple301redirects__import .simple301redirects__import__head p{color:#707070;font-size:14px;margin-top:0}.simple301redirects .simple301redirects__panel__divider .simple301redirects__export .simple301redirects-button-group,.simple301redirects .simple301redirects__panel__divider .simple301redirects__import .simple301redirects-button-group{display:flex;flex-direction:column;align-items:flex-start}.simple301redirects .simple301redirects__panel__divider .simple301redirects__export .simple301redirects-button-group input[type=file],.simple301redirects .simple301redirects__panel__divider .simple301redirects__import .simple301redirects-button-group input[type=file]{cursor:pointer;outline:none}.simple301redirects .simple301redirects__panel__divider .simple301redirects__export .simple301redirects-button-group button,.simple301redirects .simple301redirects__panel__divider .simple301redirects__export .simple301redirects-button-group input[type=submit],.simple301redirects .simple301redirects__panel__divider .simple301redirects__import .simple301redirects-button-group button,.simple301redirects .simple301redirects__panel__divider .simple301redirects__import .simple301redirects-button-group input[type=submit]{background:#fff;border:1px solid #003be2;color:#003be2;min-height:36px;padding:8px 20px;line-height:1;font-size:15px;border-radius:4px;display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;outline:none;cursor:pointer}.simple301redirects .simple301redirects__panel__divider .simple301redirects__export .simple301redirects-button-group button:focus,.simple301redirects .simple301redirects__panel__divider .simple301redirects__export .simple301redirects-button-group button:hover,.simple301redirects .simple301redirects__panel__divider .simple301redirects__export .simple301redirects-button-group input[type=submit]:focus,.simple301redirects .simple301redirects__panel__divider .simple301redirects__export .simple301redirects-button-group input[type=submit]:hover,.simple301redirects .simple301redirects__panel__divider .simple301redirects__import .simple301redirects-button-group button:focus,.simple301redirects .simple301redirects__panel__divider .simple301redirects__import .simple301redirects-button-group button:hover,.simple301redirects .simple301redirects__panel__divider .simple301redirects__import .simple301redirects-button-group input[type=submit]:focus,.simple301redirects .simple301redirects__panel__divider .simple301redirects__import .simple301redirects-button-group input[type=submit]:hover{background:#003add;border-color:#003add;color:#fff;box-shadow:0 10px 10px rgba(41,97,255,0.15);outline:none}.simple301redirects .simple301redirects__panel__divider .simple301redirects__export .simple301redirects-button-group p,.simple301redirects .simple301redirects__panel__divider .simple301redirects__import .simple301redirects-button-group p{font-size:15px;color:#5a5a5a;margin-top:10px;margin-bottom:0}.simple301redirects .s3r-tooltip{position:relative;display:inline-block;padding-bottom:5px}.simple301redirects .s3r-tooltip .s3r-tooltiptext-wrapper{visibility:hidden;padding-bottom:10px;z-index:1;width:160px;position:absolute;bottom:100%;left:50%;transform:translateX(-50%)}.simple301redirects .s3r-tooltip .s3r-tooltiptext-wrapper .s3r-tooltiptext{background:#fff;font-size:14px;color:#707070;text-align:center;border-radius:6px;padding:10px;text-transform:capitalize;box-shadow:0 2px 10px rgba(37,37,37,0.15);display:flex;flex-direction:column;align-items:center}.simple301redirects .s3r-tooltip .s3r-tooltiptext-wrapper .s3r-tooltiptext button{margin-right:0;margin-top:5px;min-height:18px;font-size:11px;padding:5px 8px;outline:none;border:none;background:#003be2;color:#fff;border-radius:3px;display:flex;text-transform:capitalize;cursor:pointer}.simple301redirects .s3r-tooltip .s3r-tooltiptext-wrapper .s3r-tooltiptext:after{content:"";position:absolute;top:calc(100% - 10px);left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#fff transparent transparent transparent}.simple301redirects .s3r-tooltip:hover .s3r-tooltiptext-wrapper{visibility:visible}.simple301redirects .Simple301Redirects__content__wrapper{display:flex}@media screen and (max-width:1199.98px){.simple301redirects .Simple301Redirects__content__wrapper{flex-wrap:wrap}}.simple301redirects .Simple301Redirects__content__wrapper .Simple301Redirects__main__content{width:calc(100% - 380px)}@media screen and (max-width:1439.98px){.simple301redirects .Simple301Redirects__content__wrapper .Simple301Redirects__main__content{width:calc(100% - 270px)}}@media screen and (max-width:1199.98px){.simple301redirects .Simple301Redirects__content__wrapper .Simple301Redirects__main__content{width:100%}}.simple301redirects .Simple301Redirects__content__wrapper .Simple301Redirects__archive__sidebar{width:360px;margin-left:20px}@media screen and (max-width:1439.98px){.simple301redirects .Simple301Redirects__content__wrapper .Simple301Redirects__archive__sidebar{width:250px}}@media screen and (max-width:1199.98px){.simple301redirects .Simple301Redirects__content__wrapper .Simple301Redirects__archive__sidebar{width:100%;margin-left:0;margin-top:20px}}.simple301redirects .Simple301Redirects__loading-dock{background-color:white;display:inline-flex;justify-content:center;align-items:center;width:84px}.simple301redirects .Simple301Redirects__loading__button__submit{cursor:pointer;width:84px;height:36px;padding:2px 5px;font-size:13px;font-weight:500;color:#00aa5c;background:rgba(29,214,133,0.05);border-radius:40px;border:1px solid #00aa5c;transition:all 0.3s;text-transform:uppercase}.simple301redirects .Simple301Redirects__loading__button__submit:hover{background:#00aa5c;color:white}.simple301redirects .Simple301Redirects__loading__button__submit:active{transform:scale(0.95)}.simple301redirects .Simple301Redirects__loading__button__submit:focus{outline:none;background:#00aa5c;color:white}.simple301redirects .Simple301Redirects__loading__button__submit.Simple301Redirects__popout{animation:Simple301Redirects__circle-to-button 0.4s linear forwards}.simple301redirects .Simple301Redirects__loading__button__submit.Simple301Redirects__return{animation:Simple301Redirects__fade-to-original 0.3s linear}.simple301redirects .Simple301Redirects__loading__button__submit.Simple301Redirects__return:hover{background:#00aa5c;color:white}.simple301redirects .Simple301Redirects__loaded .Simple301Redirects__loading__button__submit{background-color:#00aa5c;animation:Simple301Redirects__button-to-circle 0.25s linear forwards;animation-delay:0s}.simple301redirects .Simple301Redirects__loaded #Simple301Redirects__load{animation:Simple301Redirects__loading-circle 1s linear forwards;animation-delay:0.4s}.simple301redirects #Simple301Redirects__load,.simple301redirects #Simple301Redirects__load-b{display:none;position:absolute;width:40px;height:40px;opacity:0}.simple301redirects #Simple301Redirects__load-b .Simple301Redirects__loading-inner,.simple301redirects #Simple301Redirects__load .Simple301Redirects__loading-inner{stroke-dasharray:900;stroke-width:10;stroke-miterlimit:10;stroke-linecap:round;stroke:#c3c3c3;fill:transparent}.simple301redirects #Simple301Redirects__load-b{opacity:0}.simple301redirects #Simple301Redirects__load-b .Simple301Redirects__loading-inner{stroke:#00aa5c}.simple301redirects svg{position:absolute;display:none}@keyframes Simple301Redirects__loading-circle{0%{opacity:1;stroke-dashoffset:0}50%{opacity:1;stroke-dashoffset:-200}to{opacity:1;stroke-dashoffset:-600}}@keyframes Simple301Redirects__button-to-circle{0%{width:84px;color:#00aa5c;border-color:#00aa5c;background-color:#00aa5c}50%{color:rgba(255,255,255,0)}90%{width:36px;color:rgba(255,255,255,0);border-color:#c3c3c3}to{width:36px;border-color:rgba(255,255,255,0);color:rgba(255,255,255,0);background-color:rgba(255,255,255,0)}}@keyframes Simple301Redirects__circle-to-button{0%{border-color:#00aa5c;background-color:#00aa5c;height:36px;width:36px}50%{height:36px;width:36px}to{height:36px;width:84px;border-color:#00aa5c;background-color:#00aa5c}}@keyframes Simple301Redirects__fade-to-original{0%{background-color:#00aa5c}to{background-color:white}}
assets/images/close.svg ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 492 492" style="enable-background:new 0 0 492 492;" xml:space="preserve">
5
+ <g>
6
+ <g>
7
+ <path d="M300.188,246L484.14,62.04c5.06-5.064,7.852-11.82,7.86-19.024c0-7.208-2.792-13.972-7.86-19.028L468.02,7.872
8
+ c-5.068-5.076-11.824-7.856-19.036-7.856c-7.2,0-13.956,2.78-19.024,7.856L246.008,191.82L62.048,7.872
9
+ c-5.06-5.076-11.82-7.856-19.028-7.856c-7.2,0-13.96,2.78-19.02,7.856L7.872,23.988c-10.496,10.496-10.496,27.568,0,38.052
10
+ L191.828,246L7.872,429.952c-5.064,5.072-7.852,11.828-7.852,19.032c0,7.204,2.788,13.96,7.852,19.028l16.124,16.116
11
+ c5.06,5.072,11.824,7.856,19.02,7.856c7.208,0,13.968-2.784,19.028-7.856l183.96-183.952l183.952,183.952
12
+ c5.068,5.072,11.824,7.856,19.024,7.856h0.008c7.204,0,13.96-2.784,19.028-7.856l16.12-16.116
13
+ c5.06-5.064,7.852-11.824,7.852-19.028c0-7.204-2.792-13.96-7.852-19.028L300.188,246z"/>
14
+ </g>
15
+ </g>
16
+ <g>
17
+ </g>
18
+ <g>
19
+ </g>
20
+ <g>
21
+ </g>
22
+ <g>
23
+ </g>
24
+ <g>
25
+ </g>
26
+ <g>
27
+ </g>
28
+ <g>
29
+ </g>
30
+ <g>
31
+ </g>
32
+ <g>
33
+ </g>
34
+ <g>
35
+ </g>
36
+ <g>
37
+ </g>
38
+ <g>
39
+ </g>
40
+ <g>
41
+ </g>
42
+ <g>
43
+ </g>
44
+ <g>
45
+ </g>
46
+ </svg>
assets/images/icon-arrow.svg ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 24.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#5F5F5F;}
7
+ </style>
8
+ <path class="st0" d="M49.4,23.6C49.4,23.6,49.4,23.6,49.4,23.6L39.2,13.5c-0.8-0.8-2-0.8-2.8,0c-0.8,0.8-0.8,2,0,2.8l6.9,6.8H2
9
+ c-1.1,0-2,0.9-2,2c0,1.1,0.9,2,2,2h41.4l-6.9,6.8c-0.8,0.8-0.8,2,0,2.8c0.8,0.8,2,0.8,2.8,0l10.2-10.2c0,0,0,0,0,0
10
+ C50.2,25.6,50.2,24.4,49.4,23.6L49.4,23.6z M49.4,23.6"/>
11
+ </svg>
assets/images/icon-copy.svg ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 24.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#868791;}
7
+ </style>
8
+ <path class="st0" d="M33.3,13.4c-0.1-1.4-0.8-2.8-1.8-3.7c-1.1-1-2.4-1.4-3.9-1.3c-1.4,0.1-2.8,0.8-3.7,1.8l-3,3.4
9
+ c-1,1.1-1.4,2.4-1.3,3.9c0.1,1,0.4,1.9,1,2.7l-1.1,1.3c-0.9-0.5-1.8-0.7-2.9-0.6c-1.4,0.1-2.6,0.7-3.7,1.8l0,0l-3,3.4
10
+ C9,27.2,8.5,28.6,8.6,30c0.1,1.4,0.8,2.8,1.8,3.7c1.1,1,2.4,1.4,3.9,1.3c1.3-0.1,2.6-0.8,3.7-1.8l0,0l3-3.4c0.9-1.1,1.4-2.5,1.3-3.9
11
+ c-0.1-1-0.4-1.9-1-2.7l1.1-1.3c0.9,0.5,1.8,0.7,2.9,0.6c1.3-0.1,2.6-0.8,3.7-1.8l0,0l3-3.4C33,16.2,33.4,14.9,33.3,13.4z M19.8,26.1
12
+ c0.1,0.7-0.2,1.5-0.7,2.1l-3,3.4c-0.5,0.6-1.2,0.9-2,1c-0.7,0.1-1.5-0.2-2.1-0.7s-0.9-1.2-1-2c-0.1-0.7,0.2-1.5,0.7-2.1l3-3.4
13
+ c0.5-0.6,1.2-0.9,2-1c0.4,0,0.7,0,1,0.1l-2.4,2.7c-0.5,0.5-0.4,1.3,0.1,1.8l0,0c0.5,0.5,1.3,0.4,1.8-0.1l2.3-2.7
14
+ C19.7,25.5,19.8,25.8,19.8,26.1z M30.1,15.6l-3,3.4c-0.5,0.6-1.2,0.9-2,1c-0.3,0-0.6,0-1-0.1l2.4-2.7c0.5-0.5,0.4-1.3-0.1-1.8l0,0
15
+ c-0.5-0.5-1.3-0.4-1.8,0.1l-2.3,2.7c-0.1-0.3-0.2-0.6-0.2-0.9c-0.1-0.7,0.2-1.5,0.7-2.1l3-3.4c0.5-0.6,1.2-0.9,2-1
16
+ c0.7-0.1,1.5,0.2,2.1,0.7s0.9,1.2,1,2C30.9,14.3,30.6,15.1,30.1,15.6z"/>
17
+ <g>
18
+ <path class="st0" d="M32.3,43.4H10c-4.1,0-7.4-3.3-7.4-7.4V8c0-4.2,3.3-7.5,7.4-7.5h22.3c4.1,0,7.4,3.3,7.4,7.4v28
19
+ C39.7,40.1,36.4,43.4,32.3,43.4z M10,3.7c-2.3,0-4.2,1.9-4.2,4.2v28c0,2.3,1.9,4.2,4.2,4.2h22.3c2.3,0,4.2-1.9,4.2-4.2v-28
20
+ c0-2.3-1.9-4.2-4.2-4.2L10,3.7z"/>
21
+ </g>
22
+ <g>
23
+ <path class="st0" d="M36.1,50.5H17.7c-0.9,0-1.6-0.7-1.6-1.6s0.7-1.6,1.6-1.6h18.4c4.5,0,8.1-3.7,8.1-8.1V20c0-0.9,0.7-1.6,1.6-1.6
24
+ s1.6,0.7,1.6,1.6v19.1C47.4,45.4,42.3,50.5,36.1,50.5z"/>
25
+ </g>
26
+ </svg>
assets/images/icon-delete.svg ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 24.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#888888;}
7
+ </style>
8
+ <g>
9
+ <path class="st0" d="M44,1.9H31.8C31.7,1,30.9,0,30,0H20c-0.9,0-1.7,1-1.7,1.9H6c-1,0-1.8,0.8-1.8,1.8V7c0,1,0.8,1.8,1.8,1.8H44
10
+ c1,0,1.8-0.8,1.8-1.8V3.6C45.8,2.7,45,1.9,44,1.9L44,1.9z M44,1.9"/>
11
+ <path class="st0" d="M9,14.4c-0.6,0-1.1,0.5-1.1,1.1v33.9C7.9,50,8.5,50,8.6,50h32.7c0.3,0,0.8,0,0.8-0.6V15.5
12
+ c0-0.6-0.5-1.1-1.1-1.1H9z M20.7,39.2c0,1.1-0.9,1.9-1.9,1.9c-1.1,0-1.9-0.9-1.9-1.9V23c0-1.1,0.9-1.9,1.9-1.9
13
+ c1.1,0,1.9,0.9,1.9,1.9V39.2z M33.1,39.2c0,1.1-0.9,1.9-1.9,1.9c-1.1,0-1.9-0.9-1.9-1.9V23c0-1.1,0.9-1.9,1.9-1.9
14
+ c1.1,0,1.9,0.9,1.9,1.9V39.2z M33.1,39.2"/>
15
+ </g>
16
+ </svg>
assets/images/icon-doc.svg ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 24.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#6A6A6A;}
7
+ </style>
8
+ <g>
9
+ <path class="st0" d="M44.3,12.2L32.6,0.5c-0.3-0.3-0.6-0.4-1-0.4H11.1c-2.4,0-4.4,2-4.4,4.4v41.1c0,2.4,2,4.4,4.4,4.4h29.2
10
+ c2.4,0,4.4-2,4.4-4.4V13.3C44.7,12.9,44.5,12.5,44.3,12.2L44.3,12.2z M33,5.1l6.7,6.7h-5.2c-0.8,0-1.5-0.7-1.5-1.5V5.1z M40.3,47.1
11
+ H11.1c-0.8,0-1.5-0.7-1.5-1.5V4.5c0-0.8,0.7-1.5,1.5-1.5h19v7.3c0,2.4,2,4.4,4.4,4.4h7.3v30.9C41.8,46.4,41.1,47.1,40.3,47.1
12
+ L40.3,47.1z M40.3,47.1"/>
13
+ <path class="st0" d="M34.5,20.8H16.9c-0.8,0-1.5,0.7-1.5,1.5c0,0.8,0.7,1.5,1.5,1.5h17.5c0.8,0,1.5-0.7,1.5-1.5
14
+ C35.9,21.4,35.3,20.8,34.5,20.8L34.5,20.8z M34.5,20.8"/>
15
+ <path class="st0" d="M34.5,26.6H16.9c-0.8,0-1.5,0.7-1.5,1.5c0,0.8,0.7,1.5,1.5,1.5h17.5c0.8,0,1.5-0.7,1.5-1.5
16
+ C35.9,27.3,35.3,26.6,34.5,26.6L34.5,26.6z M34.5,26.6"/>
17
+ <path class="st0" d="M34.5,32.5H16.9c-0.8,0-1.5,0.7-1.5,1.5c0,0.8,0.7,1.5,1.5,1.5h17.5c0.8,0,1.5-0.7,1.5-1.5
18
+ C35.9,33.1,35.3,32.5,34.5,32.5L34.5,32.5z M34.5,32.5"/>
19
+ <path class="st0" d="M28.6,38.3H16.9c-0.8,0-1.5,0.7-1.5,1.5s0.7,1.5,1.5,1.5h11.7c0.8,0,1.5-0.7,1.5-1.5S29.4,38.3,28.6,38.3
20
+ L28.6,38.3z M28.6,38.3"/>
21
+ </g>
22
+ </svg>
assets/images/icon-lock.svg ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 24.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill: #0086c6;}
7
+ </style>
8
+ <path class="st0" d="M42.7,18.8h-3.1v-4.2C39.6,6.5,33,0,25,0S10.4,6.5,10.4,14.6v4.2H7.3c-0.6,0-1,0.5-1,1v26
9
+ c0,2.3,1.9,4.2,4.2,4.2h29.2c2.3,0,4.2-1.9,4.2-4.2v-26C43.8,19.2,43.3,18.8,42.7,18.8z M27.5,34.6l0.7,5.9c0,0.3-0.1,0.6-0.3,0.8
10
+ c-0.2,0.2-0.5,0.3-0.8,0.3h-4.2c-0.3,0-0.6-0.1-0.8-0.3c-0.2-0.2-0.3-0.5-0.3-0.8l0.7-5.9c-1.1-0.8-1.7-2-1.7-3.4
11
+ c0-2.3,1.9-4.2,4.2-4.2s4.2,1.9,4.2,4.2C29.2,32.6,28.5,33.8,27.5,34.6z M33.3,18.8H16.7v-4.2c0-4.6,3.7-8.3,8.3-8.3
12
+ s8.3,3.7,8.3,8.3V18.8z"/>
13
+ </svg>
assets/images/logo.svg ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 24.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:url(#SVGID_1_);}
7
+ .st1{fill:url(#SVGID_2_);}
8
+ .st2{opacity:0.6;fill:url(#SVGID_3_);}
9
+ </style>
10
+ <g>
11
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="38.6687" y1="20.8264" x2="77.5425" y2="86.9119">
12
+ <stop offset="0" style="stop-color:#C64534"/>
13
+ <stop offset="1" style="stop-color:#EC4D37"/>
14
+ </linearGradient>
15
+ <path class="st0" d="M99.5,48.8c0-0.1,0-0.2,0-0.3c0-0.2,0-0.5,0-0.7c0-0.1,0-0.3,0-0.4c0-0.2,0-0.4,0-0.7c0-0.1,0-0.3,0-0.4
16
+ c0-0.2,0-0.4-0.1-0.7c0-0.1,0-0.3,0-0.4c0-0.2,0-0.5-0.1-0.7c0-0.1,0-0.2,0-0.3c-0.1-0.7-0.2-1.4-0.3-2.1c0-0.1,0-0.2,0-0.3
17
+ c0-0.2-0.1-0.5-0.1-0.7c0-0.1,0-0.2-0.1-0.3c0-0.2-0.1-0.5-0.1-0.7c0-0.1,0-0.2-0.1-0.4c0-0.2-0.1-0.5-0.1-0.7c0-0.1,0-0.2-0.1-0.3
18
+ c-0.1-0.3-0.1-0.5-0.2-0.8c0-0.1,0-0.2-0.1-0.2c-0.2-0.7-0.4-1.4-0.6-2c0-0.1,0-0.1-0.1-0.2c-0.1-0.3-0.2-0.5-0.2-0.8
19
+ c0-0.1-0.1-0.2-0.1-0.3c-0.1-0.2-0.2-0.5-0.2-0.7c0-0.1-0.1-0.2-0.1-0.3c-0.1-0.2-0.2-0.5-0.3-0.7c0-0.1-0.1-0.1-0.1-0.2
20
+ c-0.1-0.3-0.2-0.6-0.3-0.9c0,0,0-0.1,0-0.1c-0.3-0.7-0.5-1.3-0.8-2c0,0,0,0,0,0c-0.1-0.3-0.3-0.6-0.4-0.9c0,0,0-0.1-0.1-0.1
21
+ c-0.1-0.3-0.3-0.5-0.4-0.8c0,0,0-0.1-0.1-0.1c-0.1-0.3-0.3-0.6-0.4-0.8c0,0,0-0.1,0-0.1c-3.6-6.1-7-10.6-11.7-14.7
22
+ c-4-3.5-18.5-9.3-16.3-8c-5.1-1.8-10.7-2.8-16.4-2.8c-10.4,0-20,3.2-28,8.6c6-2.8,12.7-4.3,19.7-4.3c5.8,0,11.3,1,16.4,3l-10.7,5.1
23
+ c20.1,0,36.9,14.4,40.6,33.4c0.5,3.3,0.6,6.7,0.4,10.4C87,66,83.7,74,78.7,80.6c-9.2,10.4-22.6,17-37.6,17c-3.3,0-6.5-0.3-9.5-0.9
24
+ c3.1,1.2,6.4,2.1,9.9,2.7c0,0,0,0-0.1,0c2.6,0.4,5.3,0.6,8.1,0.6c11.3,0,21.6-3.7,30-10c0,0,0,0,0,0c0.3-0.2,0.6-0.5,0.9-0.7
25
+ c0,0,0,0,0,0c1.3-1,2.5-2,3.6-3.1c0,0,0,0,0,0c0.3-0.3,0.5-0.5,0.8-0.8c0,0,0.1-0.1,0.1-0.1c0.2-0.2,0.5-0.5,0.7-0.7
26
+ c0,0,0.1-0.1,0.1-0.1c0.2-0.2,0.5-0.5,0.7-0.7c0,0,0.1-0.1,0.1-0.1c0.8-0.9,1.5-1.8,2.3-2.7c0-0.1,0.1-0.1,0.1-0.2
27
+ c0.2-0.2,0.4-0.5,0.5-0.7c0.1-0.1,0.1-0.2,0.2-0.3c0.2-0.2,0.3-0.4,0.5-0.7c0.1-0.1,0.1-0.2,0.2-0.3c0.2-0.2,0.3-0.5,0.5-0.7
28
+ c0.1-0.1,0.1-0.2,0.2-0.3c0.2-0.3,0.4-0.6,0.5-0.8c0,0,0.1-0.1,0.1-0.1c0.2-0.3,0.4-0.7,0.6-1c0-0.1,0.1-0.1,0.1-0.2
29
+ c0.2-0.3,0.3-0.5,0.5-0.8c0.1-0.1,0.1-0.2,0.2-0.3c0.1-0.2,0.2-0.4,0.4-0.6c0.1-0.1,0.1-0.3,0.2-0.4c0.1-0.2,0.2-0.4,0.3-0.6
30
+ c0.1-0.1,0.1-0.3,0.2-0.4c0.1-0.2,0.2-0.4,0.3-0.6c0.1-0.1,0.1-0.3,0.2-0.4c0.1-0.2,0.2-0.5,0.3-0.7c0-0.1,0.1-0.2,0.1-0.3
31
+ c0.2-0.3,0.3-0.7,0.4-1c0.1-0.1,0.1-0.3,0.2-0.4c0.1-0.2,0.2-0.4,0.3-0.7c0.1-0.2,0.1-0.3,0.2-0.5c0.1-0.2,0.2-0.4,0.2-0.6
32
+ c0.1-0.2,0.1-0.3,0.2-0.5c0.1-0.2,0.1-0.4,0.2-0.6c0.1-0.2,0.1-0.3,0.2-0.5c0.1-0.2,0.1-0.4,0.2-0.6c0.1-0.2,0.1-0.3,0.2-0.5
33
+ c0.1-0.2,0.1-0.4,0.2-0.6c0.1-0.2,0.1-0.3,0.1-0.5c0.1-0.3,0.2-0.7,0.3-1c0-0.2,0.1-0.3,0.1-0.5c0-0.2,0.1-0.3,0.1-0.5c0,0,0,0,0,0
34
+ c0.9-3.7,1.4-7.6,1.4-11.6C99.6,49.5,99.6,49.1,99.5,48.8z"/>
35
+ <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="61.9797" y1="-5.129675e-02" x2="14.1793" y2="83.0715">
36
+ <stop offset="0" style="stop-color:#FF906E"/>
37
+ <stop offset="8.312827e-02" style="stop-color:#FB8464"/>
38
+ <stop offset="0.2823" style="stop-color:#F56C50"/>
39
+ <stop offset="0.4932" style="stop-color:#F05A42"/>
40
+ <stop offset="0.7218" style="stop-color:#ED503A"/>
41
+ <stop offset="1" style="stop-color:#EC4D37"/>
42
+ </linearGradient>
43
+ <path class="st1" d="M60.1,53.3c2.6,1.2,9.3,4.8,9.3,4.8l-4.2-27.5L40.6,44.9c0,0,7.5,3.4,9.9,4.6C41.8,59,33,63.4,22.5,68
44
+ c-2.5-12.9-3.4-21.2-3.3-34.5c3.7,2.2,5.8,3.2,9.6,5.4C41.3,11.3,63.6,6,82.1,11.9c-8.7-7.4-20-11.9-32.3-11.9
45
+ C22.4-0.1,0.1,22.2,0.1,49.6c0,15.4,7,29.2,18.1,38.3C49.1,85.7,60.1,53.3,60.1,53.3z"/>
46
+ <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="56.7793" y1="-12.3443" x2="10.5197" y2="114.4707">
47
+ <stop offset="0" style="stop-color:#FFFFFF"/>
48
+ <stop offset="5.025345e-02" style="stop-color:#FFEDE2;stop-opacity:0.9486"/>
49
+ <stop offset="0.1506" style="stop-color:#FFCEAD;stop-opacity:0.846"/>
50
+ <stop offset="0.2551" style="stop-color:#FFB27F;stop-opacity:0.7391"/>
51
+ <stop offset="0.3619" style="stop-color:#FF9B58;stop-opacity:0.6299"/>
52
+ <stop offset="0.4713" style="stop-color:#FF8838;stop-opacity:0.518"/>
53
+ <stop offset="0.5843" style="stop-color:#FF791F;stop-opacity:0.4025"/>
54
+ <stop offset="0.7023" style="stop-color:#FF6E0E;stop-opacity:0.2818"/>
55
+ <stop offset="0.8286" style="stop-color:#FF6803;stop-opacity:0.1526"/>
56
+ <stop offset="0.9779" style="stop-color:#FF6600;stop-opacity:0"/>
57
+ </linearGradient>
58
+ <path class="st2" d="M18.6,86.6C7.6,77.4,1.4,63.9,1.4,49.6c0-6.5,1.3-12.9,3.8-18.9c2.4-5.8,5.9-10.9,10.4-15.4S25.2,7.4,31,5
59
+ c6-2.5,12.3-3.8,18.9-3.8c5.9,0,11.6,1,17.1,3.1c3.4,1.3,6.6,2.9,9.6,4.9c-2.6-0.5-5.2-0.7-7.8-0.7C51.4,8.5,37,18.6,28.2,37.1
60
+ c-1.4-0.8-2.6-1.5-3.9-2.2c-1.4-0.7-2.8-1.5-4.5-2.5l-1.9-1.1l0,2.2c-0.1,14.1,1,22.5,3.4,34.8l0.3,1.5l1.4-0.6
61
+ c10.2-4.4,19.4-8.9,28.4-18.7l1.1-1.2L51,48.4c-1.6-0.8-5.3-2.5-7.7-3.6l21-12.2l3.6,23.2c-2.2-1.2-5.5-2.9-7.2-3.7l-1.3-0.6
62
+ L59,52.9c0,0.1-2.8,8-9.2,16.2c-3.8,4.7-8,8.6-12.6,11.5C31.5,84,25.2,86.1,18.6,86.6z"/>
63
+ </g>
64
+ </svg>
assets/images/pointing-down.svg ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-49 141 512 512" style="enable-background:new -49 141 512 512;" xml:space="preserve">
2
+ <radialGradient id="SVGID_1_" cx="161.1172" cy="279.728" r="424.4726" gradientTransform="matrix(0.0827 0.9966 -0.4125 0.0342 263.1719 109.5841)" gradientUnits="userSpaceOnUse">
3
+ <stop offset="0.0066" style="stop-color:#FECE4D"/>
4
+ <stop offset="0.3021" style="stop-color:#FECC4A"/>
5
+ <stop offset="0.508" style="stop-color:#FEC741"/>
6
+ <stop offset="0.6866" style="stop-color:#FEBF32"/>
7
+ <stop offset="0.8486" style="stop-color:#FFB31C"/>
8
+ <stop offset="1" style="stop-color:#FFA300"/>
9
+ </radialGradient>
10
+ <path style="fill:url(#SVGID_1_);" d="M374.013,436.655c-14.388-18.064-25.357-37.879-31.501-60.185 c-5.949-21.596-11.285-43.363-17.435-64.9c-7.629-26.714-22.375-47.881-48.081-60.562c-7.336-3.619-14.513-8.344-20.269-14.066 c-3.12-3.102-4.7-9.547-4.189-14.177l5.644-35.833c0,0,6.046-31.981,1.789-42.623c-80.879-9.578-187.298,4.257-201.133,8.514 c-13.835,4.257,4.312,40.57,4.312,40.57s0.002,0.004,0.002,0.004c1.169,8.529,2.741,17.021,4.561,25.429 c4.07,18.805,6.062,37.01-3.583,55.207c-4.257,8.03-5.748,17.655-7.769,26.718c-6.306,28.287-7.287,57.015-3.791,85.616 c3.474,28.42,8.929,43.551,40.4,51.584c9.397,2.399,18.474,6.767,27.075,11.392c11.243,6.045,23.147,8.514,35.059,5.406 c8.546-2.229,14.378-0.251,20.89,4.512c13.429,9.824,26.483,9.474,40.081-0.22c1.847-1.317,3.934-2.298,7.825-4.536 c0.536,5.52,1.105,8.865,1.149,12.216c0.479,37.014,0.5,74.04,1.465,111.041c0.44,16.88,1.744,33.867,4.422,50.522 c2.343,14.573,14.688,24.173,28.086,24.694c13.567,0.527,25.717-8.121,29.713-22.67c1.883-6.859,1.869-14.377,1.861-21.596 c-0.064-60.196-0.341-120.393-0.48-180.589c-0.006-2.513,0.717-5.028,1.1-7.542c0.843-0.169,1.687-0.337,2.53-0.506 c1.178,3.193,2.69,6.305,3.48,9.591c6.615,27.531,32.712,48.482,58.236,47.025c11.41-0.651,19.795-5.532,24.984-15.651 C385.547,451.089,379.626,443.702,374.013,436.655z"/>
11
+ </svg>
assets/js/simple-301-redirects.core.min.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ /*! For license information please see simple-301-redirects.core.min.js.LICENSE.txt */
2
+ (()=>{var e={669:(e,t,n)=>{e.exports=n(609)},592:(e,t,n)=>{"use strict";var r=n(867),a=n(26),l=n(372),o=n(327),i=n(97),u=n(109),s=n(985),c=n(61);e.exports=function(e){return new Promise((function(t,n){var f=e.data,d=e.headers;r.isFormData(f)&&delete d["Content-Type"];var p=new XMLHttpRequest;if(e.auth){var m=e.auth.username||"",h=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";d.Authorization="Basic "+btoa(m+":"+h)}var y=i(e.baseURL,e.url);if(p.open(e.method.toUpperCase(),o(y,e.params,e.paramsSerializer),!0),p.timeout=e.timeout,p.onreadystatechange=function(){if(p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf("file:"))){var r="getAllResponseHeaders"in p?u(p.getAllResponseHeaders()):null,l={data:e.responseType&&"text"!==e.responseType?p.response:p.responseText,status:p.status,statusText:p.statusText,headers:r,config:e,request:p};a(t,n,l),p=null}},p.onabort=function(){p&&(n(c("Request aborted",e,"ECONNABORTED",p)),p=null)},p.onerror=function(){n(c("Network Error",e,null,p)),p=null},p.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(c(t,e,"ECONNABORTED",p)),p=null},r.isStandardBrowserEnv()){var v=(e.withCredentials||s(y))&&e.xsrfCookieName?l.read(e.xsrfCookieName):void 0;v&&(d[e.xsrfHeaderName]=v)}if("setRequestHeader"in p&&r.forEach(d,(function(e,t){void 0===f&&"content-type"===t.toLowerCase()?delete d[t]:p.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(p.withCredentials=!!e.withCredentials),e.responseType)try{p.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&p.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&p.upload&&p.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){p&&(p.abort(),n(e),p=null)})),f||(f=null),p.send(f)}))}},609:(e,t,n)=>{"use strict";var r=n(867),a=n(849),l=n(321),o=n(185);function i(e){var t=new l(e),n=a(l.prototype.request,t);return r.extend(n,l.prototype,t),r.extend(n,t),n}var u=i(n(655));u.Axios=l,u.create=function(e){return i(o(u.defaults,e))},u.Cancel=n(263),u.CancelToken=n(972),u.isCancel=n(502),u.all=function(e){return Promise.all(e)},u.spread=n(713),u.isAxiosError=n(268),e.exports=u,e.exports.default=u},263:e=>{"use strict";function t(e){this.message=e}t.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},t.prototype.__CANCEL__=!0,e.exports=t},972:(e,t,n)=>{"use strict";var r=n(263);function a(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;e((function(e){n.reason||(n.reason=new r(e),t(n.reason))}))}a.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},a.source=function(){var e;return{token:new a((function(t){e=t})),cancel:e}},e.exports=a},502:e=>{"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},321:(e,t,n)=>{"use strict";var r=n(867),a=n(327),l=n(782),o=n(572),i=n(185);function u(e){this.defaults=e,this.interceptors={request:new l,response:new l}}u.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=i(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=[o,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach((function(e){t.unshift(e.fulfilled,e.rejected)})),this.interceptors.response.forEach((function(e){t.push(e.fulfilled,e.rejected)}));t.length;)n=n.then(t.shift(),t.shift());return n},u.prototype.getUri=function(e){return e=i(this.defaults,e),a(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(e){u.prototype[e]=function(t,n){return this.request(i(n||{},{method:e,url:t,data:(n||{}).data}))}})),r.forEach(["post","put","patch"],(function(e){u.prototype[e]=function(t,n,r){return this.request(i(r||{},{method:e,url:t,data:n}))}})),e.exports=u},782:(e,t,n)=>{"use strict";var r=n(867);function a(){this.handlers=[]}a.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},a.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},a.prototype.forEach=function(e){r.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=a},97:(e,t,n)=>{"use strict";var r=n(793),a=n(303);e.exports=function(e,t){return e&&!r(t)?a(e,t):t}},61:(e,t,n)=>{"use strict";var r=n(481);e.exports=function(e,t,n,a,l){var o=new Error(e);return r(o,t,n,a,l)}},572:(e,t,n)=>{"use strict";var r=n(867),a=n(527),l=n(502),o=n(655);function i(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return i(e),e.headers=e.headers||{},e.data=a(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||o.adapter)(e).then((function(t){return i(e),t.data=a(t.data,t.headers,e.transformResponse),t}),(function(t){return l(t)||(i(e),t&&t.response&&(t.response.data=a(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},481:e=>{"use strict";e.exports=function(e,t,n,r,a){return e.config=t,n&&(e.code=n),e.request=r,e.response=a,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},185:(e,t,n)=>{"use strict";var r=n(867);e.exports=function(e,t){t=t||{};var n={},a=["url","method","data"],l=["headers","auth","proxy","params"],o=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],i=["validateStatus"];function u(e,t){return r.isPlainObject(e)&&r.isPlainObject(t)?r.merge(e,t):r.isPlainObject(t)?r.merge({},t):r.isArray(t)?t.slice():t}function s(a){r.isUndefined(t[a])?r.isUndefined(e[a])||(n[a]=u(void 0,e[a])):n[a]=u(e[a],t[a])}r.forEach(a,(function(e){r.isUndefined(t[e])||(n[e]=u(void 0,t[e]))})),r.forEach(l,s),r.forEach(o,(function(a){r.isUndefined(t[a])?r.isUndefined(e[a])||(n[a]=u(void 0,e[a])):n[a]=u(void 0,t[a])})),r.forEach(i,(function(r){r in t?n[r]=u(e[r],t[r]):r in e&&(n[r]=u(void 0,e[r]))}));var c=a.concat(l).concat(o).concat(i),f=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===c.indexOf(e)}));return r.forEach(f,s),n}},26:(e,t,n)=>{"use strict";var r=n(61);e.exports=function(e,t,n){var a=n.config.validateStatus;n.status&&a&&!a(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},527:(e,t,n)=>{"use strict";var r=n(867);e.exports=function(e,t,n){return r.forEach(n,(function(n){e=n(e,t)})),e}},655:(e,t,n)=>{"use strict";var r=n(867),a=n(16),l={"Content-Type":"application/x-www-form-urlencoded"};function o(e,t){!r.isUndefined(e)&&r.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var i,u={adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(i=n(592)),i),transformRequest:[function(e,t){return a(t,"Accept"),a(t,"Content-Type"),r.isFormData(e)||r.isArrayBuffer(e)||r.isBuffer(e)||r.isStream(e)||r.isFile(e)||r.isBlob(e)?e:r.isArrayBufferView(e)?e.buffer:r.isURLSearchParams(e)?(o(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):r.isObject(e)?(o(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(e){u.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){u.headers[e]=r.merge(l)})),e.exports=u},849:e=>{"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}}},327:(e,t,n)=>{"use strict";var r=n(867);function a(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var l;if(n)l=n(t);else if(r.isURLSearchParams(t))l=t.toString();else{var o=[];r.forEach(t,(function(e,t){null!=e&&(r.isArray(e)?t+="[]":e=[e],r.forEach(e,(function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),o.push(a(t)+"="+a(e))})))})),l=o.join("&")}if(l){var i=e.indexOf("#");-1!==i&&(e=e.slice(0,i)),e+=(-1===e.indexOf("?")?"?":"&")+l}return e}},303:e=>{"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},372:(e,t,n)=>{"use strict";var r=n(867);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,a,l,o){var i=[];i.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),r.isString(a)&&i.push("path="+a),r.isString(l)&&i.push("domain="+l),!0===o&&i.push("secure"),document.cookie=i.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},793:e=>{"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},268:e=>{"use strict";e.exports=function(e){return"object"==typeof e&&!0===e.isAxiosError}},985:(e,t,n)=>{"use strict";var r=n(867);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function a(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=a(window.location.href),function(t){var n=r.isString(t)?a(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},16:(e,t,n)=>{"use strict";var r=n(867);e.exports=function(e,t){r.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))}},109:(e,t,n)=>{"use strict";var r=n(867),a=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,l,o={};return e?(r.forEach(e.split("\n"),(function(e){if(l=e.indexOf(":"),t=r.trim(e.substr(0,l)).toLowerCase(),n=r.trim(e.substr(l+1)),t){if(o[t]&&a.indexOf(t)>=0)return;o[t]="set-cookie"===t?(o[t]?o[t]:[]).concat([n]):o[t]?o[t]+", "+n:n}})),o):o}},713:e=>{"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},867:(e,t,n)=>{"use strict";var r=n(849),a=Object.prototype.toString;function l(e){return"[object Array]"===a.call(e)}function o(e){return void 0===e}function i(e){return null!==e&&"object"==typeof e}function u(e){if("[object Object]"!==a.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function s(e){return"[object Function]"===a.call(e)}function c(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),l(e))for(var n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.call(null,e[a],a,e)}e.exports={isArray:l,isArrayBuffer:function(e){return"[object ArrayBuffer]"===a.call(e)},isBuffer:function(e){return null!==e&&!o(e)&&null!==e.constructor&&!o(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:i,isPlainObject:u,isUndefined:o,isDate:function(e){return"[object Date]"===a.call(e)},isFile:function(e){return"[object File]"===a.call(e)},isBlob:function(e){return"[object Blob]"===a.call(e)},isFunction:s,isStream:function(e){return i(e)&&s(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&"undefined"!=typeof window&&"undefined"!=typeof document},forEach:c,merge:function e(){var t={};function n(n,r){u(t[r])&&u(n)?t[r]=e(t[r],n):u(n)?t[r]=e({},n):l(n)?t[r]=n.slice():t[r]=n}for(var r=0,a=arguments.length;r<a;r++)c(arguments[r],n);return t},extend:function(e,t,n){return c(t,(function(t,a){e[a]=n&&"function"==typeof t?r(t,n):t})),e},trim:function(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}}},588:e=>{e.exports=function(e,t){var n,r,a=0;function l(){var l,o,i=n,u=arguments.length;e:for(;i;){if(i.args.length===arguments.length){for(o=0;o<u;o++)if(i.args[o]!==arguments[o]){i=i.next;continue e}return i!==n&&(i===r&&(r=i.prev),i.prev.next=i.next,i.next&&(i.next.prev=i.prev),i.next=n,i.prev=null,n.prev=i,n=i),i.val}i=i.next}for(l=new Array(u),o=0;o<u;o++)l[o]=arguments[o];return i={args:l,val:e.apply(null,l)},n?(n.prev=i,i.next=n):r=i,a===t.maxSize?(r=r.prev).next=null:a++,n=i,i.val}return t=t||{},l.clear=function(){n=null,r=null,a=0},l}},418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,l){for(var o,i,u=a(e),s=1;s<arguments.length;s++){for(var c in o=Object(arguments[s]))n.call(o,c)&&(u[c]=o[c]);if(t){i=t(o);for(var f=0;f<i.length;f++)r.call(o,i[f])&&(u[i[f]]=o[i[f]])}}return u}},703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function l(){}l.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,l,o){if(o!==r){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:l,resetWarningCache:a};return n.PropTypes=n,n}},697:(e,t,n)=>{e.exports=n(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},448:(e,t,n)=>{"use strict";var r=n(294),a=n(418),l=n(840);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(o(227));var i=new Set,u={};function s(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(u[e]=t,e=0;e<t.length;e++)i.add(t[e])}var f=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),d=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p=Object.prototype.hasOwnProperty,m={},h={};function y(e,t,n,r,a,l,o){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=l,this.removeEmptyString=o}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){v[e]=new y(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];v[t]=new y(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){v[e]=new y(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){v[e]=new y(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){v[e]=new y(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){v[e]=new y(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){v[e]=new y(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){v[e]=new y(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){v[e]=new y(e,5,!1,e.toLowerCase(),null,!1,!1)}));var g=/[\-:]([a-z])/g;function b(e){return e[1].toUpperCase()}function w(e,t,n,r){var a=v.hasOwnProperty(t)?v[t]:null;(null!==a?0===a.type:!r&&2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1]))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!p.call(h,e)||!p.call(m,e)&&(d.test(e)?h[e]=!0:(m[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(g,b);v[t]=new y(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(g,b);v[t]=new y(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(g,b);v[t]=new y(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){v[e]=new y(e,1,!1,e.toLowerCase(),null,!1,!1)})),v.xlinkHref=new y("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){v[e]=new y(e,1,!1,e.toLowerCase(),null,!0,!0)}));var k=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,E=60103,_=60106,S=60107,x=60108,C=60114,N=60109,P=60110,O=60112,T=60113,L=60120,R=60115,z=60116,A=60121,j=60128,F=60129,I=60130,M=60131;if("function"==typeof Symbol&&Symbol.for){var D=Symbol.for;E=D("react.element"),_=D("react.portal"),S=D("react.fragment"),x=D("react.strict_mode"),C=D("react.profiler"),N=D("react.provider"),P=D("react.context"),O=D("react.forward_ref"),T=D("react.suspense"),L=D("react.suspense_list"),R=D("react.memo"),z=D("react.lazy"),A=D("react.block"),D("react.scope"),j=D("react.opaque.id"),F=D("react.debug_trace_mode"),I=D("react.offscreen"),M=D("react.legacy_hidden")}var U,B="function"==typeof Symbol&&Symbol.iterator;function V(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=B&&e[B]||e["@@iterator"])?e:null}function $(e){if(void 0===U)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);U=t&&t[1]||""}return"\n"+U+e}var H=!1;function q(e,t){if(!e||H)return"";H=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(e){var r=e}Reflect.construct(e,[],t)}else{try{t.call()}catch(e){r=e}e.call(t.prototype)}else{try{throw Error()}catch(e){r=e}e()}}catch(e){if(e&&r&&"string"==typeof e.stack){for(var a=e.stack.split("\n"),l=r.stack.split("\n"),o=a.length-1,i=l.length-1;1<=o&&0<=i&&a[o]!==l[i];)i--;for(;1<=o&&0<=i;o--,i--)if(a[o]!==l[i]){if(1!==o||1!==i)do{if(o--,0>--i||a[o]!==l[i])return"\n"+a[o].replace(" at new "," at ")}while(1<=o&&0<=i);break}}}finally{H=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?$(e):""}function W(e){switch(e.tag){case 5:return $(e.type);case 16:return $("Lazy");case 13:return $("Suspense");case 19:return $("SuspenseList");case 0:case 2:case 15:return q(e.type,!1);case 11:return q(e.type.render,!1);case 22:return q(e.type._render,!1);case 1:return q(e.type,!0);default:return""}}function Q(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case S:return"Fragment";case _:return"Portal";case C:return"Profiler";case x:return"StrictMode";case T:return"Suspense";case L:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case P:return(e.displayName||"Context")+".Consumer";case N:return(e._context.displayName||"Context")+".Provider";case O:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case R:return Q(e.type);case A:return Q(e._render);case z:t=e._payload,e=e._init;try{return Q(e(t))}catch(e){}}return null}function K(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Y(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function X(e){e._valueTracker||(e._valueTracker=function(e){var t=Y(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,l=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,l.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function G(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Y(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function Z(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=K(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=K(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,K(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ae(e,t,n){"number"===t&&Z(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function le(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function oe(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+K(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function ie(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(o(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ue(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(o(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(o(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:K(n)}}function se(e,t){var n=K(t.value),r=K(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var fe="http://www.w3.org/1999/xhtml";function de(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function pe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?de(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var me,he,ye=(he=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((me=me||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=me.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return he(e,t)}))}:he);function ve(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var ge={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},be=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||ge.hasOwnProperty(e)&&ge[e]?(""+t).trim():t+"px"}function ke(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(ge).forEach((function(e){be.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ge[t]=ge[e]}))}));var Ee=a({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function _e(e,t){if(t){if(Ee[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(o(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(o(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(o(62))}}function Se(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function xe(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ce=null,Ne=null,Pe=null;function Oe(e){if(e=Jr(e)){if("function"!=typeof Ce)throw Error(o(280));var t=e.stateNode;t&&(t=ta(t),Ce(e.stateNode,e.type,t))}}function Te(e){Ne?Pe?Pe.push(e):Pe=[e]:Ne=e}function Le(){if(Ne){var e=Ne,t=Pe;if(Pe=Ne=null,Oe(e),t)for(e=0;e<t.length;e++)Oe(t[e])}}function Re(e,t){return e(t)}function ze(e,t,n,r,a){return e(t,n,r,a)}function Ae(){}var je=Re,Fe=!1,Ie=!1;function Me(){null===Ne&&null===Pe||(Ae(),Le())}function De(e,t){var n=e.stateNode;if(null===n)return null;var r=ta(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(o(231,t,typeof n));return n}var Ue=!1;if(f)try{var Be={};Object.defineProperty(Be,"passive",{get:function(){Ue=!0}}),window.addEventListener("test",Be,Be),window.removeEventListener("test",Be,Be)}catch(he){Ue=!1}function Ve(e,t,n,r,a,l,o,i,u){var s=Array.prototype.slice.call(arguments,3);try{t.apply(n,s)}catch(e){this.onError(e)}}var $e=!1,He=null,qe=!1,We=null,Qe={onError:function(e){$e=!0,He=e}};function Ke(e,t,n,r,a,l,o,i,u){$e=!1,He=null,Ve.apply(Qe,arguments)}function Ye(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Xe(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&null!==(e=e.alternate)&&(t=e.memoizedState),null!==t)return t.dehydrated}return null}function Ge(e){if(Ye(e)!==e)throw Error(o(188))}function Ze(e){if(!(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ye(e)))throw Error(o(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var l=a.alternate;if(null===l){if(null!==(r=a.return)){n=r;continue}break}if(a.child===l.child){for(l=a.child;l;){if(l===n)return Ge(a),e;if(l===r)return Ge(a),t;l=l.sibling}throw Error(o(188))}if(n.return!==r.return)n=a,r=l;else{for(var i=!1,u=a.child;u;){if(u===n){i=!0,n=a,r=l;break}if(u===r){i=!0,r=a,n=l;break}u=u.sibling}if(!i){for(u=l.child;u;){if(u===n){i=!0,n=l,r=a;break}if(u===r){i=!0,r=l,n=a;break}u=u.sibling}if(!i)throw Error(o(189))}}if(n.alternate!==r)throw Error(o(190))}if(3!==n.tag)throw Error(o(188));return n.stateNode.current===n?e:t}(e)))return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,at=!1,lt=[],ot=null,it=null,ut=null,st=new Map,ct=new Map,ft=[],dt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function pt(e,t,n,r,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,targetContainers:[r]}}function mt(e,t){switch(e){case"focusin":case"focusout":ot=null;break;case"dragenter":case"dragleave":it=null;break;case"mouseover":case"mouseout":ut=null;break;case"pointerover":case"pointerout":st.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ct.delete(t.pointerId)}}function ht(e,t,n,r,a,l){return null===e||e.nativeEvent!==l?(e=pt(t,n,r,a,l),null!==t&&null!==(t=Jr(t))&&tt(t),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function yt(e){var t=Zr(e.target);if(null!==t){var n=Ye(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Xe(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){l.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function vt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Zt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=Jr(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function gt(e,t,n){vt(e)&&n.delete(t)}function bt(){for(at=!1;0<lt.length;){var e=lt[0];if(null!==e.blockedOn){null!==(e=Jr(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Zt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&lt.shift()}null!==ot&&vt(ot)&&(ot=null),null!==it&&vt(it)&&(it=null),null!==ut&&vt(ut)&&(ut=null),st.forEach(gt),ct.forEach(gt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,l.unstable_scheduleCallback(l.unstable_NormalPriority,bt)))}function kt(e){function t(t){return wt(t,e)}if(0<lt.length){wt(lt[0],e);for(var n=1;n<lt.length;n++){var r=lt[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==ot&&wt(ot,e),null!==it&&wt(it,e),null!==ut&&wt(ut,e),st.forEach(t),ct.forEach(t),n=0;n<ft.length;n++)(r=ft[n]).blockedOn===e&&(r.blockedOn=null);for(;0<ft.length&&null===(n=ft[0]).blockedOn;)yt(n),null===n.blockedOn&&ft.shift()}function Et(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var _t={animationend:Et("Animation","AnimationEnd"),animationiteration:Et("Animation","AnimationIteration"),animationstart:Et("Animation","AnimationStart"),transitionend:Et("Transition","TransitionEnd")},St={},xt={};function Ct(e){if(St[e])return St[e];if(!_t[e])return e;var t,n=_t[e];for(t in n)if(n.hasOwnProperty(t)&&t in xt)return St[e]=n[t];return e}f&&(xt=document.createElement("div").style,"AnimationEvent"in window||(delete _t.animationend.animation,delete _t.animationiteration.animation,delete _t.animationstart.animation),"TransitionEvent"in window||delete _t.transitionend.transition);var Nt=Ct("animationend"),Pt=Ct("animationiteration"),Ot=Ct("animationstart"),Tt=Ct("transitionend"),Lt=new Map,Rt=new Map,zt=["abort","abort",Nt,"animationEnd",Pt,"animationIteration",Ot,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Tt,"transitionEnd","waiting","waiting"];function At(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),Rt.set(r,t),Lt.set(r,a),s(a,[r])}}(0,l.unstable_now)();var jt=8;function Ft(e){if(0!=(1&e))return jt=15,1;if(0!=(2&e))return jt=14,2;if(0!=(4&e))return jt=13,4;var t=24&e;return 0!==t?(jt=12,t):0!=(32&e)?(jt=11,32):0!=(t=192&e)?(jt=10,t):0!=(256&e)?(jt=9,256):0!=(t=3584&e)?(jt=8,t):0!=(4096&e)?(jt=7,4096):0!=(t=4186112&e)?(jt=6,t):0!=(t=62914560&e)?(jt=5,t):67108864&e?(jt=4,67108864):0!=(134217728&e)?(jt=3,134217728):0!=(t=805306368&e)?(jt=2,t):0!=(1073741824&e)?(jt=1,1073741824):(jt=8,e)}function It(e,t){var n=e.pendingLanes;if(0===n)return jt=0;var r=0,a=0,l=e.expiredLanes,o=e.suspendedLanes,i=e.pingedLanes;if(0!==l)r=l,a=jt=15;else if(0!=(l=134217727&n)){var u=l&~o;0!==u?(r=Ft(u),a=jt):0!=(i&=l)&&(r=Ft(i),a=jt)}else 0!=(l=n&~o)?(r=Ft(l),a=jt):0!==i&&(r=Ft(i),a=jt);if(0===r)return 0;if(r=n&((0>(r=31-$t(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&o)){if(Ft(t),a<=jt)return t;jt=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-$t(t)),r|=e[n],t&=~a;return r}function Mt(e){return 0!=(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function Dt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=Ut(24&~t))?Dt(10,t):e;case 10:return 0===(e=Ut(192&~t))?Dt(8,t):e;case 8:return 0===(e=Ut(3584&~t))&&0===(e=Ut(4186112&~t))&&(e=512),e;case 2:return 0===(t=Ut(805306368&~t))&&(t=268435456),t}throw Error(o(358,e))}function Ut(e){return e&-e}function Bt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Vt(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-$t(t)]=n}var $t=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Ht(e)/qt|0)|0},Ht=Math.log,qt=Math.LN2,Wt=l.unstable_UserBlockingPriority,Qt=l.unstable_runWithPriority,Kt=!0;function Yt(e,t,n,r){Fe||Ae();var a=Gt,l=Fe;Fe=!0;try{ze(a,e,t,n,r)}finally{(Fe=l)||Me()}}function Xt(e,t,n,r){Qt(Wt,Gt.bind(null,e,t,n,r))}function Gt(e,t,n,r){var a;if(Kt)if((a=0==(4&t))&&0<lt.length&&-1<dt.indexOf(e))e=pt(null,e,t,n,r),lt.push(e);else{var l=Zt(e,t,n,r);if(null===l)a&&mt(e,r);else{if(a){if(-1<dt.indexOf(e))return e=pt(l,e,t,n,r),void lt.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return ot=ht(ot,e,t,n,r,a),!0;case"dragenter":return it=ht(it,e,t,n,r,a),!0;case"mouseover":return ut=ht(ut,e,t,n,r,a),!0;case"pointerover":var l=a.pointerId;return st.set(l,ht(st.get(l)||null,e,t,n,r,a)),!0;case"gotpointercapture":return l=a.pointerId,ct.set(l,ht(ct.get(l)||null,e,t,n,r,a)),!0}return!1}(l,e,t,n,r))return;mt(e,r)}Lr(e,t,r,null,n)}}}function Zt(e,t,n,r){var a=xe(r);if(null!==(a=Zr(a))){var l=Ye(a);if(null===l)a=null;else{var o=l.tag;if(13===o){if(null!==(a=Xe(l)))return a;a=null}else if(3===o){if(l.stateNode.hydrate)return 3===l.tag?l.stateNode.containerInfo:null;a=null}else l!==a&&(a=null)}}return Lr(e,t,r,a,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,a="value"in Jt?Jt.value:Jt.textContent,l=a.length;for(e=0;e<r&&n[e]===a[e];e++);var o=r-e;for(t=1;t<=o&&n[r-t]===a[l-t];t++);return tn=a.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function ln(){return!1}function on(e){function t(t,n,r,a,l){for(var o in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=l,this.currentTarget=null,e)e.hasOwnProperty(o)&&(t=e[o],this[o]=t?t(a):a[o]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?an:ln,this.isPropagationStopped=ln,this}return a(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var un,sn,cn,fn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},dn=on(fn),pn=a({},fn,{view:0,detail:0}),mn=on(pn),hn=a({},pn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Cn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==cn&&(cn&&"mousemove"===e.type?(un=e.screenX-cn.screenX,sn=e.screenY-cn.screenY):sn=un=0,cn=e),un)},movementY:function(e){return"movementY"in e?e.movementY:sn}}),yn=on(hn),vn=on(a({},hn,{dataTransfer:0})),gn=on(a({},pn,{relatedTarget:0})),bn=on(a({},fn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=on(a({},fn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}})),kn=on(a({},fn,{data:0})),En={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},_n={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Sn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function xn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Sn[e])&&!!t[e]}function Cn(){return xn}var Nn=on(a({},pn,{key:function(e){if(e.key){var t=En[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?_n[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Cn,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}})),Pn=on(a({},hn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),On=on(a({},pn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Cn})),Tn=on(a({},fn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Ln=on(a({},hn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0})),Rn=[9,13,27,32],zn=f&&"CompositionEvent"in window,An=null;f&&"documentMode"in document&&(An=document.documentMode);var jn=f&&"TextEvent"in window&&!An,Fn=f&&(!zn||An&&8<An&&11>=An),In=String.fromCharCode(32),Mn=!1;function Dn(e,t){switch(e){case"keyup":return-1!==Rn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Un(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Bn=!1,Vn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function $n(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Vn[e.type]:"textarea"===t}function Hn(e,t,n,r){Te(r),0<(t=zr(t,"onChange")).length&&(n=new dn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var qn=null,Wn=null;function Qn(e){xr(e,0)}function Kn(e){if(G(ea(e)))return e}function Yn(e,t){if("change"===e)return t}var Xn=!1;if(f){var Gn;if(f){var Zn="oninput"in document;if(!Zn){var Jn=document.createElement("div");Jn.setAttribute("oninput","return;"),Zn="function"==typeof Jn.oninput}Gn=Zn}else Gn=!1;Xn=Gn&&(!document.documentMode||9<document.documentMode)}function er(){qn&&(qn.detachEvent("onpropertychange",tr),Wn=qn=null)}function tr(e){if("value"===e.propertyName&&Kn(Wn)){var t=[];if(Hn(t,Wn,e,xe(e)),e=Qn,Fe)e(t);else{Fe=!0;try{Re(e,t)}finally{Fe=!1,Me()}}}}function nr(e,t,n){"focusin"===e?(er(),Wn=n,(qn=t).attachEvent("onpropertychange",tr)):"focusout"===e&&er()}function rr(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Kn(Wn)}function ar(e,t){if("click"===e)return Kn(t)}function lr(e,t){if("input"===e||"change"===e)return Kn(t)}var or="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},ir=Object.prototype.hasOwnProperty;function ur(e,t){if(or(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!ir.call(t,n[r])||!or(e[n[r]],t[n[r]]))return!1;return!0}function sr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function cr(e,t){var n,r=sr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=sr(r)}}function fr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?fr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function dr(){for(var e=window,t=Z();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=Z((e=t.contentWindow).document)}return t}function pr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var mr=f&&"documentMode"in document&&11>=document.documentMode,hr=null,yr=null,vr=null,gr=!1;function br(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;gr||null==hr||hr!==Z(r)||(r="selectionStart"in(r=hr)&&pr(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},vr&&ur(vr,r)||(vr=r,0<(r=zr(yr,"onSelect")).length&&(t=new dn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=hr)))}At("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),At("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),At(zt,2);for(var wr="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),kr=0;kr<wr.length;kr++)Rt.set(wr[kr],0);c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),s("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),s("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),s("onBeforeInput",["compositionend","keypress","textInput","paste"]),s("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Er="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),_r=new Set("cancel close invalid load scroll toggle".split(" ").concat(Er));function Sr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,l,i,u,s){if(Ke.apply(this,arguments),$e){if(!$e)throw Error(o(198));var c=He;$e=!1,He=null,qe||(qe=!0,We=c)}}(r,t,void 0,e),e.currentTarget=null}function xr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var l=void 0;if(t)for(var o=r.length-1;0<=o;o--){var i=r[o],u=i.instance,s=i.currentTarget;if(i=i.listener,u!==l&&a.isPropagationStopped())break e;Sr(a,i,s),l=u}else for(o=0;o<r.length;o++){if(u=(i=r[o]).instance,s=i.currentTarget,i=i.listener,u!==l&&a.isPropagationStopped())break e;Sr(a,i,s),l=u}}}if(qe)throw e=We,qe=!1,We=null,e}function Cr(e,t){var n=na(t),r=e+"__bubble";n.has(r)||(Tr(t,e,2,!1),n.add(r))}var Nr="_reactListening"+Math.random().toString(36).slice(2);function Pr(e){e[Nr]||(e[Nr]=!0,i.forEach((function(t){_r.has(t)||Or(t,!1,e,null),Or(t,!0,e,null)})))}function Or(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,l=n;if("selectionchange"===e&&9!==n.nodeType&&(l=n.ownerDocument),null!==r&&!t&&_r.has(e)){if("scroll"!==e)return;a|=2,l=r}var o=na(l),i=e+"__"+(t?"capture":"bubble");o.has(i)||(t&&(a|=4),Tr(l,e,a,t),o.add(i))}function Tr(e,t,n,r){var a=Rt.get(t);switch(void 0===a?2:a){case 0:a=Yt;break;case 1:a=Xt;break;default:a=Gt}n=a.bind(null,t,n,e),a=void 0,!Ue||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Lr(e,t,n,r,a){var l=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var o=r.tag;if(3===o||4===o){var i=r.stateNode.containerInfo;if(i===a||8===i.nodeType&&i.parentNode===a)break;if(4===o)for(o=r.return;null!==o;){var u=o.tag;if((3===u||4===u)&&((u=o.stateNode.containerInfo)===a||8===u.nodeType&&u.parentNode===a))return;o=o.return}for(;null!==i;){if(null===(o=Zr(i)))return;if(5===(u=o.tag)||6===u){r=l=o;continue e}i=i.parentNode}}r=r.return}!function(e,t,n){if(Ie)return e();Ie=!0;try{je(e,t,n)}finally{Ie=!1,Me()}}((function(){var r=l,a=xe(n),o=[];e:{var i=Lt.get(e);if(void 0!==i){var u=dn,s=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":u=Nn;break;case"focusin":s="focus",u=gn;break;case"focusout":s="blur",u=gn;break;case"beforeblur":case"afterblur":u=gn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":u=yn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":u=vn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":u=On;break;case Nt:case Pt:case Ot:u=bn;break;case Tt:u=Tn;break;case"scroll":u=mn;break;case"wheel":u=Ln;break;case"copy":case"cut":case"paste":u=wn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":u=Pn}var c=0!=(4&t),f=!c&&"scroll"===e,d=c?null!==i?i+"Capture":null:i;c=[];for(var p,m=r;null!==m;){var h=(p=m).stateNode;if(5===p.tag&&null!==h&&(p=h,null!==d&&null!=(h=De(m,d))&&c.push(Rr(m,h,p))),f)break;m=m.return}0<c.length&&(i=new u(i,s,null,n,a),o.push({event:i,listeners:c}))}}if(0==(7&t)){if(u="mouseout"===e||"pointerout"===e,(!(i="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(s=n.relatedTarget||n.fromElement)||!Zr(s)&&!s[Xr])&&(u||i)&&(i=a.window===a?a:(i=a.ownerDocument)?i.defaultView||i.parentWindow:window,u?(u=r,null!==(s=(s=n.relatedTarget||n.toElement)?Zr(s):null)&&(s!==(f=Ye(s))||5!==s.tag&&6!==s.tag)&&(s=null)):(u=null,s=r),u!==s)){if(c=yn,h="onMouseLeave",d="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(c=Pn,h="onPointerLeave",d="onPointerEnter",m="pointer"),f=null==u?i:ea(u),p=null==s?i:ea(s),(i=new c(h,m+"leave",u,n,a)).target=f,i.relatedTarget=p,h=null,Zr(a)===r&&((c=new c(d,m+"enter",s,n,a)).target=p,c.relatedTarget=f,h=c),f=h,u&&s)e:{for(d=s,m=0,p=c=u;p;p=Ar(p))m++;for(p=0,h=d;h;h=Ar(h))p++;for(;0<m-p;)c=Ar(c),m--;for(;0<p-m;)d=Ar(d),p--;for(;m--;){if(c===d||null!==d&&c===d.alternate)break e;c=Ar(c),d=Ar(d)}c=null}else c=null;null!==u&&jr(o,i,u,c,!1),null!==s&&null!==f&&jr(o,f,s,c,!0)}if("select"===(u=(i=r?ea(r):window).nodeName&&i.nodeName.toLowerCase())||"input"===u&&"file"===i.type)var y=Yn;else if($n(i))if(Xn)y=lr;else{y=rr;var v=nr}else(u=i.nodeName)&&"input"===u.toLowerCase()&&("checkbox"===i.type||"radio"===i.type)&&(y=ar);switch(y&&(y=y(e,r))?Hn(o,y,n,a):(v&&v(e,i,r),"focusout"===e&&(v=i._wrapperState)&&v.controlled&&"number"===i.type&&ae(i,"number",i.value)),v=r?ea(r):window,e){case"focusin":($n(v)||"true"===v.contentEditable)&&(hr=v,yr=r,vr=null);break;case"focusout":vr=yr=hr=null;break;case"mousedown":gr=!0;break;case"contextmenu":case"mouseup":case"dragend":gr=!1,br(o,n,a);break;case"selectionchange":if(mr)break;case"keydown":case"keyup":br(o,n,a)}var g;if(zn)e:{switch(e){case"compositionstart":var b="onCompositionStart";break e;case"compositionend":b="onCompositionEnd";break e;case"compositionupdate":b="onCompositionUpdate";break e}b=void 0}else Bn?Dn(e,n)&&(b="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(b="onCompositionStart");b&&(Fn&&"ko"!==n.locale&&(Bn||"onCompositionStart"!==b?"onCompositionEnd"===b&&Bn&&(g=nn()):(en="value"in(Jt=a)?Jt.value:Jt.textContent,Bn=!0)),0<(v=zr(r,b)).length&&(b=new kn(b,e,null,n,a),o.push({event:b,listeners:v}),(g||null!==(g=Un(n)))&&(b.data=g))),(g=jn?function(e,t){switch(e){case"compositionend":return Un(t);case"keypress":return 32!==t.which?null:(Mn=!0,In);case"textInput":return(e=t.data)===In&&Mn?null:e;default:return null}}(e,n):function(e,t){if(Bn)return"compositionend"===e||!zn&&Dn(e,t)?(e=nn(),tn=en=Jt=null,Bn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Fn&&"ko"!==t.locale?null:t.data;default:return null}}(e,n))&&0<(r=zr(r,"onBeforeInput")).length&&(a=new kn("onBeforeInput","beforeinput",null,n,a),o.push({event:a,listeners:r}),a.data=g)}xr(o,t)}))}function Rr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function zr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,l=a.stateNode;5===a.tag&&null!==l&&(a=l,null!=(l=De(e,n))&&r.unshift(Rr(e,l,a)),null!=(l=De(e,t))&&r.push(Rr(e,l,a))),e=e.return}return r}function Ar(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function jr(e,t,n,r,a){for(var l=t._reactName,o=[];null!==n&&n!==r;){var i=n,u=i.alternate,s=i.stateNode;if(null!==u&&u===r)break;5===i.tag&&null!==s&&(i=s,a?null!=(u=De(n,l))&&o.unshift(Rr(n,u,i)):a||null!=(u=De(n,l))&&o.push(Rr(n,u,i))),n=n.return}0!==o.length&&e.push({event:t,listeners:o})}function Fr(){}var Ir=null,Mr=null;function Dr(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function Ur(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Br="function"==typeof setTimeout?setTimeout:void 0,Vr="function"==typeof clearTimeout?clearTimeout:void 0;function $r(e){(1===e.nodeType||9===e.nodeType&&null!=(e=e.body))&&(e.textContent="")}function Hr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function qr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Wr=0,Qr=Math.random().toString(36).slice(2),Kr="__reactFiber$"+Qr,Yr="__reactProps$"+Qr,Xr="__reactContainer$"+Qr,Gr="__reactEvents$"+Qr;function Zr(e){var t=e[Kr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Xr]||n[Kr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=qr(e);null!==e;){if(n=e[Kr])return n;e=qr(e)}return t}n=(e=n).parentNode}return null}function Jr(e){return!(e=e[Kr]||e[Xr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ea(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(o(33))}function ta(e){return e[Yr]||null}function na(e){var t=e[Gr];return void 0===t&&(t=e[Gr]=new Set),t}var ra=[],aa=-1;function la(e){return{current:e}}function oa(e){0>aa||(e.current=ra[aa],ra[aa]=null,aa--)}function ia(e,t){aa++,ra[aa]=e.current,e.current=t}var ua={},sa=la(ua),ca=la(!1),fa=ua;function da(e,t){var n=e.type.contextTypes;if(!n)return ua;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,l={};for(a in n)l[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function pa(e){return null!=e.childContextTypes}function ma(){oa(ca),oa(sa)}function ha(e,t,n){if(sa.current!==ua)throw Error(o(168));ia(sa,t),ia(ca,n)}function ya(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var l in r=r.getChildContext())if(!(l in e))throw Error(o(108,Q(t)||"Unknown",l));return a({},n,r)}function va(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||ua,fa=sa.current,ia(sa,e),ia(ca,ca.current),!0}function ga(e,t,n){var r=e.stateNode;if(!r)throw Error(o(169));n?(e=ya(e,t,fa),r.__reactInternalMemoizedMergedChildContext=e,oa(ca),oa(sa),ia(sa,e)):oa(ca),ia(ca,n)}var ba=null,wa=null,ka=l.unstable_runWithPriority,Ea=l.unstable_scheduleCallback,_a=l.unstable_cancelCallback,Sa=l.unstable_shouldYield,xa=l.unstable_requestPaint,Ca=l.unstable_now,Na=l.unstable_getCurrentPriorityLevel,Pa=l.unstable_ImmediatePriority,Oa=l.unstable_UserBlockingPriority,Ta=l.unstable_NormalPriority,La=l.unstable_LowPriority,Ra=l.unstable_IdlePriority,za={},Aa=void 0!==xa?xa:function(){},ja=null,Fa=null,Ia=!1,Ma=Ca(),Da=1e4>Ma?Ca:function(){return Ca()-Ma};function Ua(){switch(Na()){case Pa:return 99;case Oa:return 98;case Ta:return 97;case La:return 96;case Ra:return 95;default:throw Error(o(332))}}function Ba(e){switch(e){case 99:return Pa;case 98:return Oa;case 97:return Ta;case 96:return La;case 95:return Ra;default:throw Error(o(332))}}function Va(e,t){return e=Ba(e),ka(e,t)}function $a(e,t,n){return e=Ba(e),Ea(e,t,n)}function Ha(){if(null!==Fa){var e=Fa;Fa=null,_a(e)}qa()}function qa(){if(!Ia&&null!==ja){Ia=!0;var e=0;try{var t=ja;Va(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),ja=null}catch(t){throw null!==ja&&(ja=ja.slice(e+1)),Ea(Pa,Ha),t}finally{Ia=!1}}}var Wa=k.ReactCurrentBatchConfig;function Qa(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Ka=la(null),Ya=null,Xa=null,Ga=null;function Za(){Ga=Xa=Ya=null}function Ja(e){var t=Ka.current;oa(Ka),e.type._context._currentValue=t}function el(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function tl(e,t){Ya=e,Ga=Xa=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(zo=!0),e.firstContext=null)}function nl(e,t){if(Ga!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(Ga=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Xa){if(null===Ya)throw Error(o(308));Xa=t,Ya.dependencies={lanes:0,firstContext:t,responders:null}}else Xa=Xa.next=t;return e._currentValue}var rl=!1;function al(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function ll(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function ol(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function il(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function ul(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,l=null;if(null!==(n=n.firstBaseUpdate)){do{var o={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===l?a=l=o:l=l.next=o,n=n.next}while(null!==n);null===l?a=l=t:l=l.next=t}else a=l=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:l,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function sl(e,t,n,r){var l=e.updateQueue;rl=!1;var o=l.firstBaseUpdate,i=l.lastBaseUpdate,u=l.shared.pending;if(null!==u){l.shared.pending=null;var s=u,c=s.next;s.next=null,null===i?o=c:i.next=c,i=s;var f=e.alternate;if(null!==f){var d=(f=f.updateQueue).lastBaseUpdate;d!==i&&(null===d?f.firstBaseUpdate=c:d.next=c,f.lastBaseUpdate=s)}}if(null!==o){for(d=l.baseState,i=0,f=c=s=null;;){u=o.lane;var p=o.eventTime;if((r&u)===u){null!==f&&(f=f.next={eventTime:p,lane:0,tag:o.tag,payload:o.payload,callback:o.callback,next:null});e:{var m=e,h=o;switch(u=t,p=n,h.tag){case 1:if("function"==typeof(m=h.payload)){d=m.call(p,d,u);break e}d=m;break e;case 3:m.flags=-4097&m.flags|64;case 0:if(null==(u="function"==typeof(m=h.payload)?m.call(p,d,u):m))break e;d=a({},d,u);break e;case 2:rl=!0}}null!==o.callback&&(e.flags|=32,null===(u=l.effects)?l.effects=[o]:u.push(o))}else p={eventTime:p,lane:u,tag:o.tag,payload:o.payload,callback:o.callback,next:null},null===f?(c=f=p,s=d):f=f.next=p,i|=u;if(null===(o=o.next)){if(null===(u=l.shared.pending))break;o=u.next,u.next=null,l.lastBaseUpdate=u,l.shared.pending=null}}null===f&&(s=d),l.baseState=s,l.firstBaseUpdate=c,l.lastBaseUpdate=f,ji|=i,e.lanes=i,e.memoizedState=d}}function cl(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(o(191,a));a.call(r)}}}var fl=(new r.Component).refs;function dl(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var pl={isMounted:function(e){return!!(e=e._reactInternals)&&Ye(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=ou(),a=iu(e),l=ol(r,a);l.payload=t,null!=n&&(l.callback=n),il(e,l),uu(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=ou(),a=iu(e),l=ol(r,a);l.tag=1,l.payload=t,null!=n&&(l.callback=n),il(e,l),uu(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ou(),r=iu(e),a=ol(n,r);a.tag=2,null!=t&&(a.callback=t),il(e,a),uu(e,r,n)}};function ml(e,t,n,r,a,l,o){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,l,o):!(t.prototype&&t.prototype.isPureReactComponent&&ur(n,r)&&ur(a,l))}function hl(e,t,n){var r=!1,a=ua,l=t.contextType;return"object"==typeof l&&null!==l?l=nl(l):(a=pa(t)?fa:sa.current,l=(r=null!=(r=t.contextTypes))?da(e,a):ua),t=new t(n,l),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=pl,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=l),t}function yl(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&pl.enqueueReplaceState(t,t.state,null)}function vl(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=fl,al(e);var l=t.contextType;"object"==typeof l&&null!==l?a.context=nl(l):(l=pa(t)?fa:sa.current,a.context=da(e,l)),sl(e,n,a,r),a.state=e.memoizedState,"function"==typeof(l=t.getDerivedStateFromProps)&&(dl(e,t,l,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&pl.enqueueReplaceState(a,a.state,null),sl(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var gl=Array.isArray;function bl(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(o(309));var r=n.stateNode}if(!r)throw Error(o(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:((t=function(e){var t=r.refs;t===fl&&(t=r.refs={}),null===e?delete t[a]:t[a]=e})._stringRef=a,t)}if("string"!=typeof e)throw Error(o(284));if(!n._owner)throw Error(o(290,e))}return e}function wl(e,t){if("textarea"!==e.type)throw Error(o(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function kl(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Uu(e,t)).index=0,e.sibling=null,e}function l(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function i(t){return e&&null===t.alternate&&(t.flags=2),t}function u(e,t,n,r){return null===t||6!==t.tag?((t=Hu(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function s(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=bl(e,t,n),r.return=e,r):((r=Bu(n.type,n.key,n.props,null,e.mode,r)).ref=bl(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=qu(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function f(e,t,n,r,l){return null===t||7!==t.tag?((t=Vu(n,e.mode,r,l)).return=e,t):((t=a(t,n)).return=e,t)}function d(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Hu(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case E:return(n=Bu(t.type,t.key,t.props,null,e.mode,n)).ref=bl(e,null,t),n.return=e,n;case _:return(t=qu(t,e.mode,n)).return=e,t}if(gl(t)||V(t))return(t=Vu(t,e.mode,n,null)).return=e,t;wl(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==a?null:u(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case E:return n.key===a?n.type===S?f(e,t,n.props.children,r,a):s(e,t,n,r):null;case _:return n.key===a?c(e,t,n,r):null}if(gl(n)||V(n))return null!==a?null:f(e,t,n,r,null);wl(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof r||"number"==typeof r)return u(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case E:return e=e.get(null===r.key?n:r.key)||null,r.type===S?f(t,e,r.props.children,a,r.key):s(t,e,r,a);case _:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(gl(r)||V(r))return f(t,e=e.get(n)||null,r,a,null);wl(t,r)}return null}function h(a,o,i,u){for(var s=null,c=null,f=o,h=o=0,y=null;null!==f&&h<i.length;h++){f.index>h?(y=f,f=null):y=f.sibling;var v=p(a,f,i[h],u);if(null===v){null===f&&(f=y);break}e&&f&&null===v.alternate&&t(a,f),o=l(v,o,h),null===c?s=v:c.sibling=v,c=v,f=y}if(h===i.length)return n(a,f),s;if(null===f){for(;h<i.length;h++)null!==(f=d(a,i[h],u))&&(o=l(f,o,h),null===c?s=f:c.sibling=f,c=f);return s}for(f=r(a,f);h<i.length;h++)null!==(y=m(f,a,h,i[h],u))&&(e&&null!==y.alternate&&f.delete(null===y.key?h:y.key),o=l(y,o,h),null===c?s=y:c.sibling=y,c=y);return e&&f.forEach((function(e){return t(a,e)})),s}function y(a,i,u,s){var c=V(u);if("function"!=typeof c)throw Error(o(150));if(null==(u=c.call(u)))throw Error(o(151));for(var f=c=null,h=i,y=i=0,v=null,g=u.next();null!==h&&!g.done;y++,g=u.next()){h.index>y?(v=h,h=null):v=h.sibling;var b=p(a,h,g.value,s);if(null===b){null===h&&(h=v);break}e&&h&&null===b.alternate&&t(a,h),i=l(b,i,y),null===f?c=b:f.sibling=b,f=b,h=v}if(g.done)return n(a,h),c;if(null===h){for(;!g.done;y++,g=u.next())null!==(g=d(a,g.value,s))&&(i=l(g,i,y),null===f?c=g:f.sibling=g,f=g);return c}for(h=r(a,h);!g.done;y++,g=u.next())null!==(g=m(h,a,y,g.value,s))&&(e&&null!==g.alternate&&h.delete(null===g.key?y:g.key),i=l(g,i,y),null===f?c=g:f.sibling=g,f=g);return e&&h.forEach((function(e){return t(a,e)})),c}return function(e,r,l,u){var s="object"==typeof l&&null!==l&&l.type===S&&null===l.key;s&&(l=l.props.children);var c="object"==typeof l&&null!==l;if(c)switch(l.$$typeof){case E:e:{for(c=l.key,s=r;null!==s;){if(s.key===c){switch(s.tag){case 7:if(l.type===S){n(e,s.sibling),(r=a(s,l.props.children)).return=e,e=r;break e}break;default:if(s.elementType===l.type){n(e,s.sibling),(r=a(s,l.props)).ref=bl(e,s,l),r.return=e,e=r;break e}}n(e,s);break}t(e,s),s=s.sibling}l.type===S?((r=Vu(l.props.children,e.mode,u,l.key)).return=e,e=r):((u=Bu(l.type,l.key,l.props,null,e.mode,u)).ref=bl(e,r,l),u.return=e,e=u)}return i(e);case _:e:{for(s=l.key;null!==r;){if(r.key===s){if(4===r.tag&&r.stateNode.containerInfo===l.containerInfo&&r.stateNode.implementation===l.implementation){n(e,r.sibling),(r=a(r,l.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=qu(l,e.mode,u)).return=e,e=r}return i(e)}if("string"==typeof l||"number"==typeof l)return l=""+l,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,l)).return=e,e=r):(n(e,r),(r=Hu(l,e.mode,u)).return=e,e=r),i(e);if(gl(l))return h(e,r,l,u);if(V(l))return y(e,r,l,u);if(c&&wl(e,l),void 0===l&&!s)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(o(152,Q(e.type)||"Component"))}return n(e,r)}}var El=kl(!0),_l=kl(!1),Sl={},xl=la(Sl),Cl=la(Sl),Nl=la(Sl);function Pl(e){if(e===Sl)throw Error(o(174));return e}function Ol(e,t){switch(ia(Nl,t),ia(Cl,e),ia(xl,Sl),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:pe(null,"");break;default:t=pe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}oa(xl),ia(xl,t)}function Tl(){oa(xl),oa(Cl),oa(Nl)}function Ll(e){Pl(Nl.current);var t=Pl(xl.current),n=pe(t,e.type);t!==n&&(ia(Cl,e),ia(xl,n))}function Rl(e){Cl.current===e&&(oa(xl),oa(Cl))}var zl=la(0);function Al(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var jl=null,Fl=null,Il=!1;function Ml(e,t){var n=Mu(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Dl(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function Ul(e){if(Il){var t=Fl;if(t){var n=t;if(!Dl(e,t)){if(!(t=Hr(n.nextSibling))||!Dl(e,t))return e.flags=-1025&e.flags|2,Il=!1,void(jl=e);Ml(jl,n)}jl=e,Fl=Hr(t.firstChild)}else e.flags=-1025&e.flags|2,Il=!1,jl=e}}function Bl(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;jl=e}function Vl(e){if(e!==jl)return!1;if(!Il)return Bl(e),Il=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!Ur(t,e.memoizedProps))for(t=Fl;t;)Ml(e,t),t=Hr(t.nextSibling);if(Bl(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(o(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){Fl=Hr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}Fl=null}}else Fl=jl?Hr(e.stateNode.nextSibling):null;return!0}function $l(){Fl=jl=null,Il=!1}var Hl=[];function ql(){for(var e=0;e<Hl.length;e++)Hl[e]._workInProgressVersionPrimary=null;Hl.length=0}var Wl=k.ReactCurrentDispatcher,Ql=k.ReactCurrentBatchConfig,Kl=0,Yl=null,Xl=null,Gl=null,Zl=!1,Jl=!1;function eo(){throw Error(o(321))}function to(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!or(e[n],t[n]))return!1;return!0}function no(e,t,n,r,a,l){if(Kl=l,Yl=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Wl.current=null===e||null===e.memoizedState?Oo:To,e=n(r,a),Jl){l=0;do{if(Jl=!1,!(25>l))throw Error(o(301));l+=1,Gl=Xl=null,t.updateQueue=null,Wl.current=Lo,e=n(r,a)}while(Jl)}if(Wl.current=Po,t=null!==Xl&&null!==Xl.next,Kl=0,Gl=Xl=Yl=null,Zl=!1,t)throw Error(o(300));return e}function ro(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===Gl?Yl.memoizedState=Gl=e:Gl=Gl.next=e,Gl}function ao(){if(null===Xl){var e=Yl.alternate;e=null!==e?e.memoizedState:null}else e=Xl.next;var t=null===Gl?Yl.memoizedState:Gl.next;if(null!==t)Gl=t,Xl=e;else{if(null===e)throw Error(o(310));e={memoizedState:(Xl=e).memoizedState,baseState:Xl.baseState,baseQueue:Xl.baseQueue,queue:Xl.queue,next:null},null===Gl?Yl.memoizedState=Gl=e:Gl=Gl.next=e}return Gl}function lo(e,t){return"function"==typeof t?t(e):t}function oo(e){var t=ao(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=Xl,a=r.baseQueue,l=n.pending;if(null!==l){if(null!==a){var i=a.next;a.next=l.next,l.next=i}r.baseQueue=a=l,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var u=i=l=null,s=a;do{var c=s.lane;if((Kl&c)===c)null!==u&&(u=u.next={lane:0,action:s.action,eagerReducer:s.eagerReducer,eagerState:s.eagerState,next:null}),r=s.eagerReducer===e?s.eagerState:e(r,s.action);else{var f={lane:c,action:s.action,eagerReducer:s.eagerReducer,eagerState:s.eagerState,next:null};null===u?(i=u=f,l=r):u=u.next=f,Yl.lanes|=c,ji|=c}s=s.next}while(null!==s&&s!==a);null===u?l=r:u.next=i,or(r,t.memoizedState)||(zo=!0),t.memoizedState=r,t.baseState=l,t.baseQueue=u,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function io(e){var t=ao(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,l=t.memoizedState;if(null!==a){n.pending=null;var i=a=a.next;do{l=e(l,i.action),i=i.next}while(i!==a);or(l,t.memoizedState)||(zo=!0),t.memoizedState=l,null===t.baseQueue&&(t.baseState=l),n.lastRenderedState=l}return[l,r]}function uo(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Kl&e)===e)&&(t._workInProgressVersionPrimary=r,Hl.push(t))),e)return n(t._source);throw Hl.push(t),Error(o(350))}function so(e,t,n,r){var a=Ni;if(null===a)throw Error(o(349));var l=t._getVersion,i=l(t._source),u=Wl.current,s=u.useState((function(){return uo(a,t,n)})),c=s[1],f=s[0];s=Gl;var d=e.memoizedState,p=d.refs,m=p.getSnapshot,h=d.source;d=d.subscribe;var y=Yl;return e.memoizedState={refs:p,source:t,subscribe:r},u.useEffect((function(){p.getSnapshot=n,p.setSnapshot=c;var e=l(t._source);if(!or(i,e)){e=n(t._source),or(f,e)||(c(e),e=iu(y),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,o=e;0<o;){var u=31-$t(o),s=1<<u;r[u]|=e,o&=~s}}}),[n,t,r]),u.useEffect((function(){return r(t._source,(function(){var e=p.getSnapshot,n=p.setSnapshot;try{n(e(t._source));var r=iu(y);a.mutableReadLanes|=r&a.pendingLanes}catch(e){n((function(){throw e}))}}))}),[t,r]),or(m,n)&&or(h,t)&&or(d,r)||((e={pending:null,dispatch:null,lastRenderedReducer:lo,lastRenderedState:f}).dispatch=c=No.bind(null,Yl,e),s.queue=e,s.baseQueue=null,f=uo(a,t,n),s.memoizedState=s.baseState=f),f}function co(e,t,n){return so(ao(),e,t,n)}function fo(e){var t=ro();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:lo,lastRenderedState:e}).dispatch=No.bind(null,Yl,e),[t.memoizedState,e]}function po(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Yl.updateQueue)?(t={lastEffect:null},Yl.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function mo(e){return e={current:e},ro().memoizedState=e}function ho(){return ao().memoizedState}function yo(e,t,n,r){var a=ro();Yl.flags|=e,a.memoizedState=po(1|t,n,void 0,void 0===r?null:r)}function vo(e,t,n,r){var a=ao();r=void 0===r?null:r;var l=void 0;if(null!==Xl){var o=Xl.memoizedState;if(l=o.destroy,null!==r&&to(r,o.deps))return void po(t,n,l,r)}Yl.flags|=e,a.memoizedState=po(1|t,n,l,r)}function go(e,t){return yo(516,4,e,t)}function bo(e,t){return vo(516,4,e,t)}function wo(e,t){return vo(4,2,e,t)}function ko(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Eo(e,t,n){return n=null!=n?n.concat([e]):null,vo(4,2,ko.bind(null,t,e),n)}function _o(){}function So(e,t){var n=ao();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&to(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function xo(e,t){var n=ao();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&to(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Co(e,t){var n=Ua();Va(98>n?98:n,(function(){e(!0)})),Va(97<n?97:n,(function(){var n=Ql.transition;Ql.transition=1;try{e(!1),t()}finally{Ql.transition=n}}))}function No(e,t,n){var r=ou(),a=iu(e),l={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},o=t.pending;if(null===o?l.next=l:(l.next=o.next,o.next=l),t.pending=l,o=e.alternate,e===Yl||null!==o&&o===Yl)Jl=Zl=!0;else{if(0===e.lanes&&(null===o||0===o.lanes)&&null!==(o=t.lastRenderedReducer))try{var i=t.lastRenderedState,u=o(i,n);if(l.eagerReducer=o,l.eagerState=u,or(u,i))return}catch(e){}uu(e,a,r)}}var Po={readContext:nl,useCallback:eo,useContext:eo,useEffect:eo,useImperativeHandle:eo,useLayoutEffect:eo,useMemo:eo,useReducer:eo,useRef:eo,useState:eo,useDebugValue:eo,useDeferredValue:eo,useTransition:eo,useMutableSource:eo,useOpaqueIdentifier:eo,unstable_isNewReconciler:!1},Oo={readContext:nl,useCallback:function(e,t){return ro().memoizedState=[e,void 0===t?null:t],e},useContext:nl,useEffect:go,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yo(4,2,ko.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yo(4,2,e,t)},useMemo:function(e,t){var n=ro();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=ro();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=No.bind(null,Yl,e),[r.memoizedState,e]},useRef:mo,useState:fo,useDebugValue:_o,useDeferredValue:function(e){var t=fo(e),n=t[0],r=t[1];return go((function(){var t=Ql.transition;Ql.transition=1;try{r(e)}finally{Ql.transition=t}}),[e]),n},useTransition:function(){var e=fo(!1),t=e[0];return mo(e=Co.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=ro();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},so(r,e,t,n)},useOpaqueIdentifier:function(){if(Il){var e=!1,t=function(e){return{$$typeof:j,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Wr++).toString(36))),Error(o(355))})),n=fo(t)[1];return 0==(2&Yl.mode)&&(Yl.flags|=516,po(5,(function(){n("r:"+(Wr++).toString(36))}),void 0,null)),t}return fo(t="r:"+(Wr++).toString(36)),t},unstable_isNewReconciler:!1},To={readContext:nl,useCallback:So,useContext:nl,useEffect:bo,useImperativeHandle:Eo,useLayoutEffect:wo,useMemo:xo,useReducer:oo,useRef:ho,useState:function(){return oo(lo)},useDebugValue:_o,useDeferredValue:function(e){var t=oo(lo),n=t[0],r=t[1];return bo((function(){var t=Ql.transition;Ql.transition=1;try{r(e)}finally{Ql.transition=t}}),[e]),n},useTransition:function(){var e=oo(lo)[0];return[ho().current,e]},useMutableSource:co,useOpaqueIdentifier:function(){return oo(lo)[0]},unstable_isNewReconciler:!1},Lo={readContext:nl,useCallback:So,useContext:nl,useEffect:bo,useImperativeHandle:Eo,useLayoutEffect:wo,useMemo:xo,useReducer:io,useRef:ho,useState:function(){return io(lo)},useDebugValue:_o,useDeferredValue:function(e){var t=io(lo),n=t[0],r=t[1];return bo((function(){var t=Ql.transition;Ql.transition=1;try{r(e)}finally{Ql.transition=t}}),[e]),n},useTransition:function(){var e=io(lo)[0];return[ho().current,e]},useMutableSource:co,useOpaqueIdentifier:function(){return io(lo)[0]},unstable_isNewReconciler:!1},Ro=k.ReactCurrentOwner,zo=!1;function Ao(e,t,n,r){t.child=null===e?_l(t,null,n,r):El(t,e.child,n,r)}function jo(e,t,n,r,a){n=n.render;var l=t.ref;return tl(t,a),r=no(e,t,n,r,l,a),null===e||zo?(t.flags|=1,Ao(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,Jo(e,t,a))}function Fo(e,t,n,r,a,l){if(null===e){var o=n.type;return"function"!=typeof o||Du(o)||void 0!==o.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Bu(n.type,null,r,t,t.mode,l)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,Io(e,t,o,r,a,l))}return o=e.child,0==(a&l)&&(a=o.memoizedProps,(n=null!==(n=n.compare)?n:ur)(a,r)&&e.ref===t.ref)?Jo(e,t,l):(t.flags|=1,(e=Uu(o,r)).ref=t.ref,e.return=t,t.child=e)}function Io(e,t,n,r,a,l){if(null!==e&&ur(e.memoizedProps,r)&&e.ref===t.ref){if(zo=!1,0==(l&a))return t.lanes=e.lanes,Jo(e,t,l);0!=(16384&e.flags)&&(zo=!0)}return Uo(e,t,n,r,l)}function Mo(e,t,n){var r=t.pendingProps,a=r.children,l=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},yu(0,n);else{if(0==(1073741824&n))return e=null!==l?l.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},yu(0,e),null;t.memoizedState={baseLanes:0},yu(0,null!==l?l.baseLanes:n)}else null!==l?(r=l.baseLanes|n,t.memoizedState=null):r=n,yu(0,r);return Ao(e,t,a,n),t.child}function Do(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function Uo(e,t,n,r,a){var l=pa(n)?fa:sa.current;return l=da(t,l),tl(t,a),n=no(e,t,n,r,l,a),null===e||zo?(t.flags|=1,Ao(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,Jo(e,t,a))}function Bo(e,t,n,r,a){if(pa(n)){var l=!0;va(t)}else l=!1;if(tl(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),hl(t,n,r),vl(t,n,r,a),r=!0;else if(null===e){var o=t.stateNode,i=t.memoizedProps;o.props=i;var u=o.context,s=n.contextType;s="object"==typeof s&&null!==s?nl(s):da(t,s=pa(n)?fa:sa.current);var c=n.getDerivedStateFromProps,f="function"==typeof c||"function"==typeof o.getSnapshotBeforeUpdate;f||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(i!==r||u!==s)&&yl(t,o,r,s),rl=!1;var d=t.memoizedState;o.state=d,sl(t,r,o,a),u=t.memoizedState,i!==r||d!==u||ca.current||rl?("function"==typeof c&&(dl(t,n,c,r),u=t.memoizedState),(i=rl||ml(t,n,i,r,d,u,s))?(f||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||("function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount()),"function"==typeof o.componentDidMount&&(t.flags|=4)):("function"==typeof o.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=u),o.props=r,o.state=u,o.context=s,r=i):("function"==typeof o.componentDidMount&&(t.flags|=4),r=!1)}else{o=t.stateNode,ll(e,t),i=t.memoizedProps,s=t.type===t.elementType?i:Qa(t.type,i),o.props=s,f=t.pendingProps,d=o.context,u="object"==typeof(u=n.contextType)&&null!==u?nl(u):da(t,u=pa(n)?fa:sa.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof o.getSnapshotBeforeUpdate)||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(i!==f||d!==u)&&yl(t,o,r,u),rl=!1,d=t.memoizedState,o.state=d,sl(t,r,o,a);var m=t.memoizedState;i!==f||d!==m||ca.current||rl?("function"==typeof p&&(dl(t,n,p,r),m=t.memoizedState),(s=rl||ml(t,n,s,r,d,m,u))?(c||"function"!=typeof o.UNSAFE_componentWillUpdate&&"function"!=typeof o.componentWillUpdate||("function"==typeof o.componentWillUpdate&&o.componentWillUpdate(r,m,u),"function"==typeof o.UNSAFE_componentWillUpdate&&o.UNSAFE_componentWillUpdate(r,m,u)),"function"==typeof o.componentDidUpdate&&(t.flags|=4),"function"==typeof o.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof o.componentDidUpdate||i===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||i===e.memoizedProps&&d===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=m),o.props=r,o.state=m,o.context=u,r=s):("function"!=typeof o.componentDidUpdate||i===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||i===e.memoizedProps&&d===e.memoizedState||(t.flags|=256),r=!1)}return Vo(e,t,n,r,l,a)}function Vo(e,t,n,r,a,l){Do(e,t);var o=0!=(64&t.flags);if(!r&&!o)return a&&ga(t,n,!1),Jo(e,t,l);r=t.stateNode,Ro.current=t;var i=o&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&o?(t.child=El(t,e.child,null,l),t.child=El(t,null,i,l)):Ao(e,t,i,l),t.memoizedState=r.state,a&&ga(t,n,!0),t.child}function $o(e){var t=e.stateNode;t.pendingContext?ha(0,t.pendingContext,t.pendingContext!==t.context):t.context&&ha(0,t.context,!1),Ol(e,t.containerInfo)}var Ho,qo,Wo,Qo={dehydrated:null,retryLane:0};function Ko(e,t,n){var r,a=t.pendingProps,l=zl.current,o=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&l)),r?(o=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(l|=1),ia(zl,1&l),null===e?(void 0!==a.fallback&&Ul(t),e=a.children,l=a.fallback,o?(e=Yo(t,e,l,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qo,e):"number"==typeof a.unstable_expectedLoadTime?(e=Yo(t,e,l,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qo,t.lanes=33554432,e):((n=$u({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,o?(a=function(e,t,n,r,a){var l=t.mode,o=e.child;e=o.sibling;var i={mode:"hidden",children:n};return 0==(2&l)&&t.child!==o?((n=t.child).childLanes=0,n.pendingProps=i,null!==(o=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=o,o.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Uu(o,i),null!==e?r=Uu(e,r):(r=Vu(r,l,a,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}(e,t,a.children,a.fallback,n),o=t.child,l=e.child.memoizedState,o.memoizedState=null===l?{baseLanes:n}:{baseLanes:l.baseLanes|n},o.childLanes=e.childLanes&~n,t.memoizedState=Qo,a):(n=function(e,t,n,r){var a=e.child;return e=a.sibling,n=Uu(a,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}(e,t,a.children,n),t.memoizedState=null,n))}function Yo(e,t,n,r){var a=e.mode,l=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==l?(l.childLanes=0,l.pendingProps=t):l=$u(t,a,0,null),n=Vu(n,a,r,null),l.return=e,n.return=e,l.sibling=n,e.child=l,n}function Xo(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),el(e.return,t)}function Go(e,t,n,r,a,l){var o=e.memoizedState;null===o?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:l}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=a,o.lastEffect=l)}function Zo(e,t,n){var r=t.pendingProps,a=r.revealOrder,l=r.tail;if(Ao(e,t,r.children,n),0!=(2&(r=zl.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Xo(e,n);else if(19===e.tag)Xo(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ia(zl,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Al(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),Go(t,!1,a,n,l,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Al(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}Go(t,!0,n,null,l,t.lastEffect);break;case"together":Go(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function Jo(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),ji|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(o(153));if(null!==t.child){for(n=Uu(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Uu(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function ei(e,t){if(!Il)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ti(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return pa(t.type)&&ma(),null;case 3:return Tl(),oa(ca),oa(sa),ql(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Vl(t)?t.flags|=4:r.hydrate||(t.flags|=256)),null;case 5:Rl(t);var l=Pl(Nl.current);if(n=t.type,null!==e&&null!=t.stateNode)qo(e,t,n,r),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(o(166));return null}if(e=Pl(xl.current),Vl(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[Kr]=t,r[Yr]=i,n){case"dialog":Cr("cancel",r),Cr("close",r);break;case"iframe":case"object":case"embed":Cr("load",r);break;case"video":case"audio":for(e=0;e<Er.length;e++)Cr(Er[e],r);break;case"source":Cr("error",r);break;case"img":case"image":case"link":Cr("error",r),Cr("load",r);break;case"details":Cr("toggle",r);break;case"input":ee(r,i),Cr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!i.multiple},Cr("invalid",r);break;case"textarea":ue(r,i),Cr("invalid",r)}for(var s in _e(n,i),e=null,i)i.hasOwnProperty(s)&&(l=i[s],"children"===s?"string"==typeof l?r.textContent!==l&&(e=["children",l]):"number"==typeof l&&r.textContent!==""+l&&(e=["children",""+l]):u.hasOwnProperty(s)&&null!=l&&"onScroll"===s&&Cr("scroll",r));switch(n){case"input":X(r),re(r,i,!0);break;case"textarea":X(r),ce(r);break;case"select":case"option":break;default:"function"==typeof i.onClick&&(r.onclick=Fr)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(s=9===l.nodeType?l:l.ownerDocument,e===fe&&(e=de(n)),e===fe?"script"===n?((e=s.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),"select"===n&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[Kr]=t,e[Yr]=r,Ho(e,t),t.stateNode=e,s=Se(n,r),n){case"dialog":Cr("cancel",e),Cr("close",e),l=r;break;case"iframe":case"object":case"embed":Cr("load",e),l=r;break;case"video":case"audio":for(l=0;l<Er.length;l++)Cr(Er[l],e);l=r;break;case"source":Cr("error",e),l=r;break;case"img":case"image":case"link":Cr("error",e),Cr("load",e),l=r;break;case"details":Cr("toggle",e),l=r;break;case"input":ee(e,r),l=J(e,r),Cr("invalid",e);break;case"option":l=le(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},l=a({},r,{value:void 0}),Cr("invalid",e);break;case"textarea":ue(e,r),l=ie(e,r),Cr("invalid",e);break;default:l=r}_e(n,l);var c=l;for(i in c)if(c.hasOwnProperty(i)){var f=c[i];"style"===i?ke(e,f):"dangerouslySetInnerHTML"===i?null!=(f=f?f.__html:void 0)&&ye(e,f):"children"===i?"string"==typeof f?("textarea"!==n||""!==f)&&ve(e,f):"number"==typeof f&&ve(e,""+f):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(u.hasOwnProperty(i)?null!=f&&"onScroll"===i&&Cr("scroll",e):null!=f&&w(e,i,f,s))}switch(n){case"input":X(e),re(e,r,!1);break;case"textarea":X(e),ce(e);break;case"option":null!=r.value&&e.setAttribute("value",""+K(r.value));break;case"select":e.multiple=!!r.multiple,null!=(i=r.value)?oe(e,!!r.multiple,i,!1):null!=r.defaultValue&&oe(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof l.onClick&&(e.onclick=Fr)}Dr(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Wo(0,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(o(166));n=Pl(Nl.current),Pl(xl.current),Vl(t)?(r=t.stateNode,n=t.memoizedProps,r[Kr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Kr]=t,t.stateNode=r)}return null;case 13:return oa(zl),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Vl(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&zl.current)?0===Ri&&(Ri=3):(0!==Ri&&3!==Ri||(Ri=4),null===Ni||0==(134217727&ji)&&0==(134217727&Fi)||du(Ni,Oi))),(r||n)&&(t.flags|=4),null);case 4:return Tl(),null===e&&Pr(t.stateNode.containerInfo),null;case 10:return Ja(t),null;case 17:return pa(t.type)&&ma(),null;case 19:if(oa(zl),null===(r=t.memoizedState))return null;if(i=0!=(64&t.flags),null===(s=r.rendering))if(i)ei(r,!1);else{if(0!==Ri||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(s=Al(e))){for(t.flags|=64,ei(r,!1),null!==(i=s.updateQueue)&&(t.updateQueue=i,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(i=n).flags&=2,i.nextEffect=null,i.firstEffect=null,i.lastEffect=null,null===(s=i.alternate)?(i.childLanes=0,i.lanes=e,i.child=null,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=s.childLanes,i.lanes=s.lanes,i.child=s.child,i.memoizedProps=s.memoizedProps,i.memoizedState=s.memoizedState,i.updateQueue=s.updateQueue,i.type=s.type,e=s.dependencies,i.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ia(zl,1&zl.current|2),t.child}e=e.sibling}null!==r.tail&&Da()>Ui&&(t.flags|=64,i=!0,ei(r,!1),t.lanes=33554432)}else{if(!i)if(null!==(e=Al(s))){if(t.flags|=64,i=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),ei(r,!0),null===r.tail&&"hidden"===r.tailMode&&!s.alternate&&!Il)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*Da()-r.renderingStartTime>Ui&&1073741824!==n&&(t.flags|=64,i=!0,ei(r,!1),t.lanes=33554432);r.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=r.last)?n.sibling=s:t.child=s,r.last=s)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=Da(),n.sibling=null,t=zl.current,ia(zl,i?1&t|2:1&t),n):null;case 23:case 24:return vu(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(o(156,t.tag))}function ni(e){switch(e.tag){case 1:pa(e.type)&&ma();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Tl(),oa(ca),oa(sa),ql(),0!=(64&(t=e.flags)))throw Error(o(285));return e.flags=-4097&t|64,e;case 5:return Rl(e),null;case 13:return oa(zl),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return oa(zl),null;case 4:return Tl(),null;case 10:return Ja(e),null;case 23:case 24:return vu(),null;default:return null}}function ri(e,t){try{var n="",r=t;do{n+=W(r),r=r.return}while(r);var a=n}catch(e){a="\nError generating stack: "+e.message+"\n"+e.stack}return{value:e,source:t,stack:a}}function ai(e,t){try{console.error(t.value)}catch(e){setTimeout((function(){throw e}))}}Ho=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},qo=function(e,t,n,r){var l=e.memoizedProps;if(l!==r){e=t.stateNode,Pl(xl.current);var o,i=null;switch(n){case"input":l=J(e,l),r=J(e,r),i=[];break;case"option":l=le(e,l),r=le(e,r),i=[];break;case"select":l=a({},l,{value:void 0}),r=a({},r,{value:void 0}),i=[];break;case"textarea":l=ie(e,l),r=ie(e,r),i=[];break;default:"function"!=typeof l.onClick&&"function"==typeof r.onClick&&(e.onclick=Fr)}for(f in _e(n,r),n=null,l)if(!r.hasOwnProperty(f)&&l.hasOwnProperty(f)&&null!=l[f])if("style"===f){var s=l[f];for(o in s)s.hasOwnProperty(o)&&(n||(n={}),n[o]="")}else"dangerouslySetInnerHTML"!==f&&"children"!==f&&"suppressContentEditableWarning"!==f&&"suppressHydrationWarning"!==f&&"autoFocus"!==f&&(u.hasOwnProperty(f)?i||(i=[]):(i=i||[]).push(f,null));for(f in r){var c=r[f];if(s=null!=l?l[f]:void 0,r.hasOwnProperty(f)&&c!==s&&(null!=c||null!=s))if("style"===f)if(s){for(o in s)!s.hasOwnProperty(o)||c&&c.hasOwnProperty(o)||(n||(n={}),n[o]="");for(o in c)c.hasOwnProperty(o)&&s[o]!==c[o]&&(n||(n={}),n[o]=c[o])}else n||(i||(i=[]),i.push(f,n)),n=c;else"dangerouslySetInnerHTML"===f?(c=c?c.__html:void 0,s=s?s.__html:void 0,null!=c&&s!==c&&(i=i||[]).push(f,c)):"children"===f?"string"!=typeof c&&"number"!=typeof c||(i=i||[]).push(f,""+c):"suppressContentEditableWarning"!==f&&"suppressHydrationWarning"!==f&&(u.hasOwnProperty(f)?(null!=c&&"onScroll"===f&&Cr("scroll",e),i||s===c||(i=[])):"object"==typeof c&&null!==c&&c.$$typeof===j?c.toString():(i=i||[]).push(f,c))}n&&(i=i||[]).push("style",n);var f=i;(t.updateQueue=f)&&(t.flags|=4)}},Wo=function(e,t,n,r){n!==r&&(t.flags|=4)};var li="function"==typeof WeakMap?WeakMap:Map;function oi(e,t,n){(n=ol(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Hi||(Hi=!0,qi=r),ai(0,t)},n}function ii(e,t,n){(n=ol(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return ai(0,t),r(a)}}var l=e.stateNode;return null!==l&&"function"==typeof l.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Wi?Wi=new Set([this]):Wi.add(this),ai(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ui="function"==typeof WeakSet?WeakSet:Set;function si(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(t){Au(e,t)}else t.current=null}function ci(e,t){switch(t.tag){case 0:case 11:case 15:case 22:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Qa(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&$r(t.stateNode.containerInfo));case 5:case 6:case 4:case 17:return}throw Error(o(163))}function fi(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(Lu(n,e),Tu(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Qa(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&cl(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:e=n.child.stateNode;break;case 1:e=n.child.stateNode}cl(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&Dr(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&kt(n)))));case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(o(163))}function di(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=we("display",a)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function pi(e,t){if(wa&&"function"==typeof wa.onCommitFiberUnmount)try{wa.onCommitFiberUnmount(ba,t)}catch(e){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))Lu(t,n);else{r=t;try{a()}catch(e){Au(r,e)}}n=n.next}while(n!==e)}break;case 1:if(si(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(e){Au(t,e)}break;case 5:si(t);break;case 4:bi(e,t)}}function mi(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function hi(e){return 5===e.tag||3===e.tag||4===e.tag}function yi(e){e:{for(var t=e.return;null!==t;){if(hi(t))break e;t=t.return}throw Error(o(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(o(161))}16&n.flags&&(ve(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||hi(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?vi(e,n,t):gi(e,n,t)}function vi(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Fr));else if(4!==r&&null!==(e=e.child))for(vi(e,t,n),e=e.sibling;null!==e;)vi(e,t,n),e=e.sibling}function gi(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(gi(e,t,n),e=e.sibling;null!==e;)gi(e,t,n),e=e.sibling}function bi(e,t){for(var n,r,a=t,l=!1;;){if(!l){l=a.return;e:for(;;){if(null===l)throw Error(o(160));switch(n=l.stateNode,l.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}l=l.return}l=!0}if(5===a.tag||6===a.tag){e:for(var i=e,u=a,s=u;;)if(pi(i,s),null!==s.child&&4!==s.tag)s.child.return=s,s=s.child;else{if(s===u)break e;for(;null===s.sibling;){if(null===s.return||s.return===u)break e;s=s.return}s.sibling.return=s.return,s=s.sibling}r?(i=n,u=a.stateNode,8===i.nodeType?i.parentNode.removeChild(u):i.removeChild(u)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(pi(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(l=!1)}a.sibling.return=a.return,a=a.sibling}}function wi(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var a=null!==e?e.memoizedProps:r;e=t.type;var l=t.updateQueue;if(t.updateQueue=null,null!==l){for(n[Yr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),Se(e,a),t=Se(e,r),a=0;a<l.length;a+=2){var i=l[a],u=l[a+1];"style"===i?ke(n,u):"dangerouslySetInnerHTML"===i?ye(n,u):"children"===i?ve(n,u):w(n,i,u,t)}switch(e){case"input":ne(n,r);break;case"textarea":se(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(l=r.value)?oe(n,!!r.multiple,l,!1):e!==!!r.multiple&&(null!=r.defaultValue?oe(n,!!r.multiple,r.defaultValue,!0):oe(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(o(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,kt(n.containerInfo)));case 12:return;case 13:return null!==t.memoizedState&&(Di=Da(),di(t.child,!0)),void ki(t);case 19:return void ki(t);case 17:return;case 23:case 24:return void di(t,null!==t.memoizedState)}throw Error(o(163))}function ki(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ui),t.forEach((function(t){var r=Fu.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Ei(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&null!==(t=t.memoizedState)&&null===t.dehydrated}var _i=Math.ceil,Si=k.ReactCurrentDispatcher,xi=k.ReactCurrentOwner,Ci=0,Ni=null,Pi=null,Oi=0,Ti=0,Li=la(0),Ri=0,zi=null,Ai=0,ji=0,Fi=0,Ii=0,Mi=null,Di=0,Ui=1/0;function Bi(){Ui=Da()+500}var Vi,$i=null,Hi=!1,qi=null,Wi=null,Qi=!1,Ki=null,Yi=90,Xi=[],Gi=[],Zi=null,Ji=0,eu=null,tu=-1,nu=0,ru=0,au=null,lu=!1;function ou(){return 0!=(48&Ci)?Da():-1!==tu?tu:tu=Da()}function iu(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===Ua()?1:2;if(0===nu&&(nu=Ai),0!==Wa.transition){0!==ru&&(ru=null!==Mi?Mi.pendingLanes:0),e=nu;var t=4186112&~ru;return 0==(t&=-t)&&0==(t=(e=4186112&~e)&-e)&&(t=8192),t}return e=Ua(),e=Dt(0!=(4&Ci)&&98===e?12:e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),nu)}function uu(e,t,n){if(50<Ji)throw Ji=0,eu=null,Error(o(185));if(null===(e=su(e,t)))return null;Vt(e,t,n),e===Ni&&(Fi|=t,4===Ri&&du(e,Oi));var r=Ua();1===t?0!=(8&Ci)&&0==(48&Ci)?pu(e):(cu(e,n),0===Ci&&(Bi(),Ha())):(0==(4&Ci)||98!==r&&99!==r||(null===Zi?Zi=new Set([e]):Zi.add(e)),cu(e,n)),Mi=e}function su(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function cu(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,a=e.pingedLanes,l=e.expirationTimes,i=e.pendingLanes;0<i;){var u=31-$t(i),s=1<<u,c=l[u];if(-1===c){if(0==(s&r)||0!=(s&a)){c=t,Ft(s);var f=jt;l[u]=10<=f?c+250:6<=f?c+5e3:-1}}else c<=t&&(e.expiredLanes|=s);i&=~s}if(r=It(e,e===Ni?Oi:0),t=jt,0===r)null!==n&&(n!==za&&_a(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==za&&_a(n)}15===t?(n=pu.bind(null,e),null===ja?(ja=[n],Fa=Ea(Pa,qa)):ja.push(n),n=za):n=14===t?$a(99,pu.bind(null,e)):$a(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(o(358,e))}}(t),fu.bind(null,e)),e.callbackPriority=t,e.callbackNode=n}}function fu(e){if(tu=-1,ru=nu=0,0!=(48&Ci))throw Error(o(327));var t=e.callbackNode;if(Ou()&&e.callbackNode!==t)return null;var n=It(e,e===Ni?Oi:0);if(0===n)return null;var r=n,a=Ci;Ci|=16;var l=wu();for(Ni===e&&Oi===r||(Bi(),gu(e,r));;)try{_u();break}catch(t){bu(e,t)}if(Za(),Si.current=l,Ci=a,null!==Pi?r=0:(Ni=null,Oi=0,r=Ri),0!=(Ai&Fi))gu(e,0);else if(0!==r){if(2===r&&(Ci|=64,e.hydrate&&(e.hydrate=!1,$r(e.containerInfo)),0!==(n=Mt(e))&&(r=ku(e,n))),1===r)throw t=zi,gu(e,0),du(e,n),cu(e,Da()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(o(345));case 2:Cu(e);break;case 3:if(du(e,n),(62914560&n)===n&&10<(r=Di+500-Da())){if(0!==It(e,0))break;if(((a=e.suspendedLanes)&n)!==n){ou(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=Br(Cu.bind(null,e),r);break}Cu(e);break;case 4:if(du(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var i=31-$t(n);l=1<<i,(i=r[i])>a&&(a=i),n&=~l}if(n=a,10<(n=(120>(n=Da()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*_i(n/1960))-n)){e.timeoutHandle=Br(Cu.bind(null,e),n);break}Cu(e);break;case 5:Cu(e);break;default:throw Error(o(329))}}return cu(e,Da()),e.callbackNode===t?fu.bind(null,e):null}function du(e,t){for(t&=~Ii,t&=~Fi,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-$t(t),r=1<<n;e[n]=-1,t&=~r}}function pu(e){if(0!=(48&Ci))throw Error(o(327));if(Ou(),e===Ni&&0!=(e.expiredLanes&Oi)){var t=Oi,n=ku(e,t);0!=(Ai&Fi)&&(n=ku(e,t=It(e,t)))}else n=ku(e,t=It(e,0));if(0!==e.tag&&2===n&&(Ci|=64,e.hydrate&&(e.hydrate=!1,$r(e.containerInfo)),0!==(t=Mt(e))&&(n=ku(e,t))),1===n)throw n=zi,gu(e,0),du(e,t),cu(e,Da()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Cu(e),cu(e,Da()),null}function mu(e,t){var n=Ci;Ci|=1;try{return e(t)}finally{0===(Ci=n)&&(Bi(),Ha())}}function hu(e,t){var n=Ci;Ci&=-2,Ci|=8;try{return e(t)}finally{0===(Ci=n)&&(Bi(),Ha())}}function yu(e,t){ia(Li,Ti),Ti|=t,Ai|=t}function vu(){Ti=Li.current,oa(Li)}function gu(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Vr(n)),null!==Pi)for(n=Pi.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&ma();break;case 3:Tl(),oa(ca),oa(sa),ql();break;case 5:Rl(r);break;case 4:Tl();break;case 13:case 19:oa(zl);break;case 10:Ja(r);break;case 23:case 24:vu()}n=n.return}Ni=e,Pi=Uu(e.current,null),Oi=Ti=Ai=t,Ri=0,zi=null,Ii=Fi=ji=0}function bu(e,t){for(;;){var n=Pi;try{if(Za(),Wl.current=Po,Zl){for(var r=Yl.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}Zl=!1}if(Kl=0,Gl=Xl=Yl=null,Jl=!1,xi.current=null,null===n||null===n.return){Ri=1,zi=t,Pi=null;break}e:{var l=e,o=n.return,i=n,u=t;if(t=Oi,i.flags|=2048,i.firstEffect=i.lastEffect=null,null!==u&&"object"==typeof u&&"function"==typeof u.then){var s=u;if(0==(2&i.mode)){var c=i.alternate;c?(i.updateQueue=c.updateQueue,i.memoizedState=c.memoizedState,i.lanes=c.lanes):(i.updateQueue=null,i.memoizedState=null)}var f=0!=(1&zl.current),d=o;do{var p;if(p=13===d.tag){var m=d.memoizedState;if(null!==m)p=null!==m.dehydrated;else{var h=d.memoizedProps;p=void 0!==h.fallback&&(!0!==h.unstable_avoidThisFallback||!f)}}if(p){var y=d.updateQueue;if(null===y){var v=new Set;v.add(s),d.updateQueue=v}else y.add(s);if(0==(2&d.mode)){if(d.flags|=64,i.flags|=16384,i.flags&=-2981,1===i.tag)if(null===i.alternate)i.tag=17;else{var g=ol(-1,1);g.tag=2,il(i,g)}i.lanes|=1;break e}u=void 0,i=t;var b=l.pingCache;if(null===b?(b=l.pingCache=new li,u=new Set,b.set(s,u)):void 0===(u=b.get(s))&&(u=new Set,b.set(s,u)),!u.has(i)){u.add(i);var w=ju.bind(null,l,s,i);s.then(w,w)}d.flags|=4096,d.lanes=t;break e}d=d.return}while(null!==d);u=Error((Q(i.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Ri&&(Ri=2),u=ri(u,i),d=o;do{switch(d.tag){case 3:l=u,d.flags|=4096,t&=-t,d.lanes|=t,ul(d,oi(0,l,t));break e;case 1:l=u;var k=d.type,E=d.stateNode;if(0==(64&d.flags)&&("function"==typeof k.getDerivedStateFromError||null!==E&&"function"==typeof E.componentDidCatch&&(null===Wi||!Wi.has(E)))){d.flags|=4096,t&=-t,d.lanes|=t,ul(d,ii(d,l,t));break e}}d=d.return}while(null!==d)}xu(n)}catch(e){t=e,Pi===n&&null!==n&&(Pi=n=n.return);continue}break}}function wu(){var e=Si.current;return Si.current=Po,null===e?Po:e}function ku(e,t){var n=Ci;Ci|=16;var r=wu();for(Ni===e&&Oi===t||gu(e,t);;)try{Eu();break}catch(t){bu(e,t)}if(Za(),Ci=n,Si.current=r,null!==Pi)throw Error(o(261));return Ni=null,Oi=0,Ri}function Eu(){for(;null!==Pi;)Su(Pi)}function _u(){for(;null!==Pi&&!Sa();)Su(Pi)}function Su(e){var t=Vi(e.alternate,e,Ti);e.memoizedProps=e.pendingProps,null===t?xu(e):Pi=t,xi.current=null}function xu(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ti(n,t,Ti)))return void(Pi=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Ti)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=ni(t)))return n.flags&=2047,void(Pi=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Pi=t);Pi=t=e}while(null!==t);0===Ri&&(Ri=5)}function Cu(e){var t=Ua();return Va(99,Nu.bind(null,e,t)),null}function Nu(e,t){do{Ou()}while(null!==Ki);if(0!=(48&Ci))throw Error(o(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(o(177));e.callbackNode=null;var r=n.lanes|n.childLanes,a=r,l=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var i=e.eventTimes,u=e.expirationTimes;0<l;){var s=31-$t(l),c=1<<s;a[s]=0,i[s]=-1,u[s]=-1,l&=~c}if(null!==Zi&&0==(24&r)&&Zi.has(e)&&Zi.delete(e),e===Ni&&(Pi=Ni=null,Oi=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(a=Ci,Ci|=32,xi.current=null,Ir=Kt,pr(i=dr())){if("selectionStart"in i)u={start:i.selectionStart,end:i.selectionEnd};else e:if(u=(u=i.ownerDocument)&&u.defaultView||window,(c=u.getSelection&&u.getSelection())&&0!==c.rangeCount){u=c.anchorNode,l=c.anchorOffset,s=c.focusNode,c=c.focusOffset;try{u.nodeType,s.nodeType}catch(e){u=null;break e}var f=0,d=-1,p=-1,m=0,h=0,y=i,v=null;t:for(;;){for(var g;y!==u||0!==l&&3!==y.nodeType||(d=f+l),y!==s||0!==c&&3!==y.nodeType||(p=f+c),3===y.nodeType&&(f+=y.nodeValue.length),null!==(g=y.firstChild);)v=y,y=g;for(;;){if(y===i)break t;if(v===u&&++m===l&&(d=f),v===s&&++h===c&&(p=f),null!==(g=y.nextSibling))break;v=(y=v).parentNode}y=g}u=-1===d||-1===p?null:{start:d,end:p}}else u=null;u=u||{start:0,end:0}}else u=null;Mr={focusedElem:i,selectionRange:u},Kt=!1,au=null,lu=!1,$i=r;do{try{Pu()}catch(e){if(null===$i)throw Error(o(330));Au($i,e),$i=$i.nextEffect}}while(null!==$i);au=null,$i=r;do{try{for(i=e;null!==$i;){var b=$i.flags;if(16&b&&ve($i.stateNode,""),128&b){var w=$i.alternate;if(null!==w){var k=w.ref;null!==k&&("function"==typeof k?k(null):k.current=null)}}switch(1038&b){case 2:yi($i),$i.flags&=-3;break;case 6:yi($i),$i.flags&=-3,wi($i.alternate,$i);break;case 1024:$i.flags&=-1025;break;case 1028:$i.flags&=-1025,wi($i.alternate,$i);break;case 4:wi($i.alternate,$i);break;case 8:bi(i,u=$i);var E=u.alternate;mi(u),null!==E&&mi(E)}$i=$i.nextEffect}}catch(e){if(null===$i)throw Error(o(330));Au($i,e),$i=$i.nextEffect}}while(null!==$i);if(k=Mr,w=dr(),b=k.focusedElem,i=k.selectionRange,w!==b&&b&&b.ownerDocument&&fr(b.ownerDocument.documentElement,b)){null!==i&&pr(b)&&(w=i.start,void 0===(k=i.end)&&(k=w),"selectionStart"in b?(b.selectionStart=w,b.selectionEnd=Math.min(k,b.value.length)):(k=(w=b.ownerDocument||document)&&w.defaultView||window).getSelection&&(k=k.getSelection(),u=b.textContent.length,E=Math.min(i.start,u),i=void 0===i.end?E:Math.min(i.end,u),!k.extend&&E>i&&(u=i,i=E,E=u),u=cr(b,E),l=cr(b,i),u&&l&&(1!==k.rangeCount||k.anchorNode!==u.node||k.anchorOffset!==u.offset||k.focusNode!==l.node||k.focusOffset!==l.offset)&&((w=w.createRange()).setStart(u.node,u.offset),k.removeAllRanges(),E>i?(k.addRange(w),k.extend(l.node,l.offset)):(w.setEnd(l.node,l.offset),k.addRange(w))))),w=[];for(k=b;k=k.parentNode;)1===k.nodeType&&w.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof b.focus&&b.focus(),b=0;b<w.length;b++)(k=w[b]).element.scrollLeft=k.left,k.element.scrollTop=k.top}Kt=!!Ir,Mr=Ir=null,e.current=n,$i=r;do{try{for(b=e;null!==$i;){var _=$i.flags;if(36&_&&fi(b,$i.alternate,$i),128&_){w=void 0;var S=$i.ref;if(null!==S){var x=$i.stateNode;switch($i.tag){case 5:w=x;break;default:w=x}"function"==typeof S?S(w):S.current=w}}$i=$i.nextEffect}}catch(e){if(null===$i)throw Error(o(330));Au($i,e),$i=$i.nextEffect}}while(null!==$i);$i=null,Aa(),Ci=a}else e.current=n;if(Qi)Qi=!1,Ki=e,Yi=t;else for($i=r;null!==$i;)t=$i.nextEffect,$i.nextEffect=null,8&$i.flags&&((_=$i).sibling=null,_.stateNode=null),$i=t;if(0===(r=e.pendingLanes)&&(Wi=null),1===r?e===eu?Ji++:(Ji=0,eu=e):Ji=0,n=n.stateNode,wa&&"function"==typeof wa.onCommitFiberRoot)try{wa.onCommitFiberRoot(ba,n,void 0,64==(64&n.current.flags))}catch(e){}if(cu(e,Da()),Hi)throw Hi=!1,e=qi,qi=null,e;return 0!=(8&Ci)||Ha(),null}function Pu(){for(;null!==$i;){var e=$i.alternate;lu||null===au||(0!=(8&$i.flags)?Je($i,au)&&(lu=!0):13===$i.tag&&Ei(e,$i)&&Je($i,au)&&(lu=!0));var t=$i.flags;0!=(256&t)&&ci(e,$i),0==(512&t)||Qi||(Qi=!0,$a(97,(function(){return Ou(),null}))),$i=$i.nextEffect}}function Ou(){if(90!==Yi){var e=97<Yi?97:Yi;return Yi=90,Va(e,Ru)}return!1}function Tu(e,t){Xi.push(t,e),Qi||(Qi=!0,$a(97,(function(){return Ou(),null})))}function Lu(e,t){Gi.push(t,e),Qi||(Qi=!0,$a(97,(function(){return Ou(),null})))}function Ru(){if(null===Ki)return!1;var e=Ki;if(Ki=null,0!=(48&Ci))throw Error(o(331));var t=Ci;Ci|=32;var n=Gi;Gi=[];for(var r=0;r<n.length;r+=2){var a=n[r],l=n[r+1],i=a.destroy;if(a.destroy=void 0,"function"==typeof i)try{i()}catch(e){if(null===l)throw Error(o(330));Au(l,e)}}for(n=Xi,Xi=[],r=0;r<n.length;r+=2){a=n[r],l=n[r+1];try{var u=a.create;a.destroy=u()}catch(e){if(null===l)throw Error(o(330));Au(l,e)}}for(u=e.current.firstEffect;null!==u;)e=u.nextEffect,u.nextEffect=null,8&u.flags&&(u.sibling=null,u.stateNode=null),u=e;return Ci=t,Ha(),!0}function zu(e,t,n){il(e,t=oi(0,t=ri(n,t),1)),t=ou(),null!==(e=su(e,1))&&(Vt(e,1,t),cu(e,t))}function Au(e,t){if(3===e.tag)zu(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){zu(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Wi||!Wi.has(r))){var a=ii(n,e=ri(t,e),1);if(il(n,a),a=ou(),null!==(n=su(n,1)))Vt(n,1,a),cu(n,a);else if("function"==typeof r.componentDidCatch&&(null===Wi||!Wi.has(r)))try{r.componentDidCatch(t,e)}catch(e){}break}}n=n.return}}function ju(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=ou(),e.pingedLanes|=e.suspendedLanes&n,Ni===e&&(Oi&n)===n&&(4===Ri||3===Ri&&(62914560&Oi)===Oi&&500>Da()-Di?gu(e,0):Ii|=n),cu(e,t)}function Fu(e,t){var n=e.stateNode;null!==n&&n.delete(t),0==(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===Ua()?1:2:(0===nu&&(nu=Ai),0===(t=Ut(62914560&~nu))&&(t=4194304))),n=ou(),null!==(e=su(e,t))&&(Vt(e,t,n),cu(e,n))}function Iu(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Mu(e,t,n,r){return new Iu(e,t,n,r)}function Du(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Uu(e,t){var n=e.alternate;return null===n?((n=Mu(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Bu(e,t,n,r,a,l){var i=2;if(r=e,"function"==typeof e)Du(e)&&(i=1);else if("string"==typeof e)i=5;else e:switch(e){case S:return Vu(n.children,a,l,t);case F:i=8,a|=16;break;case x:i=8,a|=1;break;case C:return(e=Mu(12,n,t,8|a)).elementType=C,e.type=C,e.lanes=l,e;case T:return(e=Mu(13,n,t,a)).type=T,e.elementType=T,e.lanes=l,e;case L:return(e=Mu(19,n,t,a)).elementType=L,e.lanes=l,e;case I:return $u(n,a,l,t);case M:return(e=Mu(24,n,t,a)).elementType=M,e.lanes=l,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case N:i=10;break e;case P:i=9;break e;case O:i=11;break e;case R:i=14;break e;case z:i=16,r=null;break e;case A:i=22;break e}throw Error(o(130,null==e?e:typeof e,""))}return(t=Mu(i,n,t,a)).elementType=e,t.type=r,t.lanes=l,t}function Vu(e,t,n,r){return(e=Mu(7,e,r,t)).lanes=n,e}function $u(e,t,n,r){return(e=Mu(23,e,r,t)).elementType=I,e.lanes=n,e}function Hu(e,t,n){return(e=Mu(6,e,null,t)).lanes=n,e}function qu(e,t,n){return(t=Mu(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Wu(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Bt(0),this.expirationTimes=Bt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Bt(0),this.mutableSourceEagerHydrationData=null}function Qu(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:_,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}function Ku(e,t,n,r){var a=t.current,l=ou(),i=iu(a);e:if(n){t:{if(Ye(n=n._reactInternals)!==n||1!==n.tag)throw Error(o(170));var u=n;do{switch(u.tag){case 3:u=u.stateNode.context;break t;case 1:if(pa(u.type)){u=u.stateNode.__reactInternalMemoizedMergedChildContext;break t}}u=u.return}while(null!==u);throw Error(o(171))}if(1===n.tag){var s=n.type;if(pa(s)){n=ya(n,s,u);break e}}n=u}else n=ua;return null===t.context?t.context=n:t.pendingContext=n,(t=ol(l,i)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),il(a,t),uu(a,i,l),i}function Yu(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:default:return e.child.stateNode}}function Xu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function Gu(e,t){Xu(e,t),(e=e.alternate)&&Xu(e,t)}function Zu(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Wu(e,t,null!=n&&!0===n.hydrate),t=Mu(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,al(t),e[Xr]=n.current,Pr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function Ju(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function es(e,t,n,r,a){var l=n._reactRootContainer;if(l){var o=l._internalRoot;if("function"==typeof a){var i=a;a=function(){var e=Yu(o);i.call(e)}}Ku(t,o,e,a)}else{if(l=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new Zu(e,0,t?{hydrate:!0}:void 0)}(n,r),o=l._internalRoot,"function"==typeof a){var u=a;a=function(){var e=Yu(o);u.call(e)}}hu((function(){Ku(t,o,e,a)}))}return Yu(o)}function ts(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Ju(t))throw Error(o(200));return Qu(e,t,null,n)}Vi=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||ca.current)zo=!0;else{if(0==(n&r)){switch(zo=!1,t.tag){case 3:$o(t),$l();break;case 5:Ll(t);break;case 1:pa(t.type)&&va(t);break;case 4:Ol(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;ia(Ka,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Ko(e,t,n):(ia(zl,1&zl.current),null!==(t=Jo(e,t,n))?t.sibling:null);ia(zl,1&zl.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return Zo(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),ia(zl,zl.current),r)break;return null;case 23:case 24:return t.lanes=0,Mo(e,t,n)}return Jo(e,t,n)}zo=0!=(16384&e.flags)}else zo=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=da(t,sa.current),tl(t,n),a=no(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,pa(r)){var l=!0;va(t)}else l=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,al(t);var i=r.getDerivedStateFromProps;"function"==typeof i&&dl(t,r,i,e),a.updater=pl,t.stateNode=a,a._reactInternals=t,vl(t,r,e,n),t=Vo(null,t,r,!0,l,n)}else t.tag=0,Ao(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(l=a._init)(a._payload),t.type=a,l=t.tag=function(e){if("function"==typeof e)return Du(e)?1:0;if(null!=e){if((e=e.$$typeof)===O)return 11;if(e===R)return 14}return 2}(a),e=Qa(a,e),l){case 0:t=Uo(null,t,a,e,n);break e;case 1:t=Bo(null,t,a,e,n);break e;case 11:t=jo(null,t,a,e,n);break e;case 14:t=Fo(null,t,a,Qa(a.type,e),r,n);break e}throw Error(o(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,Uo(e,t,r,a=t.elementType===r?a:Qa(r,a),n);case 1:return r=t.type,a=t.pendingProps,Bo(e,t,r,a=t.elementType===r?a:Qa(r,a),n);case 3:if($o(t),r=t.updateQueue,null===e||null===r)throw Error(o(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,ll(e,t),sl(t,r,null,n),(r=t.memoizedState.element)===a)$l(),t=Jo(e,t,n);else{if((l=(a=t.stateNode).hydrate)&&(Fl=Hr(t.stateNode.containerInfo.firstChild),jl=t,l=Il=!0),l){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(l=e[a])._workInProgressVersionPrimary=e[a+1],Hl.push(l);for(n=_l(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Ao(e,t,r,n),$l();t=t.child}return t;case 5:return Ll(t),null===e&&Ul(t),r=t.type,a=t.pendingProps,l=null!==e?e.memoizedProps:null,i=a.children,Ur(r,a)?i=null:null!==l&&Ur(r,l)&&(t.flags|=16),Do(e,t),Ao(e,t,i,n),t.child;case 6:return null===e&&Ul(t),null;case 13:return Ko(e,t,n);case 4:return Ol(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=El(t,null,r,n):Ao(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,jo(e,t,r,a=t.elementType===r?a:Qa(r,a),n);case 7:return Ao(e,t,t.pendingProps,n),t.child;case 8:case 12:return Ao(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,i=t.memoizedProps,l=a.value;var u=t.type._context;if(ia(Ka,u._currentValue),u._currentValue=l,null!==i)if(u=i.value,0==(l=or(u,l)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(u,l):1073741823))){if(i.children===a.children&&!ca.current){t=Jo(e,t,n);break e}}else for(null!==(u=t.child)&&(u.return=t);null!==u;){var s=u.dependencies;if(null!==s){i=u.child;for(var c=s.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&l)){1===u.tag&&((c=ol(-1,n&-n)).tag=2,il(u,c)),u.lanes|=n,null!==(c=u.alternate)&&(c.lanes|=n),el(u.return,n),s.lanes|=n;break}c=c.next}}else i=10===u.tag&&u.type===t.type?null:u.child;if(null!==i)i.return=u;else for(i=u;null!==i;){if(i===t){i=null;break}if(null!==(u=i.sibling)){u.return=i.return,i=u;break}i=i.return}u=i}Ao(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(l=t.pendingProps).children,tl(t,n),r=r(a=nl(a,l.unstable_observedBits)),t.flags|=1,Ao(e,t,r,n),t.child;case 14:return l=Qa(a=t.type,t.pendingProps),Fo(e,t,a,l=Qa(a.type,l),r,n);case 15:return Io(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Qa(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,pa(r)?(e=!0,va(t)):e=!1,tl(t,n),hl(t,r,a),vl(t,r,a,n),Vo(null,t,r,!0,e,n);case 19:return Zo(e,t,n);case 23:case 24:return Mo(e,t,n)}throw Error(o(156,t.tag))},Zu.prototype.render=function(e){Ku(e,this._internalRoot,null,null)},Zu.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Ku(null,e,null,(function(){t[Xr]=null}))},et=function(e){13===e.tag&&(uu(e,4,ou()),Gu(e,4))},tt=function(e){13===e.tag&&(uu(e,67108864,ou()),Gu(e,67108864))},nt=function(e){if(13===e.tag){var t=ou(),n=iu(e);uu(e,n,t),Gu(e,n)}},rt=function(e,t){return t()},Ce=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=ta(r);if(!a)throw Error(o(90));G(r),ne(r,a)}}}break;case"textarea":se(e,n);break;case"select":null!=(t=n.value)&&oe(e,!!n.multiple,t,!1)}},Re=mu,ze=function(e,t,n,r,a){var l=Ci;Ci|=4;try{return Va(98,e.bind(null,t,n,r,a))}finally{0===(Ci=l)&&(Bi(),Ha())}},Ae=function(){0==(49&Ci)&&(function(){if(null!==Zi){var e=Zi;Zi=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,cu(e,Da())}))}Ha()}(),Ou())},je=function(e,t){var n=Ci;Ci|=2;try{return e(t)}finally{0===(Ci=n)&&(Bi(),Ha())}};var ns={Events:[Jr,ea,ta,Te,Le,Ou,{current:!1}]},rs={findFiberByHostInstance:Zr,bundleType:0,version:"17.0.1",rendererPackageName:"react-dom"},as={bundleType:rs.bundleType,version:rs.version,rendererPackageName:rs.rendererPackageName,rendererConfig:rs.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:k.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Ze(e))?null:e.stateNode},findFiberByHostInstance:rs.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var ls=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!ls.isDisabled&&ls.supportsFiber)try{ba=ls.inject(as),wa=ls}catch(he){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ns,t.createPortal=ts,t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(o(188));throw Error(o(268,Object.keys(e)))}return null===(e=Ze(t))?null:e.stateNode},t.flushSync=function(e,t){var n=Ci;if(0!=(48&n))return e(t);Ci|=1;try{if(e)return Va(99,e.bind(null,t))}finally{Ci=n,Ha()}},t.hydrate=function(e,t,n){if(!Ju(t))throw Error(o(200));return es(null,e,t,!0,n)},t.render=function(e,t,n){if(!Ju(t))throw Error(o(200));return es(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Ju(e))throw Error(o(40));return!!e._reactRootContainer&&(hu((function(){es(null,null,e,!1,(function(){e._reactRootContainer=null,e[Xr]=null}))})),!0)},t.unstable_batchedUpdates=mu,t.unstable_createPortal=function(e,t){return ts(e,t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)},t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Ju(n))throw Error(o(200));if(null==e||void 0===e._reactInternals)throw Error(o(38));return es(e,t,n,!1,r)},t.version="17.0.1"},935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(448)},408:(e,t,n)=>{"use strict";var r=n(418),a=60103,l=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var o=60109,i=60110,u=60112;t.Suspense=60113;var s=60115,c=60116;if("function"==typeof Symbol&&Symbol.for){var f=Symbol.for;a=f("react.element"),l=f("react.portal"),t.Fragment=f("react.fragment"),t.StrictMode=f("react.strict_mode"),t.Profiler=f("react.profiler"),o=f("react.provider"),i=f("react.context"),u=f("react.forward_ref"),t.Suspense=f("react.suspense"),s=f("react.memo"),c=f("react.lazy")}var d="function"==typeof Symbol&&Symbol.iterator;function p(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h={};function y(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function v(){}function g(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(p(85));this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=y.prototype;var b=g.prototype=new v;b.constructor=g,r(b,y.prototype),b.isPureReactComponent=!0;var w={current:null},k=Object.prototype.hasOwnProperty,E={key:!0,ref:!0,__self:!0,__source:!0};function _(e,t,n){var r,l={},o=null,i=null;if(null!=t)for(r in void 0!==t.ref&&(i=t.ref),void 0!==t.key&&(o=""+t.key),t)k.call(t,r)&&!E.hasOwnProperty(r)&&(l[r]=t[r]);var u=arguments.length-2;if(1===u)l.children=n;else if(1<u){for(var s=Array(u),c=0;c<u;c++)s[c]=arguments[c+2];l.children=s}if(e&&e.defaultProps)for(r in u=e.defaultProps)void 0===l[r]&&(l[r]=u[r]);return{$$typeof:a,type:e,key:o,ref:i,props:l,_owner:w.current}}function S(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var x=/\/+/g;function C(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function N(e,t,n,r,o){var i=typeof e;"undefined"!==i&&"boolean"!==i||(e=null);var u=!1;if(null===e)u=!0;else switch(i){case"string":case"number":u=!0;break;case"object":switch(e.$$typeof){case a:case l:u=!0}}if(u)return o=o(u=e),e=""===r?"."+C(u,0):r,Array.isArray(o)?(n="",null!=e&&(n=e.replace(x,"$&/")+"/"),N(o,t,n,"",(function(e){return e}))):null!=o&&(S(o)&&(o=function(e,t){return{$$typeof:a,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(o,n+(!o.key||u&&u.key===o.key?"":(""+o.key).replace(x,"$&/")+"/")+e)),t.push(o)),1;if(u=0,r=""===r?".":r+":",Array.isArray(e))for(var s=0;s<e.length;s++){var c=r+C(i=e[s],s);u+=N(i,t,n,c,o)}else if("function"==typeof(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=d&&e[d]||e["@@iterator"])?e:null}(e)))for(e=c.call(e),s=0;!(i=e.next()).done;)u+=N(i=i.value,t,n,c=r+C(i,s++),o);else if("object"===i)throw t=""+e,Error(p(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return u}function P(e,t,n){if(null==e)return e;var r=[],a=0;return N(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function O(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var T={current:null};function L(){var e=T.current;if(null===e)throw Error(p(321));return e}var R={ReactCurrentDispatcher:T,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:P,forEach:function(e,t,n){P(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return P(e,(function(){t++})),t},toArray:function(e){return P(e,(function(e){return e}))||[]},only:function(e){if(!S(e))throw Error(p(143));return e}},t.Component=y,t.PureComponent=g,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=R,t.cloneElement=function(e,t,n){if(null==e)throw Error(p(267,e));var l=r({},e.props),o=e.key,i=e.ref,u=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,u=w.current),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps)var s=e.type.defaultProps;for(c in t)k.call(t,c)&&!E.hasOwnProperty(c)&&(l[c]=void 0===t[c]&&void 0!==s?s[c]:t[c])}var c=arguments.length-2;if(1===c)l.children=n;else if(1<c){s=Array(c);for(var f=0;f<c;f++)s[f]=arguments[f+2];l.children=s}return{$$typeof:a,type:e.type,key:o,ref:i,props:l,_owner:u}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:i,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:o,_context:e},e.Consumer=e},t.createElement=_,t.createFactory=function(e){var t=_.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:u,render:e}},t.isValidElement=S,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:O}},t.memo=function(e,t){return{$$typeof:s,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return L().useCallback(e,t)},t.useContext=function(e,t){return L().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return L().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return L().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return L().useLayoutEffect(e,t)},t.useMemo=function(e,t){return L().useMemo(e,t)},t.useReducer=function(e,t,n){return L().useReducer(e,t,n)},t.useRef=function(e){return L().useRef(e)},t.useState=function(e){return L().useState(e)},t.version="17.0.1"},294:(e,t,n)=>{"use strict";e.exports=n(408)},53:(e,t)=>{"use strict";var n,r,a,l;if("object"==typeof performance&&"function"==typeof performance.now){var o=performance;t.unstable_now=function(){return o.now()}}else{var i=Date,u=i.now();t.unstable_now=function(){return i.now()-u}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var s=null,c=null,f=function(){if(null!==s)try{var e=t.unstable_now();s(!0,e),s=null}catch(e){throw setTimeout(f,0),e}};n=function(e){null!==s?setTimeout(n,0,e):(s=e,setTimeout(f,0))},r=function(e,t){c=setTimeout(e,t)},a=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},l=t.unstable_forceFrameRate=function(){}}else{var d=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var m=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof m&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var h=!1,y=null,v=-1,g=5,b=0;t.unstable_shouldYield=function(){return t.unstable_now()>=b},l=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):g=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,k=w.port2;w.port1.onmessage=function(){if(null!==y){var e=t.unstable_now();b=e+g;try{y(!0,e)?k.postMessage(null):(h=!1,y=null)}catch(e){throw k.postMessage(null),e}}else h=!1},n=function(e){y=e,h||(h=!0,k.postMessage(null))},r=function(e,n){v=d((function(){e(t.unstable_now())}),n)},a=function(){p(v),v=-1}}function E(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<x(a,t)))break e;e[r]=t,e[n]=a,n=r}}function _(e){return void 0===(e=e[0])?null:e}function S(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var l=2*(r+1)-1,o=e[l],i=l+1,u=e[i];if(void 0!==o&&0>x(o,n))void 0!==u&&0>x(u,o)?(e[r]=u,e[i]=n,r=i):(e[r]=o,e[l]=n,r=l);else{if(!(void 0!==u&&0>x(u,n)))break e;e[r]=u,e[i]=n,r=i}}}return t}return null}function x(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],N=[],P=1,O=null,T=3,L=!1,R=!1,z=!1;function A(e){for(var t=_(N);null!==t;){if(null===t.callback)S(N);else{if(!(t.startTime<=e))break;S(N),t.sortIndex=t.expirationTime,E(C,t)}t=_(N)}}function j(e){if(z=!1,A(e),!R)if(null!==_(C))R=!0,n(F);else{var t=_(N);null!==t&&r(j,t.startTime-e)}}function F(e,n){R=!1,z&&(z=!1,a()),L=!0;var l=T;try{for(A(n),O=_(C);null!==O&&(!(O.expirationTime>n)||e&&!t.unstable_shouldYield());){var o=O.callback;if("function"==typeof o){O.callback=null,T=O.priorityLevel;var i=o(O.expirationTime<=n);n=t.unstable_now(),"function"==typeof i?O.callback=i:O===_(C)&&S(C),A(n)}else S(C);O=_(C)}if(null!==O)var u=!0;else{var s=_(N);null!==s&&r(j,s.startTime-n),u=!1}return u}finally{O=null,T=l,L=!1}}var I=l;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){R||L||(R=!0,n(F))},t.unstable_getCurrentPriorityLevel=function(){return T},t.unstable_getFirstCallbackNode=function(){return _(C)},t.unstable_next=function(e){switch(T){case 1:case 2:case 3:var t=3;break;default:t=T}var n=T;T=t;try{return e()}finally{T=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=I,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=T;T=e;try{return t()}finally{T=n}},t.unstable_scheduleCallback=function(e,l,o){var i=t.unstable_now();switch(o="object"==typeof o&&null!==o&&"number"==typeof(o=o.delay)&&0<o?i+o:i,e){case 1:var u=-1;break;case 2:u=250;break;case 5:u=1073741823;break;case 4:u=1e4;break;default:u=5e3}return e={id:P++,callback:l,priorityLevel:e,startTime:o,expirationTime:u=o+u,sortIndex:-1},o>i?(e.sortIndex=o,E(N,e),null===_(C)&&e===_(N)&&(z?a():z=!0,r(j,o-i))):(e.sortIndex=u,E(C,e),R||L||(R=!0,n(F))),e},t.unstable_wrapCallback=function(e){var t=T;return function(){var n=T;T=t;try{return e.apply(this,arguments)}finally{T=n}}}},840:(e,t,n)=>{"use strict";e.exports=n(53)},975:(e,t,n)=>{var r;!function(){"use strict";var a={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function l(e){return i(s(e),arguments)}function o(e,t){return l.apply(null,[e].concat(t||[]))}function i(e,t){var n,r,o,i,u,s,c,f,d,p=1,m=e.length,h="";for(r=0;r<m;r++)if("string"==typeof e[r])h+=e[r];else if("object"==typeof e[r]){if((i=e[r]).keys)for(n=t[p],o=0;o<i.keys.length;o++){if(null==n)throw new Error(l('[sprintf] Cannot access property "%s" of undefined value "%s"',i.keys[o],i.keys[o-1]));n=n[i.keys[o]]}else n=i.param_no?t[i.param_no]:t[p++];if(a.not_type.test(i.type)&&a.not_primitive.test(i.type)&&n instanceof Function&&(n=n()),a.numeric_arg.test(i.type)&&"number"!=typeof n&&isNaN(n))throw new TypeError(l("[sprintf] expecting number but found %T",n));switch(a.number.test(i.type)&&(f=n>=0),i.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,i.width?parseInt(i.width):0);break;case"e":n=i.precision?parseFloat(n).toExponential(i.precision):parseFloat(n).toExponential();break;case"f":n=i.precision?parseFloat(n).toFixed(i.precision):parseFloat(n);break;case"g":n=i.precision?String(Number(n.toPrecision(i.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=i.precision?n.substring(0,i.precision):n;break;case"t":n=String(!!n),n=i.precision?n.substring(0,i.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=i.precision?n.substring(0,i.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=i.precision?n.substring(0,i.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}a.json.test(i.type)?h+=n:(!a.number.test(i.type)||f&&!i.sign?d="":(d=f?"+":"-",n=n.toString().replace(a.sign,"")),s=i.pad_char?"0"===i.pad_char?"0":i.pad_char.charAt(1):" ",c=i.width-(d+n).length,u=i.width&&c>0?s.repeat(c):"",h+=i.align?d+n+u:"0"===s?d+u+n:u+d+n)}return h}var u=Object.create(null);function s(e){if(u[e])return u[e];for(var t,n=e,r=[],l=0;n;){if(null!==(t=a.text.exec(n)))r.push(t[0]);else if(null!==(t=a.modulo.exec(n)))r.push("%");else{if(null===(t=a.placeholder.exec(n)))throw new SyntaxError("[sprintf] unexpected placeholder");if(t[2]){l|=1;var o=[],i=t[2],s=[];if(null===(s=a.key.exec(i)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(o.push(s[1]);""!==(i=i.substring(s[0].length));)if(null!==(s=a.key_access.exec(i)))o.push(s[1]);else{if(null===(s=a.index_access.exec(i)))throw new SyntaxError("[sprintf] failed to parse named argument key");o.push(s[1])}t[2]=o}else l|=2;if(3===l)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");r.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}n=n.substring(t[0].length)}return u[e]=r}"undefined"!=typeof window&&(window.sprintf=l,window.vsprintf=o,void 0===(r=function(){return{sprintf:l,vsprintf:o}}.call(t,n,t,e))||(e.exports=r))}()}},t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e,t,r,a,l=n(294),o=n(935),i=n(697),u=n.n(i),s=n(588),c=n.n(s);function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n(975),c()(console.error),e={"(":9,"!":8,"*":7,"/":7,"%":7,"+":6,"-":6,"<":5,"<=":5,">":5,">=":5,"==":4,"!=":4,"&&":3,"||":2,"?":1,"?:":1},t=["(","?"],r={")":["("],":":["?","?:"]},a=/<=|>=|==|!=|&&|\|\||\?:|\(|!|\*|\/|%|\+|-|<|>|\?|\)|:/;var d={"!":function(e){return!e},"*":function(e,t){return e*t},"/":function(e,t){return e/t},"%":function(e,t){return e%t},"+":function(e,t){return e+t},"-":function(e,t){return e-t},"<":function(e,t){return e<t},"<=":function(e,t){return e<=t},">":function(e,t){return e>t},">=":function(e,t){return e>=t},"==":function(e,t){return e===t},"!=":function(e,t){return e!==t},"&&":function(e,t){return e&&t},"||":function(e,t){return e||t},"?:":function(e,t,n){if(e)throw t;return n}};var p={contextDelimiter:"",onMissingKey:null};function m(e,t){var n;for(n in this.data=e,this.pluralForms={},this.options={},p)this.options[n]=void 0!==t&&n in t?t[n]:p[n]}function h(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 y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?h(Object(n),!0).forEach((function(t){f(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}m.prototype.getPluralForm=function(n,l){var o,i,u,s,c=this.pluralForms[n];return c||("function"!=typeof(u=(o=this.data[n][""])["Plural-Forms"]||o["plural-forms"]||o.plural_forms)&&(i=function(e){var t,n,r;for(t=e.split(";"),n=0;n<t.length;n++)if(0===(r=t[n].trim()).indexOf("plural="))return r.substr(7)}(o["Plural-Forms"]||o["plural-forms"]||o.plural_forms),s=function(n){var l=function(n){for(var l,o,i,u,s=[],c=[];l=n.match(a);){for(o=l[0],(i=n.substr(0,l.index).trim())&&s.push(i);u=c.pop();){if(r[o]){if(r[o][0]===u){o=r[o][1]||o;break}}else if(t.indexOf(u)>=0||e[u]<e[o]){c.push(u);break}s.push(u)}r[o]||c.push(o),n=n.substr(l.index+o.length)}return(n=n.trim())&&s.push(n),s.concat(c.reverse())}(n);return function(e){return function(e,t){var n,r,a,l,o,i,u=[];for(n=0;n<e.length;n++){if(o=e[n],l=d[o]){for(r=l.length,a=Array(r);r--;)a[r]=u.pop();try{i=l.apply(null,a)}catch(e){return e}}else i=t.hasOwnProperty(o)?t[o]:+o;u.push(i)}return u[0]}(l,e)}}(i),u=function(e){return+s({n:e})}),c=this.pluralForms[n]=u),c(l)},m.prototype.dcnpgettext=function(e,t,n,r,a){var l,o,i;return l=void 0===a?0:this.getPluralForm(e,a),o=n,t&&(o=t+this.options.contextDelimiter+n),(i=this.data[e][o])&&i[l]?i[l]:(this.options.onMissingKey&&this.options.onMissingKey(n,e),0===l?n:r)};var v={"":{plural_forms:function(e){return 1===e?0:1}}};const g=function(e){return"string"!=typeof e||""===e?(console.error("The namespace must be a non-empty string."),!1):!!/^[a-zA-Z][a-zA-Z0-9_.\-\/]*$/.test(e)||(console.error("The namespace can only contain numbers, letters, dashes, periods, underscores and slashes."),!1)},b=function(e){return"string"!=typeof e||""===e?(console.error("The hook name must be a non-empty string."),!1):/^__/.test(e)?(console.error("The hook name cannot begin with `__`."),!1):!!/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(e)||(console.error("The hook name can only contain numbers, letters, dashes, periods and underscores."),!1)},w=function(e,t){return function(n,r,a){var l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:10,o=e[t];if(b(n)&&g(r))if("function"==typeof a)if("number"==typeof l){var i={callback:a,priority:l,namespace:r};if(o[n]){var u,s=o[n].handlers;for(u=s.length;u>0&&!(l>=s[u-1].priority);u--);u===s.length?s[u]=i:s.splice(u,0,i),o.__current.forEach((function(e){e.name===n&&e.currentIndex>=u&&e.currentIndex++}))}else o[n]={handlers:[i],runs:0};"hookAdded"!==n&&e.doAction("hookAdded",n,r,a,l)}else console.error("If specified, the hook priority must be a number.");else console.error("The hook callback must be a function.")}},k=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return function(r,a){var l=e[t];if(b(r)&&(n||g(a))){if(!l[r])return 0;var o=0;if(n)o=l[r].handlers.length,l[r]={runs:l[r].runs,handlers:[]};else for(var i=l[r].handlers,u=function(e){i[e].namespace===a&&(i.splice(e,1),o++,l.__current.forEach((function(t){t.name===r&&t.currentIndex>=e&&t.currentIndex--})))},s=i.length-1;s>=0;s--)u(s);return"hookRemoved"!==r&&e.doAction("hookRemoved",r,a),o}}},E=function(e,t){return function(n,r){var a=e[t];return void 0!==r?n in a&&a[n].handlers.some((function(e){return e.namespace===r})):n in a}},_=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return function(r){var a=e[t];a[r]||(a[r]={handlers:[],runs:0}),a[r].runs++;for(var l=a[r].handlers,o=arguments.length,i=new Array(o>1?o-1:0),u=1;u<o;u++)i[u-1]=arguments[u];if(!l||!l.length)return n?i[0]:void 0;var s={name:r,currentIndex:0};for(a.__current.push(s);s.currentIndex<l.length;){var c=l[s.currentIndex],f=c.callback.apply(null,i);n&&(i[0]=f),s.currentIndex++}return a.__current.pop(),n?i[0]:void 0}},S=function(e,t){return function(){var n,r,a=e[t];return null!==(n=null===(r=a.__current[a.__current.length-1])||void 0===r?void 0:r.name)&&void 0!==n?n:null}},x=function(e,t){return function(n){var r=e[t];return void 0===n?void 0!==r.__current[0]:!!r.__current[0]&&n===r.__current[0].name}},C=function(e,t){return function(n){var r=e[t];if(b(n))return r[n]&&r[n].runs?r[n].runs:0}};var N,P,O,T,L,R,z=new function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.actions=Object.create(null),this.actions.__current=[],this.filters=Object.create(null),this.filters.__current=[],this.addAction=w(this,"actions"),this.addFilter=w(this,"filters"),this.removeAction=k(this,"actions"),this.removeFilter=k(this,"filters"),this.hasAction=E(this,"actions"),this.hasFilter=E(this,"filters"),this.removeAllActions=k(this,"actions",!0),this.removeAllFilters=k(this,"filters",!0),this.doAction=_(this,"actions"),this.applyFilters=_(this,"filters",!0),this.currentAction=S(this,"actions"),this.currentFilter=S(this,"filters"),this.doingAction=x(this,"actions"),this.doingFilter=x(this,"filters"),this.didAction=C(this,"actions"),this.didFilter=C(this,"filters")},A=(z.addAction,z.addFilter,z.removeAction,z.removeFilter,z.hasAction,z.hasFilter,z.removeAllActions,z.removeAllFilters,z.doAction,z.applyFilters),j=(z.currentAction,z.currentFilter,z.doingAction,z.doingFilter,z.didAction,z.didFilter,z.actions,z.filters,N={applyFilters:A},P=new m({}),T=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default",t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0;return P.data[e]||O(void 0,e),P.dcnpgettext(e,t,n,r,a)},L=function(e){return void 0===e?"default":e},{setLocaleData:O=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default";P.data[t]=y(y(y({},v),P.data[t]),e),P.data[t][""]=y(y({},v[""]),P.data[t][""])},__:function(e,t){var n=T(t,void 0,e);return void 0===N?n:(n=N.applyFilters("i18n.gettext",n,e,t),N.applyFilters("i18n.gettext_"+L(t),n,e,t))},_x:R=function(e,t,n){var r=T(n,t,e);return void 0===N?r:(r=N.applyFilters("i18n.gettext_with_context",r,e,t,n),N.applyFilters("i18n.gettext_with_context_"+L(n),r,e,t,n))},_n:function(e,t,n,r){var a=T(r,void 0,e,t,n);return void 0===N?a:(a=N.applyFilters("i18n.ngettext",a,e,t,n,r),N.applyFilters("i18n.ngettext_"+L(r),a,e,t,n,r))},_nx:function(e,t,n,r,a){var l=T(a,r,e,t,n);return void 0===N?l:(l=N.applyFilters("i18n.ngettext_with_context",l,e,t,n,r,a),N.applyFilters("i18n.ngettext_with_context_"+L(a),l,e,t,n,r,a))},isRTL:function(){return"rtl"===R("ltr","text direction")}}),F=(j.setLocaleData.bind(j),j.__.bind(j)),I=(j._x.bind(j),j._n.bind(j),j._nx.bind(j),j.isRTL.bind(j),n(669)),M=n.n(I),D=window.Simple301Redirects,U=D.nonce,B=D.rest_url,V=D.namespace,$=D.plugin_root_url,H=(D.plugin_root_path,D.site_url),q=(D.route_path,D.is_betterlinks_activated),W=D.hide_btl_notice,Q=M().create({baseURL:B,headers:{"content-type":"application/json","X-WP-Nonce":U}}),K=function(e){var t=document.createElement("input");t.value=e,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)},Y=function(e){var t=new FormData;return t.append("action","simple301redirects/admin/activate_plugin"),t.append("security",U),t.append("basename",e),M().post(ajaxurl,t).then((function(e){return e.data}),(function(e){console.log(e)}))};function X(e){return l.createElement(l.Fragment,null,l.createElement("div",{className:"simple301redirects__topbar"},l.createElement("div",{className:"simple301redirects__topbar__logo"},l.createElement("img",{width:"40",src:$+"assets/images/logo.svg",alt:"logo"})),l.createElement("h3",{className:"simple301redirects__topbar__title"},F("Simple 301 Redirects","simple-301-redirects"))))}function G(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,a=!1,l=void 0;try{for(var o,i=e[Symbol.iterator]();!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,l=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw l}}return n}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Z(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Z(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Z(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function J(e){var t=G((0,l.useState)(""),2),n=t[0],r=t[1],a=G((0,l.useState)(!1),2),o=a[0],i=a[1],u=G((0,l.useState)(!1),2),s=u[0],c=u[1];return(0,l.useEffect)((function(){var e=new FormData;return e.append("action","simple301redirects/admin/get_wildcard"),e.append("security",U),M().post(ajaxurl,e).then((function(e){i("true"==e.data.data),c(!0)}),(function(e){console.log(e)}))}),[]),l.createElement(l.Fragment,null,s&&l.createElement("div",{className:"simple301redirects__wildcards"},l.createElement("input",{type:"checkbox",name:"wildcard",id:"wildcard",defaultChecked:o,onChange:function(){return function(e){r("Saving..."),i(e);var t=new FormData;return t.append("action","simple301redirects/admin/wildcard"),t.append("security",U),t.append("toggle",e),M().post(ajaxurl,t).then((function(e){e.data.success&&setTimeout((function(){r("Saved!"),setTimeout((function(){r("")}),3e3)}),1e3)}),(function(e){console.log(e)}))}(!o)}}),l.createElement("label",{htmlFor:"wildcard"},F("Use Wildcards?","simple-301-redirects")," ",n)))}function ee(e,t,n,r,a,l,o){try{var i=e[l](o),u=i.value}catch(e){return void n(e)}i.done?t(u):Promise.resolve(u).then(r,a)}function te(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}X.propTypes={},X.defaultProps={},J.propTypes={},J.defaultProps={};var ne={label:u().string};function re(e){var t,n,r=e.label,a=(t=(0,l.useState)(r),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,a=!1,l=void 0;try{for(var o,i=e[Symbol.iterator]();!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,l=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw l}}return n}}(t,n)||function(e,t){if(e){if("string"==typeof e)return te(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?te(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],i=a[1],u=function(){var e,t=(e=regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i("Installing..."),("betterlinks",t=void 0,t=new FormData,t.append("action","simple301redirects/admin/install_plugin"),t.append("security",U),t.append("slug","betterlinks"),M().post(ajaxurl,t).then((function(e){return e.data}),(function(e){console.log(e)}))).then((function(e){i(e.data)})).then((function(){i(o+" Activating..."),Y("betterlinks/betterlinks.php").then((function(e){i(e.data),setTimeout((function(){window.location.reload()}),1e3)}))}));case 2:case"end":return e.stop()}var t}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,a){var l=e.apply(t,n);function o(e){ee(l,r,a,o,i,"next",e)}function i(e){ee(l,r,a,o,i,"throw",e)}o(void 0)}))});return function(){return t.apply(this,arguments)}}();return l.createElement(l.Fragment,null,l.createElement("button",{onClick:u},o))}function ae(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}re.propTypes=ne,re.defaultProps={label:""};const le=function(e){var t,n,r=(t=(0,l.useState)(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,a=!1,l=void 0;try{for(var o,i=e[Symbol.iterator]();!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,l=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw l}}return n}}(t,n)||function(e,t){if(e){if("string"==typeof e)return ae(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ae(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),a=r[0],o=r[1];return l.createElement(l.Fragment,null,l.createElement("button",{className:"simple301redirects__icon__button",onClick:function(){return function(e,t){/^((http|https|ftp):\/\/)/.test(t)?K(t):K(e+t),o(!0),window.setTimeout((function(){o(!1)}),3e3)}(H,e.request)}},a?l.createElement("span",{className:"dashicons dashicons-yes"}):l.createElement("img",{src:$+"assets/images/icon-copy.svg",alt:"copy"})))};function oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}const ie=function(e){var t,n,r=e.localClickHandler,a=(t=(0,l.useState)(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,a=!1,l=void 0;try{for(var o,i=e[Symbol.iterator]();!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,l=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw l}}return n}}(t,n)||function(e,t){if(e){if("string"==typeof e)return oe(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?oe(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],i=a[1],u=(0,l.useRef)(null),s=(0,l.useRef)(null),c=(0,l.useRef)(null),f=(0,l.useRef)(null),d=(0,l.useRef)(null);return l.createElement(l.Fragment,null,l.createElement("div",{className:"Simple301Redirects__loading-dock",ref:u},l.createElement("svg",{id:"Simple301Redirects__load-b",x:"0px",y:"0px",viewBox:"0 0 150 150",ref:f},l.createElement("circle",{className:"Simple301Redirects__loading-inner",cx:75,cy:75,r:60})),l.createElement("svg",{id:"Simple301Redirects__load",x:"0px",y:"0px",viewBox:"0 0 150 150",ref:c},l.createElement("circle",{className:"Simple301Redirects__loading-inner",cx:75,cy:75,r:60})),l.createElement("button",{className:"Simple301Redirects__loading__button__submit",ref:s,onClick:function(){return r("update"),void(o||(i(!0),s.current.classList.remove("Simple301Redirects__return"),s.current.blur(),u.current.classList.add("Simple301Redirects__loaded"),c.current.style.display="initial",f.current.style.display="initial",setTimeout((function(){c.current.style.opacity=1}),225),setTimeout((function(){f.current.style.opacity=1}),350),setTimeout((function(){u.current.classList.remove("Simple301Redirects__loaded"),c.current.style.display="none",f.current.style.display="none",c.current.style.opacity=0,f.current.style.opacity=0,s.current.classList.add("Simple301Redirects__popout"),s.current.innerHTML="",setTimeout((function(){d.current.style.display="block"}),150)}),1450),setTimeout((function(){s.current.classList.remove("Simple301Redirects__popout"),s.current.classList.add("Simple301Redirects__return"),s.current.innerHTML="Update",d.current.style.display="none",i(!1)}),2e3)))}},"Update"),l.createElement("svg",{id:"Simple301Redirects__check",style:{width:"24px",height:"24px"},viewBox:"0 0 24 24",ref:d},l.createElement("path",{fill:"#FFFFFF",d:"M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z"}))))};function ue(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,a=!1,l=void 0;try{for(var o,i=e[Symbol.iterator]();!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,l=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw l}}return n}}(e,t)||function(e,t){if(e){if("string"==typeof e)return se(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?se(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function se(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var ce={request:u().string,destination:u().string,isNewLink:u().bool,clickHandler:u().func};function fe(e){var t=e.request,n=e.destination,r=e.isNewLink,a=e.clickHandler,o=ue((0,l.useState)(""),2),i=o[0],u=o[1],s=ue((0,l.useState)(""),2),c=s[0],f=s[1];(0,l.useEffect)((function(){u(t),f(n)}),[t,n]);var d=ue((0,l.useState)(!1),2),p=d[0],m=d[1],h=function(e){"update"==e?y(i,c,e):"delete"==e?!0===confirm("Delete This Redirect?")&&y(i,c,e):(y(i,c,e),u(""),f(""))},y=function(e,n,r){if(e&&n){var l=(u=n,(i=e)in(o={})?Object.defineProperty(o,i,{value:u,enumerable:!0,configurable:!0,writable:!0}):o[i]=u,o);t&&(l.oldKey=t),a(r,l)}else m(!0);var o,i,u},v=function(e){"Enter"===e.key&&h(""==t||""==n?"new":"update")};return l.createElement(l.Fragment,null,l.createElement("div",{className:"simple301redirects__managelinks__item"},l.createElement("div",{className:"simple301redirects__managelinks__item__inner"},l.createElement("div",{className:"simple301redirects__managelinks__item__request"},l.createElement("input",{className:p&&""==i?"error":"",type:"text",name:"request",value:i,onChange:function(e){return u(e.target.value)},onKeyPress:v,required:!0})),l.createElement("div",{className:"simple301redirects__managelinks__item__icon"},l.createElement("img",{width:"25",src:$+"assets/images/icon-arrow.svg",alt:"doc"})),l.createElement("div",{className:"simple301redirects__managelinks__item__destination"},l.createElement("input",{className:p&&""==c?"error":"",type:"text",name:"destination",value:c,onChange:function(e){return f(e.target.value)},onKeyPress:v,required:!0}))),l.createElement("div",{className:"simple301redirects__managelinks__item__control"},r?l.createElement("button",{className:"simple301redirects__button primary__button",onClick:function(){return h("new")}},F("Add New","simple-301-redirects")):l.createElement(l.Fragment,null,l.createElement(le,{request:i}),l.createElement(ie,{localClickHandler:h}),!q&&l.createElement("div",{className:"simple301redirects__button lock__button s3r-tooltip"},l.createElement("img",{width:"15",src:$+"assets/images/icon-lock.svg",alt:"local"}),l.createElement("span",null,F("3/1 CLICKS","simple-301-redirects")),l.createElement("div",{className:"s3r-tooltiptext-wrapper"},l.createElement("div",{className:"s3r-tooltiptext"},F("To see Analytics data","simple-301-redirects")," ",l.createElement(re,{label:F("Install BetterLinks","simple-301-redirects")})))),l.createElement("button",{className:"simple301redirects__icon__button delete__button",onClick:function(){return h("delete")}},l.createElement("img",{src:$+"assets/images/icon-delete.svg",alt:"delete"}))))))}function de(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 pe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?de(Object(n),!0).forEach((function(t){me(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):de(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function me(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function he(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,a=!1,l=void 0;try{for(var o,i=e[Symbol.iterator]();!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,l=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw l}}return n}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ye(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ye(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ye(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ve(e){var t=he((0,l.useState)({}),2),n=t[0],r=t[1];(0,l.useEffect)((function(){Q.get(V+"settings").then((function(e){r(e.data)}))}),[]);var a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("new"==e){r(pe(pe({},n),t));var a=Object.keys(t),l=he(a,1),o=l[0],i=Object.values(t),u=he(i,1),s=u[0];return Q.post(V+"settings",{key:o,value:s})}if("update"==e){r(pe({},n));var c=Object.keys(t),f=he(c,1),d=f[0],p=Object.values(t),m=he(p,2),h=m[0],y=m[1];return Q.put(V+"settings",{key:d,value:h,oldKey:y})}if("delete"==e){var v=Object.keys(t),g=he(v,1),b=g[0];return delete n[b],r(pe({},n)),Q.delete(V+"settings",{params:{key:b}})}r(n)};return l.createElement(l.Fragment,null,l.createElement("div",{className:"simple301redirects__managelinks ".concat(q?"simple301redirects__managelinks--activated-btl":"")},l.createElement("div",{className:"simple301redirects__managelinks__info"},l.createElement("div",{className:"simple301redirects__managelinks__info__inner"},l.createElement("div",{className:"simple301redirects__managelinks__info__request"},l.createElement("h4",null,F("Request","simple-301-redirects")),l.createElement("p",null,"example: /old-page/")),l.createElement("div",{className:"simple301redirects__managelinks__info__destination"},l.createElement("h4",null,F("Destination","simple-301-redirects")),l.createElement("p",null,"example: ".concat(H,"/new-page/"))))),Object.entries(n).map((function(e,t){var n=he(e,2),r=n[0],o=n[1];return l.createElement(fe,{request:r,destination:o,clickHandler:a,key:t})})),l.createElement(fe,{isNewLink:!0,clickHandler:a}),l.createElement(J,null)))}function ge(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function be(e){var t,n,r=(t=(0,l.useState)(W),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,a=!1,l=void 0;try{for(var o,i=e[Symbol.iterator]();!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,l=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw l}}return n}}(t,n)||function(e,t){if(e){if("string"==typeof e)return ge(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ge(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),a=r[0],o=r[1];return l.createElement(l.Fragment,null,!q&&!a&&l.createElement("div",{className:"simple301redirects__betterlinks"},l.createElement("button",{onClick:function(){var e=new FormData;return e.append("action","simple301redirects/admin/hide_notice"),e.append("security",U),e.append("hide",!0),M().post(ajaxurl,e).then((function(e){o(!0)}),(function(e){console.log(e)}))},className:"simple301redirects__betterlinks__close__button"},l.createElement("img",{width:"20",src:$+"assets/images/close.svg",alt:"logo"})),l.createElement("div",{className:"simple301redirects__betterlinks__content"},l.createElement("h3",null,F("BetterLinks – Shorten, Track and Manage any URL","simple-301-redirects")),l.createElement("h4",null,F("Install BetterLinks to get the best out of Simple 301 Redirects and get access to more advanced features. Check out the features below","simple-301-redirects"),l.createElement("img",{width:"18",style:{transform:"translateY(6px) scale(1.5)",marginLeft:8},src:$+"assets/images/pointing-down.svg",alt:"logo"})),l.createElement("ul",null,l.createElement("li",null,F("Easy-to-use & Simple Link Shortener","simple-301-redirects")),l.createElement("li",null,F("Create attractive looking links instantly","simple-301-redirects")),l.createElement("li",null,F("Safe Redirection URLs","simple-301-redirects")),l.createElement("li",null,F("Analyze and Track your marketing campaigns from one place","simple-301-redirects")),l.createElement("li",null,F("Optimized queries to reduce load time & make faster","simple-301-redirects")),l.createElement("li",null,F("Individual Analytics for each links","simple-301-redirects"))),l.createElement("h4",null,F("You can migrate from Simple 301 Redirects to BetterLinks within one click.","simple-301-redirects"))),l.createElement("div",{className:"simple301redirects__betterlinks__control"},l.createElement(re,{label:F("Install BetterLinks","simple-301-redirects")}))))}function we(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ke(e){var t,n,r=(t=(0,l.useState)(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,a=!1,l=void 0;try{for(var o,i=e[Symbol.iterator]();!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,l=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw l}}return n}}(t,n)||function(e,t){if(e){if("string"==typeof e)return we(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?we(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),a=r[0],o=r[1];return l.createElement(l.Fragment,null,l.createElement("div",{className:"simple301redirects__documentation"},l.createElement("div",{className:"simple301redirects__documentation__panel-header",onClick:function(){return o(!a)}},l.createElement("h4",null,l.createElement("img",{width:"25",src:$+"assets/images/icon-doc.svg",alt:"doc"})," Documentation"),l.createElement("button",null,l.createElement("span",{className:"dashicons dashicons-arrow-".concat(a?"up":"down","-alt2")}))),l.createElement("div",{className:"simple301redirects__documentation__panel-body"},a&&l.createElement("div",{className:"documentation"},l.createElement("h4",null,F("Simple Redirects","simple-301-redirects")),l.createElement("p",null,F("Simple redirects work similar to the format that Apache uses: the request should be relative to your WordPress root. The destination can be either a full URL to any page on the web, or relative to your WordPress root.","simple-301-redirects")),l.createElement("h5",null,F("Example","simple-301-redirects")),l.createElement("ul",null,l.createElement("li",null,l.createElement("strong",null,F("Request: ","simple-301-redirects")),F("/old-page/","simple-301-redirects")),l.createElement("li",null,l.createElement("strong",null,F("Destination: ","simple-301-redirects"))," ",F("/new-page/","simple-301-redirects"))),l.createElement("h4",null,F("Wildcards","simple-301-redirects")),l.createElement("p",null,F("Wildcards Redirect will redirect all files within a directory to the same filename in the redirected directory. To use wildcards, put an asterisk (*) after the folder name that you want to redirect.","simple-301-redirects")),l.createElement("h5",null,F("Example","simple-301-redirects")),l.createElement("ul",null,l.createElement("li",null,l.createElement("strong",null,F("Request: ","simple-301-redirects")),F("/old-folder/*","simple-301-redirects")),l.createElement("li",null,l.createElement("strong",null,F("Destination: ","simple-301-redirects"))," ",F("/new-folder/* ","simple-301-redirects"))),l.createElement("p",null,F("You can also use wildcards to redirect all the dynamic files of a certain directory to a same destination URL as well.","simple-301-redirects")),l.createElement("h5",null,F("Example","simple-301-redirects")),l.createElement("ul",null,l.createElement("li",null,l.createElement("strong",null,F("Request: ","simple-301-redirects")),F("/old-folder/*","simple-301-redirects")),l.createElement("li",null,l.createElement("strong",null,F("Destination: ","simple-301-redirects"))," ",F("/new-page/","simple-301-redirects"))),l.createElement("p",null,F("You can also use the asterisk in the destination to replace whatever it matched in the request if you like. Something like this:","simple-301-redirects")),l.createElement("h5",null,F("Example","simple-301-redirects")),l.createElement("ul",null,l.createElement("li",null,l.createElement("strong",null,F("Request:","simple-301-redirects")),F("/old-folder/*","simple-301-redirects")),l.createElement("li",null,l.createElement("strong",null,F("Destination:","simple-301-redirects"))," ",F("/some/other/folder/*","simple-301-redirects"))),l.createElement("p",null,"Or:"),l.createElement("ul",null,l.createElement("li",null,l.createElement("strong",null,F("/some/other/folder/*","simple-301-redirects"))," ",F("/old-folder/*/content/","simple-301-redirects")),l.createElement("li",null,l.createElement("strong",null,F("Destination:","simple-301-redirects"))," ",F("/some/other/folder/*","simple-301-redirects")))))))}function Ee(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,a=!1,l=void 0;try{for(var o,i=e[Symbol.iterator]();!(r=(o=i.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){a=!0,l=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw l}}return n}}(e,t)||function(e,t){if(e){if("string"==typeof e)return _e(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_e(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _e(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Se(e){var t=Ee((0,l.useState)(!1),2),n=(t[0],t[1],Ee((0,l.useState)(!1),2)),r=n[0],a=n[1];return(0,l.useEffect)((function(){"true"==new URLSearchParams(window.location.search).get("import")&&M().post("".concat(ajaxurl,"?action=simple301redirects/admin/get_import_info&security=").concat(U)).then((function(e){a(e.data.data)}),(function(e){console.log(e)}))}),[]),l.createElement(l.Fragment,null,l.createElement("div",{className:"simple301redirects__panel__divider"},l.createElement("div",{className:"simple301redirects__import"},l.createElement("div",{className:"simple301redirects__import__head"},l.createElement("h4",null,F("Import Redirect Rules","simple-301-redirects")),l.createElement("p",null,F("Import your 301 Redirect Links from your Device","simple-301-redirects"))),l.createElement("form",{action:"admin.php?page=301options&import=true",method:"POST",encType:"multipart/form-data"},l.createElement("div",{role:"group",className:"simple301redirects-button-group","aria-labelledby":"my-radio-group"},l.createElement("input",{type:"file",id:"upload_file",name:"upload_file",size:"25"}),l.createElement("input",{type:"submit",name:"submit",id:"submit",className:"button button-primary",style:{marginTop:10},value:F("Import File","simple-301-redirects"),disabled:""})),r&&l.createElement("p",null,l.createElement("strong",null,r.replace(/"|"/g,""))))),l.createElement("div",{className:"simple301redirects__export"},l.createElement("div",{className:"simple301redirects__export__head"},l.createElement("h4",null,F("Export Redirect Rules","simple-301-redirects")),l.createElement("p",null,F("Export your 301 Redirect Links in .json format","simple-301-redirects"))),l.createElement("form",{action:"admin.php?page=301options&export=true",method:"POST"},l.createElement("div",{className:"simple301redirects-button-group"},l.createElement("button",{type:"submit",className:"btl-export-download-button"},F("Export File","simple-301-redirects")))))))}function xe(e){return l.createElement(l.Fragment,null,l.createElement(X,null),l.createElement("div",{className:"Simple301Redirects__content__wrapper"},l.createElement("div",{className:"Simple301Redirects__main__content"},l.createElement(ve,null),l.createElement(be,null)),l.createElement("div",{className:"Simple301Redirects__archive__sidebar"},l.createElement(Se,null),l.createElement(ke,null))))}fe.propTypes=ce,fe.defaultProps={request:"",destination:"",isNewLink:!1},ve.propTypes={},ve.defaultProps={},be.propTypes={},be.defaultProps={},ke.propTypes={},ke.defaultProps={},Se.propTypes={},Se.defaultProps={},xe.propTypes={},xe.defaultProps={},document.addEventListener("DOMContentLoaded",(function(){o.render(l.createElement(xe,null),document.getElementById("simple301redirectsbody"))}))})()})();
includes/API.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Simple301Redirects;
3
+
4
+ class API {
5
+ public function __construct()
6
+ {
7
+ $this->register_settings_rest_API();
8
+ add_filter('jwt_auth_whitelist', [$this, 'whitelist_API']);
9
+ }
10
+ public function register_settings_rest_API(){
11
+ new API\Settings();
12
+ }
13
+ public function whitelist_API($endpoints)
14
+ {
15
+ $endpoints[] = '/wp-json/simple301redirects/v1/*';
16
+ $endpoints[] = '/index.php?rest_route=/simple301redirects/v1/*';
17
+ return $endpoints;
18
+ }
19
+ }
includes/API/Settings.php ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Simple301Redirects\API;
3
+
4
+ class Settings {
5
+ private $namespace;
6
+ private $rest_base;
7
+ public function __construct() {
8
+ $this->namespace = 'simple301redirects/v1';
9
+ $this->rest_base = 'settings';
10
+ add_action('rest_api_init', array($this, 'register_routes'));
11
+ }
12
+
13
+ public function register_routes() {
14
+
15
+ register_rest_route(
16
+ $this->namespace,
17
+ '/' . $this->rest_base,
18
+ array(
19
+ array(
20
+ 'methods' => \WP_REST_Server::READABLE,
21
+ 'callback' => array( $this, 'get_items' ),
22
+ 'permission_callback' => array( $this, 'permissions_check' ),
23
+ 'args' => $this->get_args_schema(),
24
+ ),
25
+ array(
26
+ 'methods' => \WP_REST_Server::CREATABLE,
27
+ 'callback' => array( $this, 'create_item' ),
28
+ 'permission_callback' => array( $this, 'permissions_check' ),
29
+ 'args' => $this->get_args_schema(),
30
+ ),
31
+ array(
32
+ 'methods' => \WP_REST_Server::EDITABLE,
33
+ 'callback' => array( $this, 'update_item' ),
34
+ 'permission_callback' => array( $this, 'permissions_check' ),
35
+ 'args' => $this->get_args_schema(),
36
+ ),
37
+ array(
38
+ 'methods' => \WP_REST_Server::DELETABLE,
39
+ 'callback' => array( $this, 'delete_item' ),
40
+ 'permission_callback' => array( $this, 'permissions_check' ),
41
+ 'args' => $this->get_args_schema(),
42
+ )
43
+ )
44
+ );
45
+ }
46
+
47
+ public function get_items($request)
48
+ {
49
+ return new \WP_REST_Response(
50
+ get_option('301_redirects'),
51
+ 200
52
+ );
53
+ }
54
+
55
+ public function create_item($request)
56
+ {
57
+ $param = $request->get_params();
58
+ $current_data = get_option('301_redirects');
59
+ if(!isset($current_data[$param['key']])){
60
+ $current_data[$param['key']] = $param['value'];
61
+ update_option('301_redirects', $current_data);
62
+ }
63
+ return new \WP_REST_Response(
64
+ get_option('301_redirects'),
65
+ 200
66
+ );
67
+ }
68
+
69
+ public function update_item($request)
70
+ {
71
+ $param = $request->get_params();
72
+ $current_data = get_option('301_redirects');
73
+ if(isset($current_data[$param['oldKey']])){
74
+ if(isset($param['oldKey']) && $param['oldKey'] != $param['key']){
75
+ unset($current_data[$param['oldKey']]);
76
+ }
77
+ $current_data[$param['key']] = $param['value'];
78
+ update_option('301_redirects', $current_data);
79
+ }
80
+ return new \WP_REST_Response(
81
+ get_option('301_redirects'),
82
+ 200
83
+ );
84
+ }
85
+
86
+ public function delete_item($request)
87
+ {
88
+ $param = $request->get_params();
89
+ $current_data = get_option('301_redirects');
90
+ if(isset($current_data[$param['key']])){
91
+ unset($current_data[$param['key']]);
92
+ update_option('301_redirects', $current_data);
93
+ }
94
+ return new \WP_REST_Response(
95
+ get_option('301_redirects'),
96
+ 200
97
+ );
98
+ }
99
+
100
+ public function get_args_schema()
101
+ {
102
+ return [
103
+ 'key' => [
104
+ 'type' => 'string',
105
+ 'sanitize_callback' => 'sanitize_text_field',
106
+ ],
107
+ 'value' => [
108
+ 'type' => 'string',
109
+ 'sanitize_callback' => 'sanitize_text_field',
110
+ ],
111
+ 'oldKey' => [
112
+ 'type' => 'string',
113
+ 'sanitize_callback' => 'sanitize_text_field',
114
+ ]
115
+ ];
116
+ }
117
+ public function permissions_check($request)
118
+ {
119
+ return current_user_can('manage_options');
120
+ }
121
+ }
includes/Admin.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Simple301Redirects;
3
+
4
+ class Admin {
5
+ public function __construct()
6
+ {
7
+ $this->add_menu();
8
+ $this->load_assets();
9
+ $this->init_ajax();
10
+ $this->init_tools();
11
+ add_filter('Simple301Redirects/Admin/skip_no_conflict', [$this, 'skip_no_conflict']);
12
+ }
13
+ public function add_menu()
14
+ {
15
+ new Admin\Menu();
16
+ }
17
+ public function load_assets()
18
+ {
19
+ new Admin\Assets();
20
+ }
21
+ public function init_ajax()
22
+ {
23
+ new Admin\Ajax();
24
+ }
25
+ public function init_tools()
26
+ {
27
+ new Admin\Tools();
28
+ }
29
+ public function skip_no_conflict()
30
+ {
31
+ $whitelist = ['127.0.0.1', '::1'];
32
+ if (in_array($_SERVER['REMOTE_ADDR'], $whitelist)) {
33
+ return true;
34
+ }
35
+ return false;
36
+ }
37
+ }
includes/Admin/Ajax.php ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Simple301Redirects\Admin;
3
+
4
+ class Ajax {
5
+ public function __construct()
6
+ {
7
+ add_action('wp_ajax_simple301redirects/admin/wildcard', [$this, 'wildcard']);
8
+ add_action('wp_ajax_simple301redirects/admin/get_wildcard', [$this, 'get_wildcard']);
9
+ add_action('wp_ajax_simple301redirects/admin/install_plugin', [$this, 'install_plugin']);
10
+ add_action('wp_ajax_simple301redirects/admin/activate_plugin', [$this, 'activate_plugin']);
11
+ add_action('wp_ajax_simple301redirects/admin/hide_notice', [$this, 'hide_notice']);
12
+ }
13
+ public function get_wildcard()
14
+ {
15
+ check_ajax_referer('wp_rest', 'security');
16
+ wp_send_json_success(get_option('301_redirects_wildcard'));
17
+ wp_die();
18
+ }
19
+ public function wildcard()
20
+ {
21
+ check_ajax_referer('wp_rest', 'security');
22
+ update_option('301_redirects_wildcard', $_POST['toggle']);
23
+ wp_send_json_success($_POST['toggle']);
24
+ wp_die();
25
+ }
26
+ public function install_plugin()
27
+ {
28
+ check_ajax_referer('wp_rest', 'security');
29
+ $slug = isset($_POST['slug']) ? $_POST['slug'] : '';
30
+ $result = \Simple301Redirects\Helper::install_plugin($slug);
31
+ if (is_wp_error($result)) {
32
+ wp_send_json_error($result->get_error_message());
33
+ }
34
+ wp_send_json_success(__('Plugin is installed successfully!', 'simple-301-redirects'));
35
+ wp_die();
36
+ }
37
+
38
+ public function activate_plugin()
39
+ {
40
+ check_ajax_referer('wp_rest', 'security');
41
+ $basename = isset($_POST['basename']) ? $_POST['basename'] : '';
42
+ $result = activate_plugin($basename, '', false );
43
+ if (is_wp_error($result)) {
44
+ wp_send_json_error($result->get_error_message());
45
+ }
46
+ if ($result === false) {
47
+ wp_send_json_error(__('Plugin couldn\'t be activated.', 'simple-301-redirects'));
48
+ }
49
+ wp_send_json_success(__('BetterLinks is activated!', 'simple-301-redirects'));
50
+ wp_die();
51
+ }
52
+ public function hide_notice()
53
+ {
54
+ check_ajax_referer('wp_rest', 'security');
55
+ $hide = isset($_POST['hide']) ? $_POST['hide'] : false;
56
+ update_option('simple301redirects_hide_btl_notice', $hide);
57
+ wp_send_json_success($hide);
58
+ wp_die();
59
+ }
60
+ }
includes/Admin/Assets.php ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Simple301Redirects\Admin;
3
+
4
+ class Assets {
5
+ public function __construct()
6
+ {
7
+ add_action('admin_enqueue_scripts', [$this, 'plugin_scripts']);
8
+ }
9
+ /**
10
+ * Enqueue Files on Start Plugin
11
+ *
12
+ * @function plugin_script
13
+ */
14
+ public function plugin_scripts($hook)
15
+ {
16
+ if (\Simple301Redirects\Helper::plugin_page_hook_suffix($hook)) {
17
+ add_action(
18
+ 'wp_print_scripts',
19
+ function () {
20
+ $isSkip = apply_filters('Simple301Redirects/Admin/skip_no_conflict', false);
21
+
22
+ if ($isSkip) {
23
+ return;
24
+ }
25
+
26
+ global $wp_scripts;
27
+ if (!$wp_scripts) {
28
+ return;
29
+ }
30
+
31
+ $pluginUrl = plugins_url();
32
+ foreach ($wp_scripts->queue as $script) {
33
+ $src = $wp_scripts->registered[$script]->src;
34
+ if (strpos($src, $pluginUrl) !== false && !strpos($src, 'simple-301-redirects') !== false) {
35
+ wp_dequeue_script($wp_scripts->registered[$script]->handle);
36
+ }
37
+ }
38
+ },
39
+ 1
40
+ );
41
+ wp_enqueue_style('simple-301-redirects-admin-style', SIMPLE301REDIRECTS_ASSETS_URI . 'css/simple-301-redirects.css', [], filemtime(SIMPLE301REDIRECTS_ASSETS_DIR_PATH . 'css/simple-301-redirects.css'), 'all');
42
+
43
+ wp_enqueue_script(
44
+ 'simple-301-redirects-admin-core',
45
+ SIMPLE301REDIRECTS_ASSETS_URI . 'js/simple-301-redirects.core.min.js',
46
+ ['jquery'],
47
+ filemtime(SIMPLE301REDIRECTS_ASSETS_DIR_PATH . 'js/simple-301-redirects.core.min.js'),
48
+ true
49
+ );
50
+ wp_localize_script('simple-301-redirects-admin-core', 'Simple301Redirects', [
51
+ 'nonce' => wp_create_nonce('wp_rest'),
52
+ 'rest_url' => rest_url(),
53
+ 'namespace' => 'simple301redirects/v1/',
54
+ 'plugin_root_url' => SIMPLE301REDIRECTS_PLUGIN_ROOT_URI,
55
+ 'plugin_root_path' => SIMPLE301REDIRECTS_ROOT_DIR_PATH,
56
+ 'site_url' => site_url(),
57
+ 'route_path' => parse_url(admin_url(), PHP_URL_PATH),
58
+ 'is_betterlinks_activated' => \Simple301Redirects\Helper::is_activated_betterlinks(),
59
+ 'hide_btl_notice' => get_option('simple301redirects_hide_btl_notice')
60
+ ]);
61
+ }
62
+ }
63
+ }
includes/Admin/Menu.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Simple301Redirects\Admin;
3
+
4
+ class Menu {
5
+ public function __construct()
6
+ {
7
+ add_action('admin_menu', array($this,'create_menu'));
8
+ // if submitted, process the data
9
+ if (isset($_POST['301_redirects'])) {
10
+ add_action('admin_init', array($this,'save_redirects'));
11
+ }
12
+ }
13
+
14
+ /**
15
+ * create_menu function
16
+ * generate the link to the options page under settings
17
+ * @access public
18
+ * @return void
19
+ */
20
+ public function create_menu() {
21
+ add_options_page('301 Redirects', '301 Redirects', 'manage_options', '301options', array($this,'load_main_template'));
22
+ }
23
+
24
+ public function load_main_template()
25
+ {
26
+ echo '<div id="simple301redirectsbody" class="simple301redirects"></div>';
27
+ }
28
+ }
includes/Admin/Tools.php ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Simple301Redirects\Admin;
3
+
4
+ class Tools {
5
+ public function __construct()
6
+ {
7
+ add_action('admin_init', [$this, 'export_data']);
8
+ add_action('admin_init', [$this, 'import_data']);
9
+ add_action('wp_ajax_simple301redirects/admin/get_import_info', [$this, 'get_import_info']);
10
+ }
11
+ public function export_data()
12
+ {
13
+ $page = isset($_GET['page']) ? $_GET['page'] : '';
14
+ $export = isset($_GET['export']) ? $_GET['export'] : false;
15
+ if ($page === '301options' && $export == true) {
16
+ $content = json_encode(get_option(SIMPLE301REDIRECTS_SETTINGS_NAME));
17
+ $filename = 'simple-301-redirects.' . date('Y-m-d') . '.json';
18
+ ($file = fopen($filename, 'w')) or die('Unable to open file!');
19
+ fwrite($file, $content);
20
+ fclose($file);
21
+ header("Content-Disposition: attachment; filename=\"" . $filename . "\"");
22
+ header('Content-Type: application/force-download');
23
+ header('Expires: 0');
24
+ header('Cache-Control: must-revalidate');
25
+ header('Pragma: public');
26
+ header('Content-Type: text/plain');
27
+
28
+ echo $content;
29
+ exit();
30
+ }
31
+ }
32
+ public function import_data()
33
+ {
34
+ $page = isset($_GET['page']) ? $_GET['page'] : '';
35
+ $import = isset($_GET['import']) ? $_GET['import'] : false;
36
+ if ($page === '301options' && $import == true) {
37
+ if (!empty($_FILES['upload_file']['tmp_name'])) {
38
+ $fileContent = json_decode(file_get_contents($_FILES['upload_file']['tmp_name']), true);
39
+ if (!empty($fileContent)) {
40
+ $results = $this->process_data($fileContent);
41
+ $_SESSION['simple_301_redirects_import_info'] = json_encode($results);
42
+ }
43
+ }
44
+ }
45
+ }
46
+ public function process_data($data)
47
+ {
48
+ $message = '';
49
+ if (isset($data) && is_array($data) && count($data) > 0) {
50
+ $oldData = get_option(SIMPLE301REDIRECTS_SETTINGS_NAME);
51
+ $value = (!empty($oldData) ? array_unique (array_merge (get_option(SIMPLE301REDIRECTS_SETTINGS_NAME), $data)) : $data);
52
+ $restuls = update_option(SIMPLE301REDIRECTS_SETTINGS_NAME, $value);
53
+ if( $restuls){
54
+ $message = 'All Data has been successfully Imported.';
55
+ } else {
56
+ $message = 'Import Failed.';
57
+ }
58
+ }
59
+ return $message;
60
+ }
61
+ public function get_import_info()
62
+ {
63
+ check_ajax_referer('wp_rest', 'security');
64
+ $results = '';
65
+ if (isset($_SESSION['simple_301_redirects_import_info'])) {
66
+ $results = $_SESSION['simple_301_redirects_import_info'];
67
+ unset($_SESSION['simple_301_redirects_import_info']);
68
+ }
69
+ wp_send_json_success($results);
70
+ wp_die();
71
+ }
72
+ }
includes/Helper.php ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Simple301Redirects;
3
+
4
+ class Helper {
5
+ /**
6
+ * Check Supported Post type for admin page and plugin main settings page
7
+ *
8
+ * @return bool
9
+ */
10
+
11
+ public static function plugin_page_hook_suffix($hook)
12
+ {
13
+ if ($hook == 'settings_page_301options') {
14
+ return true;
15
+ }
16
+ return false;
17
+ }
18
+ public static function str_ireplace($search,$replace,$subject){
19
+ $token = chr(1);
20
+ $haystack = strtolower($subject);
21
+ $needle = strtolower($search);
22
+ while (($pos=strpos($haystack,$needle))!==FALSE){
23
+ $subject = substr_replace($subject,$token,$pos,strlen($search));
24
+ $haystack = substr_replace($haystack,$token,$pos,strlen($search));
25
+ }
26
+ $subject = str_replace($token,$replace,$subject);
27
+ return $subject;
28
+ }
29
+
30
+ public static function get_remote_plugin_data($slug = '')
31
+ {
32
+ if (empty($slug)) {
33
+ return new \WP_Error('empty_arg', __('Argument should not be empty.'));
34
+ }
35
+
36
+ $response = wp_remote_post(
37
+ 'http://api.wordpress.org/plugins/info/1.0/',
38
+ [
39
+ 'body' => [
40
+ 'action' => 'plugin_information',
41
+ 'request' => serialize((object) [
42
+ 'slug' => $slug,
43
+ 'fields' => [
44
+ 'version' => false,
45
+ ],
46
+ ]),
47
+ ],
48
+ ]
49
+ );
50
+
51
+ if (is_wp_error($response)) {
52
+ return $response;
53
+ }
54
+
55
+ return unserialize(wp_remote_retrieve_body($response));
56
+ }
57
+
58
+ public static function install_plugin($slug = '', $active = true)
59
+ {
60
+ if (empty($slug)) {
61
+ return new \WP_Error('empty_arg', __('Argument should not be empty.'));
62
+ }
63
+
64
+ include_once ABSPATH . 'wp-admin/includes/file.php';
65
+ include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
66
+ include_once ABSPATH . 'wp-admin/includes/class-automatic-upgrader-skin.php';
67
+
68
+ $plugin_data = self::get_remote_plugin_data($slug);
69
+
70
+ if (is_wp_error($plugin_data)) {
71
+ return $plugin_data;
72
+ }
73
+
74
+ $upgrader = new \Plugin_Upgrader(new \Automatic_Upgrader_Skin());
75
+
76
+ // install plugin
77
+ $install = $upgrader->install($plugin_data->download_link);
78
+
79
+ if (is_wp_error($install)) {
80
+ return $install;
81
+ }
82
+
83
+ // activate plugin
84
+ if ($install === true && $active) {
85
+ $active = activate_plugin($upgrader->plugin_info(), '', false);
86
+
87
+ if (is_wp_error($active)) {
88
+ return $active;
89
+ }
90
+
91
+ return $active === null;
92
+ }
93
+
94
+ return $install;
95
+ }
96
+
97
+ public static function is_activated_betterlinks(){
98
+ return is_plugin_active('betterlinks/betterlinks.php');
99
+ }
100
+ }
includes/Installer.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Simple301Redirects;
3
+
4
+ class Installer {
5
+
6
+ public function migrate()
7
+ {
8
+ $this->set_version_number();
9
+ }
10
+
11
+ public function set_version_number()
12
+ {
13
+ if (get_option('simple301redirects_version') != SIMPLE301REDIRECTS_VERSION) {
14
+ update_option('simple301redirects_version', SIMPLE301REDIRECTS_VERSION);
15
+ }
16
+ }
17
+ }
languages/simple-301-redirects.pot ADDED
@@ -0,0 +1,218 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2021 WPDeveloper
2
+ # This file is distributed under the same license as the Simple 301 Redirects plugin.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: Simple 301 Redirects 2.0.0\n"
6
+ "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/simple-301-redirects\n"
7
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
+ "Language-Team: LANGUAGE <LL@li.org>\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2021-04-01T03:22:51+00:00\n"
13
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
+ "X-Generator: WP-CLI 2.4.0\n"
15
+ "X-Domain: simple-301-redirects\n"
16
+
17
+ #. Plugin Name of the plugin
18
+ #: src/components/TopBar/index.js:17
19
+ msgid "Simple 301 Redirects"
20
+ msgstr ""
21
+
22
+ #. Plugin URI of the plugin
23
+ msgid "https://wordpress.org/plugins/simple-301-redirects/"
24
+ msgstr ""
25
+
26
+ #. Description of the plugin
27
+ msgid "Create a list of URLs that you would like to 301 redirect to another page or site. Now with wildcard support."
28
+ msgstr ""
29
+
30
+ #. Author of the plugin
31
+ msgid "WPDeveloper"
32
+ msgstr ""
33
+
34
+ #. Author URI of the plugin
35
+ msgid "https://wpdeveloper.net/"
36
+ msgstr ""
37
+
38
+ #: includes/Admin/Ajax.php:34
39
+ msgid "Plugin is installed successfully!"
40
+ msgstr ""
41
+
42
+ #: includes/Admin/Ajax.php:47
43
+ msgid "Plugin couldn't be activated."
44
+ msgstr ""
45
+
46
+ #: includes/Admin/Ajax.php:49
47
+ msgid "BetterLinks is activated!"
48
+ msgstr ""
49
+
50
+ #: src/components/BetterLinks/index.js:33
51
+ msgid "BetterLinks – Shorten, Track and Manage any URL"
52
+ msgstr ""
53
+
54
+ #: src/components/BetterLinks/index.js:35
55
+ msgid "Install BetterLinks to get the best out of Simple 301 Redirects and get access to more advanced features. Check out the features below"
56
+ msgstr ""
57
+
58
+ #: src/components/BetterLinks/index.js:39
59
+ msgid "Easy-to-use & Simple Link Shortener"
60
+ msgstr ""
61
+
62
+ #: src/components/BetterLinks/index.js:40
63
+ msgid "Create attractive looking links instantly"
64
+ msgstr ""
65
+
66
+ #: src/components/BetterLinks/index.js:41
67
+ msgid "Safe Redirection URLs"
68
+ msgstr ""
69
+
70
+ #: src/components/BetterLinks/index.js:42
71
+ msgid "Analyze and Track your marketing campaigns from one place"
72
+ msgstr ""
73
+
74
+ #: src/components/BetterLinks/index.js:43
75
+ msgid "Optimized queries to reduce load time & make faster"
76
+ msgstr ""
77
+
78
+ #: src/components/BetterLinks/index.js:44
79
+ msgid "Individual Analytics for each links"
80
+ msgstr ""
81
+
82
+ #: src/components/BetterLinks/index.js:46
83
+ msgid "You can migrate from Simple 301 Redirects to BetterLinks within one click."
84
+ msgstr ""
85
+
86
+ #: src/components/BetterLinks/index.js:49
87
+ #: src/components/Link/index.js:109
88
+ msgid "Install BetterLinks"
89
+ msgstr ""
90
+
91
+ #: src/components/Documentation/index.js:26
92
+ msgid "Simple Redirects"
93
+ msgstr ""
94
+
95
+ #: src/components/Documentation/index.js:28
96
+ msgid "Simple redirects work similar to the format that Apache uses: the request should be relative to your WordPress root. The destination can be either a full URL to any page on the web, or relative to your WordPress root."
97
+ msgstr ""
98
+
99
+ #: src/components/Documentation/index.js:33
100
+ #: src/components/Documentation/index.js:46
101
+ #: src/components/Documentation/index.js:60
102
+ #: src/components/Documentation/index.js:74
103
+ msgid "Example"
104
+ msgstr ""
105
+
106
+ #: src/components/Documentation/index.js:36
107
+ #: src/components/Documentation/index.js:49
108
+ #: src/components/Documentation/index.js:63
109
+ msgid "Request: "
110
+ msgstr ""
111
+
112
+ #: src/components/Documentation/index.js:37
113
+ msgid "/old-page/"
114
+ msgstr ""
115
+
116
+ #: src/components/Documentation/index.js:40
117
+ #: src/components/Documentation/index.js:53
118
+ #: src/components/Documentation/index.js:67
119
+ msgid "Destination: "
120
+ msgstr ""
121
+
122
+ #: src/components/Documentation/index.js:40
123
+ #: src/components/Documentation/index.js:67
124
+ msgid "/new-page/"
125
+ msgstr ""
126
+
127
+ #: src/components/Documentation/index.js:44
128
+ msgid "Wildcards"
129
+ msgstr ""
130
+
131
+ #: src/components/Documentation/index.js:45
132
+ msgid "Wildcards Redirect will redirect all files within a directory to the same filename in the redirected directory. To use wildcards, put an asterisk (*) after the folder name that you want to redirect."
133
+ msgstr ""
134
+
135
+ #: src/components/Documentation/index.js:50
136
+ #: src/components/Documentation/index.js:64
137
+ #: src/components/Documentation/index.js:78
138
+ msgid "/old-folder/*"
139
+ msgstr ""
140
+
141
+ #: src/components/Documentation/index.js:53
142
+ msgid "/new-folder/* "
143
+ msgstr ""
144
+
145
+ #: src/components/Documentation/index.js:58
146
+ msgid "You can also use wildcards to redirect all the dynamic files of a certain directory to a same destination URL as well."
147
+ msgstr ""
148
+
149
+ #: src/components/Documentation/index.js:72
150
+ msgid "You can also use the asterisk in the destination to replace whatever it matched in the request if you like. Something like this:"
151
+ msgstr ""
152
+
153
+ #: src/components/Documentation/index.js:77
154
+ msgid "Request:"
155
+ msgstr ""
156
+
157
+ #: src/components/Documentation/index.js:81
158
+ #: src/components/Documentation/index.js:90
159
+ msgid "Destination:"
160
+ msgstr ""
161
+
162
+ #: src/components/Documentation/index.js:81
163
+ #: src/components/Documentation/index.js:87
164
+ #: src/components/Documentation/index.js:90
165
+ msgid "/some/other/folder/*"
166
+ msgstr ""
167
+
168
+ #: src/components/Documentation/index.js:87
169
+ msgid "/old-folder/*/content/"
170
+ msgstr ""
171
+
172
+ #: src/components/Link/index.js:97
173
+ msgid "Add New"
174
+ msgstr ""
175
+
176
+ #: src/components/Link/index.js:106
177
+ msgid "3/1 CLICKS"
178
+ msgstr ""
179
+
180
+ #: src/components/Link/index.js:109
181
+ msgid "To see Analytics data"
182
+ msgstr ""
183
+
184
+ #: src/components/Tools/index.js:32
185
+ msgid "Import Redirect Rules"
186
+ msgstr ""
187
+
188
+ #: src/components/Tools/index.js:33
189
+ msgid "Import your 301 Redirect Links from your Device"
190
+ msgstr ""
191
+
192
+ #: src/components/Tools/index.js:44
193
+ msgid "Import File"
194
+ msgstr ""
195
+
196
+ #: src/components/Tools/index.js:57
197
+ msgid "Export Redirect Rules"
198
+ msgstr ""
199
+
200
+ #: src/components/Tools/index.js:58
201
+ msgid "Export your 301 Redirect Links in .json format"
202
+ msgstr ""
203
+
204
+ #: src/components/Tools/index.js:63
205
+ msgid "Export File"
206
+ msgstr ""
207
+
208
+ #: src/components/WildCards/index.js:57
209
+ msgid "Use Wildcards?"
210
+ msgstr ""
211
+
212
+ #: src/containers/group/ManageLinks.js:58
213
+ msgid "Request"
214
+ msgstr ""
215
+
216
+ #: src/containers/group/ManageLinks.js:62
217
+ msgid "Destination"
218
+ msgstr ""
readme.txt CHANGED
@@ -1,52 +1,140 @@
1
- === Simple 301 Redirects ===
2
- Contributors: scottnelle
3
- Tags: 301, redirect, url, seo
4
- Requires at least: 3.0
5
- Tested up to: 4.9
6
- Stable tag: 1.07
7
- License: GPLv2 or later
8
- License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
-
10
- Simple 301 Redirects provides an easy method of redirecting requests to another page on your site or elsewhere on the web.
11
-
12
- == Description ==
13
-
14
- Simple 301 Redirects provides an easy method of redirecting requests to another page on your site or elsewhere on the web. It's especially handy when you migrate a site to WordPress and can't preserve your URL structure. By setting up 301 redirects from your old pages to your new pages, any incoming links will be seemlessly passed along, and their pagerank (or what-have-you) will be passed along with them.
15
-
16
- == Installation ==
17
-
18
- 1. Upload Simple 301 Redirects to the `/wp-content/plugins/` directory
19
- 1. Activate the plugin through the 'Plugins' menu in WordPress
20
- 1. Add redirects on the Settings > 301 Redirects page.
21
-
22
-
23
- == Changelog ==
24
- = 1.07 =
25
- * Security Update - Better handling of posted data.
26
-
27
- = 1.06 =
28
- * Security Updates - Special thanks to Ryan Hellyer!
29
-
30
- = 1.05 =
31
- * Wildcard support
32
- * Delete functiontionality
33
- * On-page documentation
34
-
35
- = 1.04 =
36
- * Removed deprecated function calls
37
- * Updated code to better match WordPress coding standards
38
- * Updated handling of https protocol to prevent errors in certain server configurations
39
- * Better support for destinations that start with a leading slash instead of the full domain
40
-
41
- = 1.03 =
42
- * Sorry for the double update. I forgot to check for PHP4 compatibility. Many people are still using PHP4, apparently, so this update is to fix compatibility with these legacy systems.
43
-
44
- = 1.02 =
45
- * Added support for special characters in non-english URLs.
46
- * Fixed a case sensitivity bug.
47
-
48
- = 1.01 =
49
- * Updated redirect method to send headers directly rather than using wp_redirect() because it was sending 302 codes on some servers
50
-
51
- = 1.0 =
52
- * Initial Release
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Simple 301 Redirects by BetterLinks ===
2
+ Contributors: wpdevteam, asif2bd, re_enter_rupok, tusharimran, scottnelle
3
+ Tags: 301 redirects, 301, shortlinks, link shortener, links, permalink, redirects, seo redirects, url redirect, 301 redirect, url, pretty links, short links, link tracking, affiliate links, urls
4
+ Requires at least: 4.0
5
+ Tested up to: 5.7
6
+ Requires PHP: 5.4
7
+ Stable tag: 2.0.0
8
+ License: GPL-3.0-or-later
9
+ License URI: https://www.gnu.org/licenses/gpl-3.0.html
10
+
11
+ Simple 301 Redirects provides an easy method of redirecting requests to another page on your site or elsewhere on the web.
12
+
13
+ == Description ==
14
+
15
+ = Improve Your User Experience With Simple 301 Redirects Solution for WordPress =
16
+
17
+ Got "404 not found" errors? Launching a marketing campaign with a new URL? Or relaunching your website with a new URL? Let's redirect your old URLs to new ones automatically by creating 301 redirects to existing pages.
18
+
19
+ Simple 301 Redirects provides an easy method of redirecting requests to another page on your site or elsewhere on the web. It's especially handy when you migrate a site to WordPress and can't preserve your URL structure.
20
+
21
+ By setting up 301 redirects from your old pages to your new pages, any incoming links will be seamlessly passed along, and their page rank (or what-have-you) will be passed along with them.
22
+
23
+ ## FEATURES OF SIMPLE 301 REDIRECTS:
24
+
25
+ ◾With this plugin, you can check and redirect your old URLs to the new ones with few easy steps
26
+ **◾** Designed for any websites with very easy and user friendly interface which you can set up in few seconds
27
+
28
+ ◾Works great eCommerce, blog, magazine, small business and any others websites
29
+
30
+ ## 🔰 MANAGE YOUR LINKS WITH SIMPLE 301 REDIRECTS:
31
+
32
+ **◾Import Redirect Rules:** You can import redirects links in bulk from your device and upload using this plugin to manage links
33
+
34
+ **◾ Export Redirect Rules:** You can also export your 301 Redirect Links in .json format to use in future
35
+
36
+ **Wildcards:** It will redirect all files within a directory to the same filename in the redirected directory. To use wildcards, put an asterisk (\*) after the folder name that you want to redirect. Example:
37
+
38
+ - Request: /old-folder/\*
39
+ - Destination: /new-folder/\*
40
+
41
+ **Friendly Support:** Get super friendly community support as we have an extraordinary support team ready to help you. Ask your questions in the support forum &amp; someone from our team will help you
42
+
43
+ ## 🏆 Featured by Renowned WordPress Publications
44
+
45
+ Simple 301 Redirects has been loved by lots of users, website owners, bloggers and marketers:
46
+
47
+ 🌟[Peakplex](https://peakplex.com/blog/use-simple-301-redirects-plugin/)
48
+
49
+ "The plugin's name could not be better. It really is simple to do 301 redirects. For example, if you modify the URL of one of your pages, then you can take the old URL and redirect it to the new one. Not only can this keep some SEO value, but it's good for user experience as well."
50
+
51
+ 🌟[WPKube](https://www.wpkube.com/add-301-redirects-wordpress/)
52
+
53
+ "I like this plugin because: You can quickly create 301 redirects without leaving your WordPress dashboard. It makes it much easier to manage your existing 301 redirects. It's just plain easier for beginners than digging around the .htaccess file."
54
+
55
+ **THIS PLUGIN IS MAINTAINED BY THE TEAM** [WPDeveloper](https://wpdeveloper.net/).
56
+
57
+ ## 🎁 [FREEBIE] Handful Plugins To Improve Your WordPress Site
58
+
59
+ If you like Simple 301 Redirects, then consider checking out our other WordPress Plugins &amp; take your website to next level:
60
+
61
+ 🔝[**Essential Addons For Elementor**](https://wordpress.org/plugins/essential-addons-for-elementor-lite/)– Most popular Elementor addons with 1 million active users in the WordPress repository.
62
+
63
+ 🔔[**NotificationX**](https://wordpress.org/plugins/notificationx/)– Best Social Proof &amp; FOMO Marketing Solution to increase conversion rates.
64
+
65
+ 📝[**BetterDocs**](https://wordpress.org/plugins/betterdocs)– Best Documentation &amp; Knowledge Base Plugin for WordPress, which also reduces your manual support request.
66
+
67
+ 🛑[**Disable Comments**](https://wordpress.org/plugins/disable-comments/) - Instantly allow or disallow comments from any post type in WordPress and gain complete control over your full website.
68
+
69
+ ♾️[**EmbedPress**](https://wordpress.org/plugins/embedpress/) - EmbedPress lets you embed videos, images, posts, audio, maps and all other types of content into your WordPress site with one-click to showcase it beautifully for the visitors.
70
+
71
+ ☁️[**Templately**](https://wordpress.org/plugins/templately/) - Free templates library for Elementor &amp; Gutenberg along with the cloud collaboration for WordPress.
72
+
73
+ ⏰ [**WP Scheduled Posts**](https://wordpress.org/plugins/wp-scheduled-posts/): Advanced editorial calendar & complete solution for WordPress Post Scheduling, social sharing, missed scheduled alerts and more.
74
+
75
+ ⭐[**ReviewX**](https://wordpress.org/plugins/reviewx/) - WooCommerce Product review plugin that allows users to submit product reviews with multiple criteria, photos, video and more.
76
+
77
+ ⚡ [**Flexia**](http://wordpress.org/plugins/flexia): Most lightweight, customizable & multi purpose theme for WordPress.
78
+
79
+ ### 💙 LOVED SIMPLE 301 REDIRECTS?
80
+
81
+ - Join our [Facebook Group](https://www.facebook.com/groups/wpdeveloper.net/)
82
+
83
+ - If you love Simple 301 Redirects, [rate us on WordPress](https://wordpress.org/support/plugin/simple-301-redirects/reviews/?filter=5)
84
+
85
+ Visit [WPDeveloper](https://wpdeveloper.net/) to learn more about how to do better in WordPress with [Help Tutorial, Tips & Tricks](https://wpdeveloper.net/blog).
86
+
87
+
88
+ == Installation ==
89
+
90
+ 1. Upload Simple 301 Redirects to the `/wp-content/plugins/` directory
91
+ 1. Activate the plugin through the 'Plugins' menu in WordPress
92
+ 1. Add redirects on the Settings > 301 Redirects page.
93
+
94
+
95
+ == Screenshots ==
96
+
97
+ 1. Simple 301 Redirects - Dashboard
98
+ 2. Simple 301 Redirects - Setup
99
+
100
+
101
+ == Changelog ==
102
+
103
+ = 2.0.0 - 01/04/2021 =
104
+ * Revamped: New UI/UX
105
+ * Added: Support for WordPress 5.7
106
+ * Added: Options to Export/Import Links
107
+ * Few minor bug fix and improvements
108
+
109
+ = 1.07 =
110
+ * Security Update - Better handling of posted data.
111
+
112
+ = 1.06 =
113
+ * Security Updates - Special thanks to Ryan Hellyer!
114
+
115
+ = 1.05 =
116
+ * Wildcard support
117
+ * Delete functiontionality
118
+ * On-page documentation
119
+
120
+ = 1.04 =
121
+ * Removed deprecated function calls
122
+ * Updated code to better match WordPress coding standards
123
+ * Updated handling of https protocol to prevent errors in certain server configurations
124
+ * Better support for destinations that start with a leading slash instead of the full domain
125
+
126
+ = 1.03 =
127
+ * Sorry for the double update. I forgot to check for PHP4 compatibility. Many people are still using PHP4, apparently, so this update is to fix compatibility with these legacy systems.
128
+
129
+ = 1.02 =
130
+ * Added support for special characters in non-english URLs.
131
+ * Fixed a case sensitivity bug.
132
+
133
+ = 1.01 =
134
+ * Updated redirect method to send headers directly rather than using wp_redirect() because it was sending 302 codes on some servers
135
+
136
+ = 1.0 =
137
+ * Initial Release
138
+
139
+ == Upgrade Notice ==
140
+ [Major Update] Bugfix, new design, and stability
vendor/autoload.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload.php @generated by Composer
4
+
5
+ require_once __DIR__ . '/composer/autoload_real.php';
6
+
7
+ return ComposerAutoloaderInit2a140d7e71ef3b0d01203d5c60b8900a::getLoader();
vendor/composer/ClassLoader.php ADDED
@@ -0,0 +1,477 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of Composer.
5
+ *
6
+ * (c) Nils Adermann <naderman@naderman.de>
7
+ * Jordi Boggiano <j.boggiano@seld.be>
8
+ *
9
+ * For the full copyright and license information, please view the LICENSE
10
+ * file that was distributed with this source code.
11
+ */
12
+
13
+ namespace Composer\Autoload;
14
+
15
+ /**
16
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
17
+ *
18
+ * $loader = new \Composer\Autoload\ClassLoader();
19
+ *
20
+ * // register classes with namespaces
21
+ * $loader->add('Symfony\Component', __DIR__.'/component');
22
+ * $loader->add('Symfony', __DIR__.'/framework');
23
+ *
24
+ * // activate the autoloader
25
+ * $loader->register();
26
+ *
27
+ * // to enable searching the include path (eg. for PEAR packages)
28
+ * $loader->setUseIncludePath(true);
29
+ *
30
+ * In this example, if you try to use a class in the Symfony\Component
31
+ * namespace or one of its children (Symfony\Component\Console for instance),
32
+ * the autoloader will first look for the class under the component/
33
+ * directory, and it will then fallback to the framework/ directory if not
34
+ * found before giving up.
35
+ *
36
+ * This class is loosely based on the Symfony UniversalClassLoader.
37
+ *
38
+ * @author Fabien Potencier <fabien@symfony.com>
39
+ * @author Jordi Boggiano <j.boggiano@seld.be>
40
+ * @see https://www.php-fig.org/psr/psr-0/
41
+ * @see https://www.php-fig.org/psr/psr-4/
42
+ */
43
+ class ClassLoader
44
+ {
45
+ private $vendorDir;
46
+
47
+ // PSR-4
48
+ private $prefixLengthsPsr4 = array();
49
+ private $prefixDirsPsr4 = array();
50
+ private $fallbackDirsPsr4 = array();
51
+
52
+ // PSR-0
53
+ private $prefixesPsr0 = array();
54
+ private $fallbackDirsPsr0 = array();
55
+
56
+ private $useIncludePath = false;
57
+ private $classMap = array();
58
+ private $classMapAuthoritative = false;
59
+ private $missingClasses = array();
60
+ private $apcuPrefix;
61
+
62
+ private static $registeredLoaders = array();
63
+
64
+ public function __construct($vendorDir = null)
65
+ {
66
+ $this->vendorDir = $vendorDir;
67
+ }
68
+
69
+ public function getPrefixes()
70
+ {
71
+ if (!empty($this->prefixesPsr0)) {
72
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
73
+ }
74
+
75
+ return array();
76
+ }
77
+
78
+ public function getPrefixesPsr4()
79
+ {
80
+ return $this->prefixDirsPsr4;
81
+ }
82
+
83
+ public function getFallbackDirs()
84
+ {
85
+ return $this->fallbackDirsPsr0;
86
+ }
87
+
88
+ public function getFallbackDirsPsr4()
89
+ {
90
+ return $this->fallbackDirsPsr4;
91
+ }
92
+
93
+ public function getClassMap()
94
+ {
95
+ return $this->classMap;
96
+ }
97
+
98
+ /**
99
+ * @param array $classMap Class to filename map
100
+ */
101
+ public function addClassMap(array $classMap)
102
+ {
103
+ if ($this->classMap) {
104
+ $this->classMap = array_merge($this->classMap, $classMap);
105
+ } else {
106
+ $this->classMap = $classMap;
107
+ }
108
+ }
109
+
110
+ /**
111
+ * Registers a set of PSR-0 directories for a given prefix, either
112
+ * appending or prepending to the ones previously set for this prefix.
113
+ *
114
+ * @param string $prefix The prefix
115
+ * @param array|string $paths The PSR-0 root directories
116
+ * @param bool $prepend Whether to prepend the directories
117
+ */
118
+ public function add($prefix, $paths, $prepend = false)
119
+ {
120
+ if (!$prefix) {
121
+ if ($prepend) {
122
+ $this->fallbackDirsPsr0 = array_merge(
123
+ (array) $paths,
124
+ $this->fallbackDirsPsr0
125
+ );
126
+ } else {
127
+ $this->fallbackDirsPsr0 = array_merge(
128
+ $this->fallbackDirsPsr0,
129
+ (array) $paths
130
+ );
131
+ }
132
+
133
+ return;
134
+ }
135
+
136
+ $first = $prefix[0];
137
+ if (!isset($this->prefixesPsr0[$first][$prefix])) {
138
+ $this->prefixesPsr0[$first][$prefix] = (array) $paths;
139
+
140
+ return;
141
+ }
142
+ if ($prepend) {
143
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
144
+ (array) $paths,
145
+ $this->prefixesPsr0[$first][$prefix]
146
+ );
147
+ } else {
148
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
149
+ $this->prefixesPsr0[$first][$prefix],
150
+ (array) $paths
151
+ );
152
+ }
153
+ }
154
+
155
+ /**
156
+ * Registers a set of PSR-4 directories for a given namespace, either
157
+ * appending or prepending to the ones previously set for this namespace.
158
+ *
159
+ * @param string $prefix The prefix/namespace, with trailing '\\'
160
+ * @param array|string $paths The PSR-4 base directories
161
+ * @param bool $prepend Whether to prepend the directories
162
+ *
163
+ * @throws \InvalidArgumentException
164
+ */
165
+ public function addPsr4($prefix, $paths, $prepend = false)
166
+ {
167
+ if (!$prefix) {
168
+ // Register directories for the root namespace.
169
+ if ($prepend) {
170
+ $this->fallbackDirsPsr4 = array_merge(
171
+ (array) $paths,
172
+ $this->fallbackDirsPsr4
173
+ );
174
+ } else {
175
+ $this->fallbackDirsPsr4 = array_merge(
176
+ $this->fallbackDirsPsr4,
177
+ (array) $paths
178
+ );
179
+ }
180
+ } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
181
+ // Register directories for a new namespace.
182
+ $length = strlen($prefix);
183
+ if ('\\' !== $prefix[$length - 1]) {
184
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
185
+ }
186
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
187
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
188
+ } elseif ($prepend) {
189
+ // Prepend directories for an already registered namespace.
190
+ $this->prefixDirsPsr4[$prefix] = array_merge(
191
+ (array) $paths,
192
+ $this->prefixDirsPsr4[$prefix]
193
+ );
194
+ } else {
195
+ // Append directories for an already registered namespace.
196
+ $this->prefixDirsPsr4[$prefix] = array_merge(
197
+ $this->prefixDirsPsr4[$prefix],
198
+ (array) $paths
199
+ );
200
+ }
201
+ }
202
+
203
+ /**
204
+ * Registers a set of PSR-0 directories for a given prefix,
205
+ * replacing any others previously set for this prefix.
206
+ *
207
+ * @param string $prefix The prefix
208
+ * @param array|string $paths The PSR-0 base directories
209
+ */
210
+ public function set($prefix, $paths)
211
+ {
212
+ if (!$prefix) {
213
+ $this->fallbackDirsPsr0 = (array) $paths;
214
+ } else {
215
+ $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
216
+ }
217
+ }
218
+
219
+ /**
220
+ * Registers a set of PSR-4 directories for a given namespace,
221
+ * replacing any others previously set for this namespace.
222
+ *
223
+ * @param string $prefix The prefix/namespace, with trailing '\\'
224
+ * @param array|string $paths The PSR-4 base directories
225
+ *
226
+ * @throws \InvalidArgumentException
227
+ */
228
+ public function setPsr4($prefix, $paths)
229
+ {
230
+ if (!$prefix) {
231
+ $this->fallbackDirsPsr4 = (array) $paths;
232
+ } else {
233
+ $length = strlen($prefix);
234
+ if ('\\' !== $prefix[$length - 1]) {
235
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
236
+ }
237
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
238
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
239
+ }
240
+ }
241
+
242
+ /**
243
+ * Turns on searching the include path for class files.
244
+ *
245
+ * @param bool $useIncludePath
246
+ */
247
+ public function setUseIncludePath($useIncludePath)
248
+ {
249
+ $this->useIncludePath = $useIncludePath;
250
+ }
251
+
252
+ /**
253
+ * Can be used to check if the autoloader uses the include path to check
254
+ * for classes.
255
+ *
256
+ * @return bool
257
+ */
258
+ public function getUseIncludePath()
259
+ {
260
+ return $this->useIncludePath;
261
+ }
262
+
263
+ /**
264
+ * Turns off searching the prefix and fallback directories for classes
265
+ * that have not been registered with the class map.
266
+ *
267
+ * @param bool $classMapAuthoritative
268
+ */
269
+ public function setClassMapAuthoritative($classMapAuthoritative)
270
+ {
271
+ $this->classMapAuthoritative = $classMapAuthoritative;
272
+ }
273
+
274
+ /**
275
+ * Should class lookup fail if not found in the current class map?
276
+ *
277
+ * @return bool
278
+ */
279
+ public function isClassMapAuthoritative()
280
+ {
281
+ return $this->classMapAuthoritative;
282
+ }
283
+
284
+ /**
285
+ * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
286
+ *
287
+ * @param string|null $apcuPrefix
288
+ */
289
+ public function setApcuPrefix($apcuPrefix)
290
+ {
291
+ $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
292
+ }
293
+
294
+ /**
295
+ * The APCu prefix in use, or null if APCu caching is not enabled.
296
+ *
297
+ * @return string|null
298
+ */
299
+ public function getApcuPrefix()
300
+ {
301
+ return $this->apcuPrefix;
302
+ }
303
+
304
+ /**
305
+ * Registers this instance as an autoloader.
306
+ *
307
+ * @param bool $prepend Whether to prepend the autoloader or not
308
+ */
309
+ public function register($prepend = false)
310
+ {
311
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
312
+
313
+ if (null === $this->vendorDir) {
314
+ //no-op
315
+ } elseif ($prepend) {
316
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
317
+ } else {
318
+ unset(self::$registeredLoaders[$this->vendorDir]);
319
+ self::$registeredLoaders[$this->vendorDir] = $this;
320
+ }
321
+ }
322
+
323
+ /**
324
+ * Unregisters this instance as an autoloader.
325
+ */
326
+ public function unregister()
327
+ {
328
+ spl_autoload_unregister(array($this, 'loadClass'));
329
+
330
+ if (null !== $this->vendorDir) {
331
+ unset(self::$registeredLoaders[$this->vendorDir]);
332
+ }
333
+ }
334
+
335
+ /**
336
+ * Loads the given class or interface.
337
+ *
338
+ * @param string $class The name of the class
339
+ * @return bool|null True if loaded, null otherwise
340
+ */
341
+ public function loadClass($class)
342
+ {
343
+ if ($file = $this->findFile($class)) {
344
+ includeFile($file);
345
+
346
+ return true;
347
+ }
348
+ }
349
+
350
+ /**
351
+ * Finds the path to the file where the class is defined.
352
+ *
353
+ * @param string $class The name of the class
354
+ *
355
+ * @return string|false The path if found, false otherwise
356
+ */
357
+ public function findFile($class)
358
+ {
359
+ // class map lookup
360
+ if (isset($this->classMap[$class])) {
361
+ return $this->classMap[$class];
362
+ }
363
+ if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
364
+ return false;
365
+ }
366
+ if (null !== $this->apcuPrefix) {
367
+ $file = apcu_fetch($this->apcuPrefix.$class, $hit);
368
+ if ($hit) {
369
+ return $file;
370
+ }
371
+ }
372
+
373
+ $file = $this->findFileWithExtension($class, '.php');
374
+
375
+ // Search for Hack files if we are running on HHVM
376
+ if (false === $file && defined('HHVM_VERSION')) {
377
+ $file = $this->findFileWithExtension($class, '.hh');
378
+ }
379
+
380
+ if (null !== $this->apcuPrefix) {
381
+ apcu_add($this->apcuPrefix.$class, $file);
382
+ }
383
+
384
+ if (false === $file) {
385
+ // Remember that this class does not exist.
386
+ $this->missingClasses[$class] = true;
387
+ }
388
+
389
+ return $file;
390
+ }
391
+
392
+ /**
393
+ * Returns the currently registered loaders indexed by their corresponding vendor directories.
394
+ *
395
+ * @return self[]
396
+ */
397
+ public static function getRegisteredLoaders()
398
+ {
399
+ return self::$registeredLoaders;
400
+ }
401
+
402
+ private function findFileWithExtension($class, $ext)
403
+ {
404
+ // PSR-4 lookup
405
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
406
+
407
+ $first = $class[0];
408
+ if (isset($this->prefixLengthsPsr4[$first])) {
409
+ $subPath = $class;
410
+ while (false !== $lastPos = strrpos($subPath, '\\')) {
411
+ $subPath = substr($subPath, 0, $lastPos);
412
+ $search = $subPath . '\\';
413
+ if (isset($this->prefixDirsPsr4[$search])) {
414
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
415
+ foreach ($this->prefixDirsPsr4[$search] as $dir) {
416
+ if (file_exists($file = $dir . $pathEnd)) {
417
+ return $file;
418
+ }
419
+ }
420
+ }
421
+ }
422
+ }
423
+
424
+ // PSR-4 fallback dirs
425
+ foreach ($this->fallbackDirsPsr4 as $dir) {
426
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
427
+ return $file;
428
+ }
429
+ }
430
+
431
+ // PSR-0 lookup
432
+ if (false !== $pos = strrpos($class, '\\')) {
433
+ // namespaced class name
434
+ $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
435
+ . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
436
+ } else {
437
+ // PEAR-like class name
438
+ $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
439
+ }
440
+
441
+ if (isset($this->prefixesPsr0[$first])) {
442
+ foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
443
+ if (0 === strpos($class, $prefix)) {
444
+ foreach ($dirs as $dir) {
445
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
446
+ return $file;
447
+ }
448
+ }
449
+ }
450
+ }
451
+ }
452
+
453
+ // PSR-0 fallback dirs
454
+ foreach ($this->fallbackDirsPsr0 as $dir) {
455
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
456
+ return $file;
457
+ }
458
+ }
459
+
460
+ // PSR-0 include paths.
461
+ if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
462
+ return $file;
463
+ }
464
+
465
+ return false;
466
+ }
467
+ }
468
+
469
+ /**
470
+ * Scope isolated include.
471
+ *
472
+ * Prevents access to $this/self from included files.
473
+ */
474
+ function includeFile($file)
475
+ {
476
+ include $file;
477
+ }
vendor/composer/InstalledVersions.php ADDED
@@ -0,0 +1,284 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+ namespace Composer;
14
+
15
+ use Composer\Autoload\ClassLoader;
16
+ use Composer\Semver\VersionParser;
17
+
18
+
19
+
20
+
21
+
22
+
23
+ class InstalledVersions
24
+ {
25
+ private static $installed = array (
26
+ 'root' =>
27
+ array (
28
+ 'pretty_version' => 'dev-master',
29
+ 'version' => 'dev-master',
30
+ 'aliases' =>
31
+ array (
32
+ ),
33
+ 'reference' => '7346e10950d76bd53738dc2273b32fe5a459b7af',
34
+ 'name' => 'wpdevteam/simple-301-redirects',
35
+ ),
36
+ 'versions' =>
37
+ array (
38
+ 'wpdevteam/simple-301-redirects' =>
39
+ array (
40
+ 'pretty_version' => 'dev-master',
41
+ 'version' => 'dev-master',
42
+ 'aliases' =>
43
+ array (
44
+ ),
45
+ 'reference' => '7346e10950d76bd53738dc2273b32fe5a459b7af',
46
+ ),
47
+ ),
48
+ );
49
+ private static $canGetVendors;
50
+ private static $installedByVendor = array();
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+ public static function getInstalledPackages()
59
+ {
60
+ $packages = array();
61
+ foreach (self::getInstalled() as $installed) {
62
+ $packages[] = array_keys($installed['versions']);
63
+ }
64
+
65
+
66
+ if (1 === \count($packages)) {
67
+ return $packages[0];
68
+ }
69
+
70
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
71
+ }
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+ public static function isInstalled($packageName)
82
+ {
83
+ foreach (self::getInstalled() as $installed) {
84
+ if (isset($installed['versions'][$packageName])) {
85
+ return true;
86
+ }
87
+ }
88
+
89
+ return false;
90
+ }
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
106
+ {
107
+ $constraint = $parser->parseConstraints($constraint);
108
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
109
+
110
+ return $provided->matches($constraint);
111
+ }
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+ public static function getVersionRanges($packageName)
123
+ {
124
+ foreach (self::getInstalled() as $installed) {
125
+ if (!isset($installed['versions'][$packageName])) {
126
+ continue;
127
+ }
128
+
129
+ $ranges = array();
130
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
131
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
132
+ }
133
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
134
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
135
+ }
136
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
137
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
138
+ }
139
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
140
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
141
+ }
142
+
143
+ return implode(' || ', $ranges);
144
+ }
145
+
146
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
147
+ }
148
+
149
+
150
+
151
+
152
+
153
+ public static function getVersion($packageName)
154
+ {
155
+ foreach (self::getInstalled() as $installed) {
156
+ if (!isset($installed['versions'][$packageName])) {
157
+ continue;
158
+ }
159
+
160
+ if (!isset($installed['versions'][$packageName]['version'])) {
161
+ return null;
162
+ }
163
+
164
+ return $installed['versions'][$packageName]['version'];
165
+ }
166
+
167
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
168
+ }
169
+
170
+
171
+
172
+
173
+
174
+ public static function getPrettyVersion($packageName)
175
+ {
176
+ foreach (self::getInstalled() as $installed) {
177
+ if (!isset($installed['versions'][$packageName])) {
178
+ continue;
179
+ }
180
+
181
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
182
+ return null;
183
+ }
184
+
185
+ return $installed['versions'][$packageName]['pretty_version'];
186
+ }
187
+
188
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
189
+ }
190
+
191
+
192
+
193
+
194
+
195
+ public static function getReference($packageName)
196
+ {
197
+ foreach (self::getInstalled() as $installed) {
198
+ if (!isset($installed['versions'][$packageName])) {
199
+ continue;
200
+ }
201
+
202
+ if (!isset($installed['versions'][$packageName]['reference'])) {
203
+ return null;
204
+ }
205
+
206
+ return $installed['versions'][$packageName]['reference'];
207
+ }
208
+
209
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
210
+ }
211
+
212
+
213
+
214
+
215
+
216
+ public static function getRootPackage()
217
+ {
218
+ $installed = self::getInstalled();
219
+
220
+ return $installed[0]['root'];
221
+ }
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+ public static function getRawData()
230
+ {
231
+ return self::$installed;
232
+ }
233
+
234
+
235
+
236
+
237
+
238
+
239
+
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+ public static function reload($data)
253
+ {
254
+ self::$installed = $data;
255
+ self::$installedByVendor = array();
256
+ }
257
+
258
+
259
+
260
+
261
+ private static function getInstalled()
262
+ {
263
+ if (null === self::$canGetVendors) {
264
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
265
+ }
266
+
267
+ $installed = array();
268
+
269
+ if (self::$canGetVendors) {
270
+
271
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
272
+ if (isset(self::$installedByVendor[$vendorDir])) {
273
+ $installed[] = self::$installedByVendor[$vendorDir];
274
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
275
+ $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
276
+ }
277
+ }
278
+ }
279
+
280
+ $installed[] = self::$installed;
281
+
282
+ return $installed;
283
+ }
284
+ }
vendor/composer/LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ Copyright (c) Nils Adermann, Jordi Boggiano
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is furnished
9
+ to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ THE SOFTWARE.
21
+
vendor/composer/autoload_classmap.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_classmap.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
10
+ );
vendor/composer/autoload_namespaces.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_namespaces.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ );
vendor/composer/autoload_psr4.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_psr4.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ 'Simple301Redirects\\' => array($baseDir . '/includes'),
10
+ );
vendor/composer/autoload_real.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_real.php @generated by Composer
4
+
5
+ class ComposerAutoloaderInit2a140d7e71ef3b0d01203d5c60b8900a
6
+ {
7
+ private static $loader;
8
+
9
+ public static function loadClassLoader($class)
10
+ {
11
+ if ('Composer\Autoload\ClassLoader' === $class) {
12
+ require __DIR__ . '/ClassLoader.php';
13
+ }
14
+ }
15
+
16
+ /**
17
+ * @return \Composer\Autoload\ClassLoader
18
+ */
19
+ public static function getLoader()
20
+ {
21
+ if (null !== self::$loader) {
22
+ return self::$loader;
23
+ }
24
+
25
+ spl_autoload_register(array('ComposerAutoloaderInit2a140d7e71ef3b0d01203d5c60b8900a', 'loadClassLoader'), true, true);
26
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
27
+ spl_autoload_unregister(array('ComposerAutoloaderInit2a140d7e71ef3b0d01203d5c60b8900a', 'loadClassLoader'));
28
+
29
+ $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
+ if ($useStaticLoader) {
31
+ require __DIR__ . '/autoload_static.php';
32
+
33
+ call_user_func(\Composer\Autoload\ComposerStaticInit2a140d7e71ef3b0d01203d5c60b8900a::getInitializer($loader));
34
+ } else {
35
+ $map = require __DIR__ . '/autoload_namespaces.php';
36
+ foreach ($map as $namespace => $path) {
37
+ $loader->set($namespace, $path);
38
+ }
39
+
40
+ $map = require __DIR__ . '/autoload_psr4.php';
41
+ foreach ($map as $namespace => $path) {
42
+ $loader->setPsr4($namespace, $path);
43
+ }
44
+
45
+ $classMap = require __DIR__ . '/autoload_classmap.php';
46
+ if ($classMap) {
47
+ $loader->addClassMap($classMap);
48
+ }
49
+ }
50
+
51
+ $loader->register(true);
52
+
53
+ return $loader;
54
+ }
55
+ }
vendor/composer/autoload_static.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_static.php @generated by Composer
4
+
5
+ namespace Composer\Autoload;
6
+
7
+ class ComposerStaticInit2a140d7e71ef3b0d01203d5c60b8900a
8
+ {
9
+ public static $prefixLengthsPsr4 = array (
10
+ 'S' =>
11
+ array (
12
+ 'Simple301Redirects\\' => 19,
13
+ ),
14
+ );
15
+
16
+ public static $prefixDirsPsr4 = array (
17
+ 'Simple301Redirects\\' =>
18
+ array (
19
+ 0 => __DIR__ . '/../..' . '/includes',
20
+ ),
21
+ );
22
+
23
+ public static $classMap = array (
24
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
25
+ );
26
+
27
+ public static function getInitializer(ClassLoader $loader)
28
+ {
29
+ return \Closure::bind(function () use ($loader) {
30
+ $loader->prefixLengthsPsr4 = ComposerStaticInit2a140d7e71ef3b0d01203d5c60b8900a::$prefixLengthsPsr4;
31
+ $loader->prefixDirsPsr4 = ComposerStaticInit2a140d7e71ef3b0d01203d5c60b8900a::$prefixDirsPsr4;
32
+ $loader->classMap = ComposerStaticInit2a140d7e71ef3b0d01203d5c60b8900a::$classMap;
33
+
34
+ }, null, ClassLoader::class);
35
+ }
36
+ }
vendor/composer/installed.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ {
2
+ "packages": [],
3
+ "dev": true,
4
+ "dev-package-names": []
5
+ }
vendor/composer/installed.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php return array (
2
+ 'root' =>
3
+ array (
4
+ 'pretty_version' => 'dev-master',
5
+ 'version' => 'dev-master',
6
+ 'aliases' =>
7
+ array (
8
+ ),
9
+ 'reference' => '7346e10950d76bd53738dc2273b32fe5a459b7af',
10
+ 'name' => 'wpdevteam/simple-301-redirects',
11
+ ),
12
+ 'versions' =>
13
+ array (
14
+ 'wpdevteam/simple-301-redirects' =>
15
+ array (
16
+ 'pretty_version' => 'dev-master',
17
+ 'version' => 'dev-master',
18
+ 'aliases' =>
19
+ array (
20
+ ),
21
+ 'reference' => '7346e10950d76bd53738dc2273b32fe5a459b7af',
22
+ ),
23
+ ),
24
+ );
wp-simple-301-redirects.php CHANGED
@@ -1,318 +1,200 @@
1
- <?php
2
- /*
3
- Plugin Name: Simple 301 Redirects
4
- Plugin URI: http://www.scottnelle.com/simple-301-redirects-plugin-for-wordpress/
5
- Description: Create a list of URLs that you would like to 301 redirect to another page or site. Now with wildcard support.
6
- Version: 1.07
7
- Author: Scott Nellé
8
- Author URI: http://www.scottnelle.com/
9
- */
10
-
11
- /* Copyright 2009-2013 Scott Nellé (email : contact@scottnelle.com)
12
-
13
- This program is free software; you can redistribute it and/or modify
14
- it under the terms of the GNU General Public License as published by
15
- the Free Software Foundation; either version 2 of the License, or
16
- (at your option) any later version.
17
-
18
- This program is distributed in the hope that it will be useful,
19
- but WITHOUT ANY WARRANTY; without even the implied warranty of
20
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21
- GNU General Public License for more details.
22
-
23
- You should have received a copy of the GNU General Public License
24
- along with this program; if not, write to the Free Software
25
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
26
- */
27
-
28
- if (!class_exists("Simple301redirects")) {
29
-
30
- class Simple301Redirects {
31
-
32
- /**
33
- * create_menu function
34
- * generate the link to the options page under settings
35
- * @access public
36
- * @return void
37
- */
38
- function create_menu() {
39
- add_options_page('301 Redirects', '301 Redirects', 'manage_options', '301options', array($this,'options_page'));
40
- }
41
-
42
- /**
43
- * options_page function
44
- * generate the options page in the wordpress admin
45
- * @access public
46
- * @return void
47
- */
48
- function options_page() {
49
- ?>
50
- <div class="wrap simple_301_redirects">
51
- <script>
52
- //todo: This should be enqued
53
- jQuery(document).ready(function(){
54
- jQuery('span.wps301-delete').html('Delete').css({'color':'red','cursor':'pointer'}).click(function(){
55
- var confirm_delete = confirm('Delete This Redirect?');
56
- if (confirm_delete) {
57
-
58
- // remove element and submit
59
- jQuery(this).parent().parent().remove();
60
- jQuery('#simple_301_redirects_form').submit();
61
-
62
- }
63
- });
64
-
65
- jQuery('.simple_301_redirects .documentation').hide().before('<p><a class="reveal-documentation" href="#">Documentation</a></p>')
66
- jQuery('.reveal-documentation').click(function(){
67
- jQuery(this).parent().siblings('.documentation').slideToggle();
68
- return false;
69
- });
70
- });
71
- </script>
72
-
73
- <?php
74
- if (isset($_POST['301_redirects'])) {
75
- echo '<div id="message" class="updated"><p>Settings saved</p></div>';
76
- }
77
- ?>
78
-
79
- <h2>Simple 301 Redirects</h2>
80
-
81
- <form method="post" id="simple_301_redirects_form" action="options-general.php?page=301options&savedata=true">
82
-
83
- <?php wp_nonce_field( 'save_redirects', '_s301r_nonce' ); ?>
84
-
85
- <table class="widefat">
86
- <thead>
87
- <tr>
88
- <th colspan="2">Request</th>
89
- <th colspan="2">Destination</th>
90
- </tr>
91
- </thead>
92
- <tbody>
93
- <tr>
94
- <td colspan="2"><small>example: /about.htm</small></td>
95
- <td colspan="2"><small>example: <?php echo get_option('home'); ?>/about/</small></td>
96
- </tr>
97
- <?php echo $this->expand_redirects(); ?>
98
- <tr>
99
- <td style="width:35%;"><input type="text" name="301_redirects[request][]" value="" style="width:99%;" /></td>
100
- <td style="width:2%;">&raquo;</td>
101
- <td style="width:60%;"><input type="text" name="301_redirects[destination][]" value="" style="width:99%;" /></td>
102
- <td><span class="wps301-delete">Delete</span></td>
103
- </tr>
104
- </tbody>
105
- </table>
106
-
107
- <?php $wildcard_checked = (get_option('301_redirects_wildcard') === 'true' ? ' checked="checked"' : ''); ?>
108
- <p><input type="checkbox" name="301_redirects[wildcard]" id="wps301-wildcard"<?php echo $wildcard_checked; ?> /><label for="wps301-wildcard"> Use Wildcards?</label></p>
109
-
110
- <p class="submit"><input type="submit" name="submit_301" class="button-primary" value="<?php _e('Save Changes') ?>" /></p>
111
- </form>
112
- <div class="documentation">
113
- <h2>Documentation</h2>
114
- <h3>Simple Redirects</h3>
115
- <p>Simple redirects work similar to the format that Apache uses: the request should be relative to your WordPress root. The destination can be either a full URL to any page on the web, or relative to your WordPress root.</p>
116
- <h4>Example</h4>
117
- <ul>
118
- <li><strong>Request:</strong> /old-page/</li>
119
- <li><strong>Destination:</strong> /new-page/</li>
120
- </ul>
121
-
122
- <h3>Wildcards</h3>
123
- <p>To use wildcards, put an asterisk (*) after the folder name that you want to redirect.</p>
124
- <h4>Example</h4>
125
- <ul>
126
- <li><strong>Request:</strong> /old-folder/*</li>
127
- <li><strong>Destination:</strong> /redirect-everything-here/</li>
128
- </ul>
129
-
130
- <p>You can also use the asterisk in the destination to replace whatever it matched in the request if you like. Something like this:</p>
131
- <h4>Example</h4>
132
- <ul>
133
- <li><strong>Request:</strong> /old-folder/*</li>
134
- <li><strong>Destination:</strong> /some/other/folder/*</li>
135
- </ul>
136
- <p>Or:</p>
137
- <ul>
138
- <li><strong>Request:</strong> /old-folder/*/content/</li>
139
- <li><strong>Destination:</strong> /some/other/folder/*</li>
140
- </ul>
141
- </div>
142
- </div>
143
- <?php
144
- } // end of function options_page
145
-
146
- /**
147
- * expand_redirects function
148
- * utility function to return the current list of redirects as form fields
149
- * @access public
150
- * @return string <html>
151
- */
152
- function expand_redirects() {
153
- $redirects = get_option('301_redirects');
154
- $output = '';
155
- if (!empty($redirects)) {
156
- foreach ($redirects as $request => $destination) {
157
- $output .= '
158
-
159
- <tr>
160
- <td><input type="text" name="301_redirects[request][]" value="'.$request.'" style="width:99%" /></td>
161
- <td>&raquo;</td>
162
- <td><input type="text" name="301_redirects[destination][]" value="'.$destination.'" style="width:99%;" /></td>
163
- <td><span class="wps301-delete"></span></td>
164
- </tr>
165
-
166
- ';
167
- }
168
- } // end if
169
- return $output;
170
- }
171
-
172
- /**
173
- * save_redirects function
174
- * save the redirects from the options page to the database
175
- * @access public
176
- * @param mixed $data
177
- * @return void
178
- */
179
- function save_redirects($data) {
180
- if ( !current_user_can('manage_options') ) { wp_die( 'You do not have sufficient permissions to access this page.' ); }
181
- check_admin_referer( 'save_redirects', '_s301r_nonce' );
182
-
183
- $data = $_POST['301_redirects'];
184
-
185
- $redirects = array();
186
-
187
- for($i = 0; $i < sizeof($data['request']); ++$i) {
188
- $request = trim( sanitize_text_field( $data['request'][$i] ) );
189
- $destination = trim( sanitize_text_field( $data['destination'][$i] ) );
190
-
191
- if ($request == '' && $destination == '') { continue; }
192
- else { $redirects[$request] = $destination; }
193
- }
194
-
195
- update_option('301_redirects', $redirects);
196
-
197
- if (isset($data['wildcard'])) {
198
- update_option('301_redirects_wildcard', 'true');
199
- }
200
- else {
201
- delete_option('301_redirects_wildcard');
202
- }
203
- }
204
-
205
- /**
206
- * redirect function
207
- * Read the list of redirects and if the current page
208
- * is found in the list, send the visitor on her way
209
- * @access public
210
- * @return void
211
- */
212
- function redirect() {
213
- // this is what the user asked for (strip out home portion, case insensitive)
214
- $userrequest = str_ireplace(get_option('home'),'',$this->get_address());
215
- $userrequest = rtrim($userrequest,'/');
216
-
217
- $redirects = get_option('301_redirects');
218
- if (!empty($redirects)) {
219
-
220
- $wildcard = get_option('301_redirects_wildcard');
221
- $do_redirect = '';
222
-
223
- // compare user request to each 301 stored in the db
224
- foreach ($redirects as $storedrequest => $destination) {
225
- // check if we should use regex search
226
- if ($wildcard === 'true' && strpos($storedrequest,'*') !== false) {
227
- // wildcard redirect
228
-
229
- // don't allow people to accidentally lock themselves out of admin
230
- if ( strpos($userrequest, '/wp-login') !== 0 && strpos($userrequest, '/wp-admin') !== 0 ) {
231
- // Make sure it gets all the proper decoding and rtrim action
232
- $storedrequest = str_replace('*','(.*)',$storedrequest);
233
- $pattern = '/^' . str_replace( '/', '\/', rtrim( $storedrequest, '/' ) ) . '/';
234
- $destination = str_replace('*','$1',$destination);
235
- $output = preg_replace($pattern, $destination, $userrequest);
236
- if ($output !== $userrequest) {
237
- // pattern matched, perform redirect
238
- $do_redirect = $output;
239
- }
240
- }
241
- }
242
- elseif(urldecode($userrequest) == rtrim($storedrequest,'/')) {
243
- // simple comparison redirect
244
- $do_redirect = $destination;
245
- }
246
-
247
- // redirect. the second condition here prevents redirect loops as a result of wildcards.
248
- if ($do_redirect !== '' && trim($do_redirect,'/') !== trim($userrequest,'/')) {
249
- // check if destination needs the domain prepended
250
- if (strpos($do_redirect,'/') === 0){
251
- $do_redirect = home_url().$do_redirect;
252
- }
253
- header ('HTTP/1.1 301 Moved Permanently');
254
- header ('Location: ' . $do_redirect);
255
- exit();
256
- }
257
- else { unset($redirects); }
258
- }
259
- }
260
- } // end funcion redirect
261
-
262
- /**
263
- * getAddress function
264
- * utility function to get the full address of the current request
265
- * credit: http://www.phpro.org/examples/Get-Full-URL.html
266
- * @access public
267
- * @return void
268
- */
269
- function get_address() {
270
- // return the full address
271
- return $this->get_protocol().'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
272
- } // end function get_address
273
-
274
- function get_protocol() {
275
- // Set the base protocol to http
276
- $protocol = 'http';
277
- // check for https
278
- if ( isset( $_SERVER["HTTPS"] ) && strtolower( $_SERVER["HTTPS"] ) == "on" ) {
279
- $protocol .= "s";
280
- }
281
-
282
- return $protocol;
283
- } // end function get_protocol
284
-
285
- } // end class Simple301Redirects
286
-
287
- } // end check for existance of class
288
-
289
- // instantiate
290
- $redirect_plugin = new Simple301Redirects();
291
-
292
- if (isset($redirect_plugin)) {
293
- // add the redirect action, high priority
294
- add_action('init', array($redirect_plugin,'redirect'), 1);
295
-
296
- // create the menu
297
- add_action('admin_menu', array($redirect_plugin,'create_menu'));
298
-
299
- // if submitted, process the data
300
- if (isset($_POST['301_redirects'])) {
301
- add_action('admin_init', array($redirect_plugin,'save_redirects'));
302
- }
303
- }
304
-
305
- // this is here for php4 compatibility
306
- if(!function_exists('str_ireplace')){
307
- function str_ireplace($search,$replace,$subject){
308
- $token = chr(1);
309
- $haystack = strtolower($subject);
310
- $needle = strtolower($search);
311
- while (($pos=strpos($haystack,$needle))!==FALSE){
312
- $subject = substr_replace($subject,$token,$pos,strlen($search));
313
- $haystack = substr_replace($haystack,$token,$pos,strlen($search));
314
- }
315
- $subject = str_replace($token,$replace,$subject);
316
- return $subject;
317
- }
318
- }
1
+ <?php
2
+ /*
3
+ Plugin Name: Simple 301 Redirects
4
+ Plugin URI: https://wordpress.org/plugins/simple-301-redirects/
5
+ Description: Create a list of URLs that you would like to 301 redirect to another page or site. Now with wildcard support.
6
+ Version: 2.0.0
7
+ Author: WPDeveloper
8
+ Author URI: https://wpdeveloper.net/
9
+ */
10
+
11
+ /* Copyright 2009-2021 WPDeveloper
12
+
13
+ This program is free software; you can redistribute it and/or modify
14
+ it under the terms of the GNU General Public License as published by
15
+ the Free Software Foundation; either version 2 of the License, or
16
+ (at your option) any later version.
17
+
18
+ This program is distributed in the hope that it will be useful,
19
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21
+ GNU General Public License for more details.
22
+
23
+ You should have received a copy of the GNU General Public License
24
+ along with this program; if not, write to the Free Software
25
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
26
+ */
27
+
28
+ if (!defined('ABSPATH')) {
29
+ exit();
30
+ }
31
+
32
+ if (file_exists(dirname(__FILE__) . '/vendor/autoload.php')) {
33
+ require_once dirname(__FILE__) . '/vendor/autoload.php';
34
+ }
35
+
36
+
37
+ if (!class_exists("Simple301redirects")) {
38
+
39
+ final class Simple301Redirects {
40
+
41
+ private function __construct()
42
+ {
43
+ $this->define_constants();
44
+ add_action('plugins_loaded', [$this, 'on_plugins_loaded']);
45
+ add_action('simple301redirects_loaded', [$this, 'init_plugin']);
46
+ // add the redirect action, high priority
47
+ add_action('init', array($this,'redirect'), 1);
48
+ }
49
+ public static function init()
50
+ {
51
+ static $instance = false;
52
+
53
+ if (!$instance) {
54
+ $instance = new self();
55
+ }
56
+
57
+ return $instance;
58
+ }
59
+
60
+ public function on_plugins_loaded()
61
+ {
62
+ do_action('simple301redirects_loaded');
63
+ }
64
+
65
+ public function define_constants()
66
+ {
67
+ define('SIMPLE301REDIRECTS_VERSION', '2.0.0');
68
+ define('SIMPLE301REDIRECTS_SETTINGS_NAME', '301_redirects');
69
+ define('SIMPLE301REDIRECTS_PLUGIN_FILE', __FILE__);
70
+ define('SIMPLE301REDIRECTS_PLUGIN_BASENAME', plugin_basename(__FILE__));
71
+ define('SIMPLE301REDIRECTS_PLUGIN_SLUG', 'simple-301-redirects');
72
+ define('SIMPLE301REDIRECTS_PLUGIN_ROOT_URI', plugins_url('/', __FILE__));
73
+ define('SIMPLE301REDIRECTS_ROOT_DIR_PATH', plugin_dir_path(__FILE__));
74
+ define('SIMPLE301REDIRECTS_ASSETS_DIR_PATH', SIMPLE301REDIRECTS_ROOT_DIR_PATH . 'assets/');
75
+ define('SIMPLE301REDIRECTS_ASSETS_URI', SIMPLE301REDIRECTS_PLUGIN_ROOT_URI . 'assets/');
76
+ }
77
+
78
+ /**
79
+ * Initialize the plugin
80
+ *
81
+ * @return void
82
+ */
83
+ public function init_plugin()
84
+ {
85
+ $this->load_textdomain();
86
+ if (is_admin()) {
87
+ new Simple301Redirects\Admin();
88
+ }
89
+ new Simple301Redirects\API();
90
+ $this->load_installer();
91
+ }
92
+
93
+ public function load_textdomain()
94
+ {
95
+ load_plugin_textdomain('simple-301-redirects', false, dirname(dirname(plugin_basename(__FILE__))) . '/languages/');
96
+ }
97
+ public function load_installer()
98
+ {
99
+ $Installer = new Simple301Redirects\Installer();
100
+ $Installer->migrate();
101
+ }
102
+ /**
103
+ * redirect function
104
+ * Read the list of redirects and if the current page
105
+ * is found in the list, send the visitor on her way
106
+ * @access public
107
+ * @return void
108
+ */
109
+ function redirect() {
110
+ // this is what the user asked for (strip out home portion, case insensitive)
111
+ $userrequest = \Simple301Redirects\Helper::str_ireplace(get_option('home'),'',$this->get_address());
112
+ $userrequest = rtrim($userrequest,'/');
113
+
114
+ $redirects = get_option('301_redirects');
115
+ if (!empty($redirects)) {
116
+
117
+ $wildcard = get_option('301_redirects_wildcard');
118
+ $do_redirect = '';
119
+
120
+ // compare user request to each 301 stored in the db
121
+ foreach ($redirects as $storedrequest => $destination) {
122
+ // check if we should use regex search
123
+ if ($wildcard === 'true' && strpos($storedrequest,'*') !== false) {
124
+ // wildcard redirect
125
+
126
+ // don't allow people to accidentally lock themselves out of admin
127
+ if ( strpos($userrequest, '/wp-login') !== 0 && strpos($userrequest, '/wp-admin') !== 0 ) {
128
+ // Make sure it gets all the proper decoding and rtrim action
129
+ $storedrequest = str_replace('*','(.*)',$storedrequest);
130
+ $pattern = '/^' . str_replace( '/', '\/', rtrim( $storedrequest, '/' ) ) . '/';
131
+ $destination = str_replace('*','$1',$destination);
132
+ $output = preg_replace($pattern, $destination, $userrequest);
133
+ if ($output !== $userrequest) {
134
+ // pattern matched, perform redirect
135
+ $do_redirect = $output;
136
+ }
137
+ }
138
+ }
139
+ elseif(urldecode($userrequest) == rtrim($storedrequest,'/')) {
140
+ // simple comparison redirect
141
+ $do_redirect = $destination;
142
+ }
143
+
144
+ // redirect. the second condition here prevents redirect loops as a result of wildcards.
145
+ if ($do_redirect !== '' && trim($do_redirect,'/') !== trim($userrequest,'/')) {
146
+ // check if destination needs the domain prepended
147
+ if (strpos($do_redirect,'/') === 0){
148
+ $do_redirect = home_url().$do_redirect;
149
+ }
150
+ header ('HTTP/1.1 301 Moved Permanently');
151
+ header ('Location: ' . $do_redirect);
152
+ exit();
153
+ }
154
+ else { unset($redirects); }
155
+ }
156
+ }
157
+ } // end funcion redirect
158
+
159
+ /**
160
+ * getAddress function
161
+ * utility function to get the full address of the current request
162
+ * credit: http://www.phpro.org/examples/Get-Full-URL.html
163
+ * @access public
164
+ * @return void
165
+ */
166
+ function get_address() {
167
+ // return the full address
168
+ return $this->get_protocol().'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
169
+ } // end function get_address
170
+
171
+ function get_protocol() {
172
+ // Set the base protocol to http
173
+ $protocol = 'http';
174
+ // check for https
175
+ if ( isset( $_SERVER["HTTPS"] ) && strtolower( $_SERVER["HTTPS"] ) == "on" ) {
176
+ $protocol .= "s";
177
+ }
178
+
179
+ return $protocol;
180
+ } // end function get_protocol
181
+
182
+ } // end class Simple301Redirects
183
+
184
+ } // end check for existance of class
185
+
186
+
187
+ /**
188
+ * Initializes the main plugin
189
+ *
190
+ * @return \Simple301Redirects
191
+ */
192
+ if (!function_exists('Simple301Redirects_Start')) {
193
+ function Simple301Redirects_Start()
194
+ {
195
+ return Simple301Redirects::init();
196
+ }
197
+ }
198
+
199
+ // Plugin Start
200
+ Simple301Redirects_Start();