├── .gitignore ├── README.md ├── README_zh.md ├── asset ├── tabb1.png └── tabb2.png └── dist └── chrome ├── assets ├── Fascinate.woff2 ├── Inter-Black.ttf ├── Inter-Bold.ttf ├── Inter-ExtraBold.ttf ├── Inter-ExtraLight.ttf ├── Inter-Light.ttf ├── Inter-Medium.ttf ├── Inter-Regular.ttf ├── Inter-SemiBold.ttf ├── Inter-Thin.ttf └── icon.png ├── icon128.plasmo.3c1ed2d2.png ├── icon16.plasmo.6c567d50.png ├── icon32.plasmo.76b92899.png ├── icon48.plasmo.aced7582.png ├── icon64.plasmo.8bb5e6e0.png ├── manifest.json ├── offscreen.07c5b12a.js ├── offscreen.bf42e808.html ├── options.95eda3f3.js ├── options.html ├── static └── background │ └── index.js └── tabb-search.f53f417c.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # tabb 2 | 3 | #### summary 4 | 5 | The internal search in the browser can only search based on url/title, while tabb can search based on the content of the page, supporting searching for the content of tab/bookmark/history. 6 | 7 | The effect is as follows: 8 | 9 | ![tabb1](./asset/tabb1.png) 10 | 11 | ![tabb2](./asset/tabb2.png) 12 | 13 | #### Installation/Usage 14 | 15 | You need to enable developer mode and then load dist/chrome. 16 | 17 | After installation, simply click on the icon or use Cmd+K (mac), Ctrl+K (other) to use it. 18 | 19 | Tabb: A browser extension tool that allows deep searching of Tabs/Bookmarks/History. 20 | 21 | You can search for content on a page. I saw a tool before that could search for Tabs, often I would have browsed a page earlier but couldn't find it again. The internal tools of the browser can only search url/title; so I made a small tool that can index url/title/content. 22 | 23 | Feel free to try it out! 24 | 25 | Project link: https://github.com/Infinite1loop/tabb 26 | -------------------------------------------------------------------------------- /README_zh.md: -------------------------------------------------------------------------------- 1 | # tabb 2 | 3 | #### 简介 4 | 5 | 浏览器内部的搜索只能根据 url/title 进行搜索, tabb可以根据页面的内容进行搜索,支持对 tab/bookmark/history 的内容进行搜索 6 | 7 | 效果如下: 8 | ![tabb1](./asset/tabb1.png) 9 | ![tabb2](./asset/tabb2.png) 10 | 11 | 12 | 13 | #### 安装/使用 14 | 15 | 需要开启开发者模式, 然后加载 dist/chrome 16 | 17 | 安装之后, 直接点击图标 或者 Cmd+K (mac), Ctrl+K(other) 使用 18 | 19 | 20 | Tabb: 一个可以深度搜索 Tab/Bookmark/History 的浏览器扩展工具 21 | 22 | 可以搜索页面的内容, 之前看到有一个可以搜索Tab的工具, 经常会之前浏览或一个页面, 但是怎么也找不到,浏览器内部的工具只能搜索 url/title; 所以做了一个小工具,可以索引 url/title/content 23 | 24 | 欢迎尝试 25 | 项目地址: https://github.com/Infinite1loop/tabb 26 | -------------------------------------------------------------------------------- /asset/tabb1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/asset/tabb1.png -------------------------------------------------------------------------------- /asset/tabb2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/asset/tabb2.png -------------------------------------------------------------------------------- /dist/chrome/assets/Fascinate.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/dist/chrome/assets/Fascinate.woff2 -------------------------------------------------------------------------------- /dist/chrome/assets/Inter-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/dist/chrome/assets/Inter-Black.ttf -------------------------------------------------------------------------------- /dist/chrome/assets/Inter-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/dist/chrome/assets/Inter-Bold.ttf -------------------------------------------------------------------------------- /dist/chrome/assets/Inter-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/dist/chrome/assets/Inter-ExtraBold.ttf -------------------------------------------------------------------------------- /dist/chrome/assets/Inter-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/dist/chrome/assets/Inter-ExtraLight.ttf -------------------------------------------------------------------------------- /dist/chrome/assets/Inter-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/dist/chrome/assets/Inter-Light.ttf -------------------------------------------------------------------------------- /dist/chrome/assets/Inter-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/dist/chrome/assets/Inter-Medium.ttf -------------------------------------------------------------------------------- /dist/chrome/assets/Inter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/dist/chrome/assets/Inter-Regular.ttf -------------------------------------------------------------------------------- /dist/chrome/assets/Inter-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/dist/chrome/assets/Inter-SemiBold.ttf -------------------------------------------------------------------------------- /dist/chrome/assets/Inter-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/dist/chrome/assets/Inter-Thin.ttf -------------------------------------------------------------------------------- /dist/chrome/assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/dist/chrome/assets/icon.png -------------------------------------------------------------------------------- /dist/chrome/icon128.plasmo.3c1ed2d2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/dist/chrome/icon128.plasmo.3c1ed2d2.png -------------------------------------------------------------------------------- /dist/chrome/icon16.plasmo.6c567d50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/dist/chrome/icon16.plasmo.6c567d50.png -------------------------------------------------------------------------------- /dist/chrome/icon32.plasmo.76b92899.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/dist/chrome/icon32.plasmo.76b92899.png -------------------------------------------------------------------------------- /dist/chrome/icon48.plasmo.aced7582.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/dist/chrome/icon48.plasmo.aced7582.png -------------------------------------------------------------------------------- /dist/chrome/icon64.plasmo.8bb5e6e0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/infiolab/tabb/e0555d919807bcddda93f4155fe474f0e75c765d/dist/chrome/icon64.plasmo.8bb5e6e0.png -------------------------------------------------------------------------------- /dist/chrome/manifest.json: -------------------------------------------------------------------------------- 1 | {"icons":{"16":"icon16.plasmo.6c567d50.png","32":"icon32.plasmo.76b92899.png","48":"icon48.plasmo.aced7582.png","64":"icon64.plasmo.8bb5e6e0.png","128":"icon128.plasmo.3c1ed2d2.png"},"manifest_version":3,"action":{"default_icon":{"16":"icon16.plasmo.6c567d50.png","32":"icon32.plasmo.76b92899.png","48":"icon48.plasmo.aced7582.png","64":"icon64.plasmo.8bb5e6e0.png","128":"icon128.plasmo.3c1ed2d2.png"}},"version":"0.0.1","author":"duanfuxiang0@gmail.com>","name":"Tabb","description":"Tabb is search engine for your browser tabs, history and bookmarks","background":{"service_worker":"static/background/index.js"},"options_ui":{"page":"options.html","open_in_tab":true},"permissions":["storage","tabs","scripting","favicon","search","activeTab","bookmarks","browsingData","history","offscreen",""],"content_scripts":[{"matches":["https://*/*"],"js":["tabb-search.f53f417c.js"],"css":[]}],"commands":{"open-tabb":{"suggested_key":{"default":"Ctrl+K","mac":"Command+K"},"description":"Open command menu"}},"host_permissions":["https://*/*"],"web_accessible_resources":[{"resources":["assets/*"],"matches":["https://*/*"]},{"matches":["https://*/*"],"resources":["tabb-search.2bdfa2ec.css"]}]} -------------------------------------------------------------------------------- /dist/chrome/offscreen.07c5b12a.js: -------------------------------------------------------------------------------- 1 | var e,n;"function"==typeof(e=globalThis.define)&&(n=e,e=null),function(n,t,r,i,o){var l="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},a="function"==typeof l[i]&&l[i],u=a.cache||{},c="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function s(e,t){if(!u[e]){if(!n[e]){var r="function"==typeof l[i]&&l[i];if(!t&&r)return r(e,!0);if(a)return a(e,!0);if(c&&"string"==typeof e)return c(e);var o=Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}d.resolve=function(t){var r=n[e][1][t];return null!=r?r:t},d.cache={};var f=u[e]=new s.Module(e);n[e][0].call(f.exports,d,f,f.exports,this)}return u[e].exports;function d(e){var n=d.resolve(e);return!1===n?{}:s(n)}}s.isParcelRequire=!0,s.Module=function(e){this.id=e,this.bundle=s,this.exports={}},s.modules=n,s.cache=u,s.parent=a,s.register=function(e,t){n[e]=[function(e,n){n.exports=t},{}]},Object.defineProperty(s,"root",{get:function(){return l[i]}}),l[i]=s;for(var f=0;f{if("convert-markdown"===e.type){try{let n=new DOMParser,r=n.parseFromString(e.rawHtml,"text/html"),i=l.turndown(r.body.outerHTML),o=[/(\*{1,2}|\_{1,2})(\S(.*?\S)?)\1/g,/(\~\~)(\S(.*?\S)?)\1/g,/\[(.*?)\](?:\((.*?)\))?/g,/^\s*[\*\-\+]\s+(.*)$/gm,/^#+\s*(.*?)\s*#*$/gm,/^>\s*(.*)$/gm,/^-{3,}$/gm,/`(.*)`/gm,/\|(.*)\|/gm,/(.*)\n={2,}/gm,/(.*)\n-{2,}/gm].reduce((e,n,t)=>[0,1,8,9,10].includes(t)?e.replace(n,"$2"):2===t?e.replace(n,"$1"):6===t?e.replace(n,""):e.replace(n,"$1"),i).replace(/[\r\n\f]+/g," ").replace(/[ \t]+/g," ");t(o)}catch(e){console.error("Error:",e)}return!0}};chrome.runtime.onMessage.addListener(a)},{turndown:"cCSz0","@parcel/transformer-js/src/esmodule-helpers.js":"hbR2Q"}],cCSz0:[function(e,n,t){function r(e,n){return Array(n+1).join(e)}e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(t);var i,o,l=["ADDRESS","ARTICLE","ASIDE","AUDIO","BLOCKQUOTE","BODY","CANVAS","CENTER","DD","DIR","DIV","DL","DT","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","FRAMESET","H1","H2","H3","H4","H5","H6","HEADER","HGROUP","HR","HTML","ISINDEX","LI","MAIN","MENU","NAV","NOFRAMES","NOSCRIPT","OL","OUTPUT","P","PRE","SECTION","TABLE","TBODY","TD","TFOOT","TH","THEAD","TR","UL"];function a(e){return f(e,l)}var u=["AREA","BASE","BR","COL","COMMAND","EMBED","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR"];function c(e){return f(e,u)}var s=["A","TABLE","THEAD","TBODY","TFOOT","TH","TD","IFRAME","SCRIPT","AUDIO","VIDEO"];function f(e,n){return n.indexOf(e.nodeName)>=0}function d(e,n){return e.getElementsByTagName&&n.some(function(n){return e.getElementsByTagName(n).length})}var p={};function m(e){return e?e.replace(/(\n+\s*)+/g,"\n"):""}function h(e){for(var n in this.options=e,this._keep=[],this._remove=[],this.blankRule={replacement:e.blankReplacement},this.keepReplacement=e.keepReplacement,this.defaultRule={replacement:e.defaultReplacement},this.array=[],e.rules)this.array.push(e.rules[n])}function g(e,n,t){for(var r=0;r-1)return!0}else if("function"==typeof r){if(r.call(e,n,t))return!0}else throw TypeError("`filter` needs to be a string, array, or function")}(i,n,t))return i}}function y(e){var n=e.nextSibling||e.parentNode;return e.parentNode.removeChild(e),n}function v(e,n,t){return e&&e.parentNode===n||t(n)?n.nextSibling||n.parentNode:n.firstChild||n.nextSibling||n.parentNode}p.paragraph={filter:"p",replacement:function(e){return"\n\n"+e+"\n\n"}},p.lineBreak={filter:"br",replacement:function(e,n,t){return t.br+"\n"}},p.heading={filter:["h1","h2","h3","h4","h5","h6"],replacement:function(e,n,t){var i=Number(n.nodeName.charAt(1));if("setext"!==t.headingStyle||!(i<3))return"\n\n"+r("#",i)+" "+e+"\n\n";var o=r(1===i?"=":"-",e.length);return"\n\n"+e+"\n"+o+"\n\n"}},p.blockquote={filter:"blockquote",replacement:function(e){return"\n\n"+(e=(e=e.replace(/^\n+|\n+$/g,"")).replace(/^/gm,"> "))+"\n\n"}},p.list={filter:["ul","ol"],replacement:function(e,n){var t=n.parentNode;return"LI"===t.nodeName&&t.lastElementChild===n?"\n"+e:"\n\n"+e+"\n\n"}},p.listItem={filter:"li",replacement:function(e,n,t){e=e.replace(/^\n+/,"").replace(/\n+$/,"\n").replace(/\n/gm,"\n ");var r=t.bulletListMarker+" ",i=n.parentNode;if("OL"===i.nodeName){var o=i.getAttribute("start"),l=Array.prototype.indexOf.call(i.children,n);r=(o?Number(o)+l:l+1)+". "}return r+e+(n.nextSibling&&!/\n$/.test(e)?"\n":"")}},p.indentedCodeBlock={filter:function(e,n){return"indented"===n.codeBlockStyle&&"PRE"===e.nodeName&&e.firstChild&&"CODE"===e.firstChild.nodeName},replacement:function(e,n,t){return"\n\n "+n.firstChild.textContent.replace(/\n/g,"\n ")+"\n\n"}},p.fencedCodeBlock={filter:function(e,n){return"fenced"===n.codeBlockStyle&&"PRE"===e.nodeName&&e.firstChild&&"CODE"===e.firstChild.nodeName},replacement:function(e,n,t){for(var i,o=((n.firstChild.getAttribute("class")||"").match(/language-(\S+)/)||[null,""])[1],l=n.firstChild.textContent,a=t.fence.charAt(0),u=3,c=RegExp("^"+a+"{3,}","gm");i=c.exec(l);)i[0].length>=u&&(u=i[0].length+1);var s=r(a,u);return"\n\n"+s+o+"\n"+l.replace(/\n$/,"")+"\n"+s+"\n\n"}},p.horizontalRule={filter:"hr",replacement:function(e,n,t){return"\n\n"+t.hr+"\n\n"}},p.inlineLink={filter:function(e,n){return"inlined"===n.linkStyle&&"A"===e.nodeName&&e.getAttribute("href")},replacement:function(e,n){var t=n.getAttribute("href"),r=m(n.getAttribute("title"));return r&&(r=' "'+r+'"'),"["+e+"]("+t+r+")"}},p.referenceLink={filter:function(e,n){return"referenced"===n.linkStyle&&"A"===e.nodeName&&e.getAttribute("href")},replacement:function(e,n,t){var r,i,o=n.getAttribute("href"),l=m(n.getAttribute("title"));switch(l&&(l=' "'+l+'"'),t.linkReferenceStyle){case"collapsed":r="["+e+"][]",i="["+e+"]: "+o+l;break;case"shortcut":r="["+e+"]",i="["+e+"]: "+o+l;break;default:var a=this.references.length+1;r="["+e+"]["+a+"]",i="["+a+"]: "+o+l}return this.references.push(i),r},references:[],append:function(e){var n="";return this.references.length&&(n="\n\n"+this.references.join("\n")+"\n\n",this.references=[]),n}},p.emphasis={filter:["em","i"],replacement:function(e,n,t){return e.trim()?t.emDelimiter+e+t.emDelimiter:""}},p.strong={filter:["strong","b"],replacement:function(e,n,t){return e.trim()?t.strongDelimiter+e+t.strongDelimiter:""}},p.code={filter:function(e){var n=e.previousSibling||e.nextSibling,t="PRE"===e.parentNode.nodeName&&!n;return"CODE"===e.nodeName&&!t},replacement:function(e){if(!e)return"";e=e.replace(/\r?\n|\r/g," ");for(var n=/^`|^ .*?[^ ].* $|`$/.test(e)?" ":"",t="`",r=e.match(/`+/gm)||[];-1!==r.indexOf(t);)t+="`";return t+n+e+n+t}},p.image={filter:"img",replacement:function(e,n){var t=m(n.getAttribute("alt")),r=n.getAttribute("src")||"",i=m(n.getAttribute("title"));return r?"!["+t+"]("+r+(i?' "'+i+'"':"")+")":""}},h.prototype={add:function(e,n){this.array.unshift(n)},keep:function(e){this._keep.unshift({filter:e,replacement:this.keepReplacement})},remove:function(e){this._remove.unshift({filter:e,replacement:function(){return""}})},forNode:function(e){var n;return e.isBlank?this.blankRule:(n=g(this.array,e,this.options))||(n=g(this._keep,e,this.options))||(n=g(this._remove,e,this.options))?n:this.defaultRule},forEach:function(e){for(var n=0;n'+e+"","text/html").getElementById("turndown-root"):e.cloneNode(!0),isBlock:a,isVoid:c,isPre:n.preformattedCode?T:null}),t}function T(e){return"PRE"===e.nodeName||"CODE"===e.nodeName}function N(e,n){return e.isBlock=a(e),e.isCode="CODE"===e.nodeName||e.parentNode.isCode,e.isBlank=!c(e)&&!f(e,s)&&/^\s*$/i.test(e.textContent)&&!d(e,u)&&!d(e,s),e.flankingWhitespace=function(e,n){if(e.isBlock||n.preformattedCode&&e.isCode)return{leading:"",trailing:""};var t,r={leading:(t=e.textContent.match(/^(([ \t\r\n]*)(\s*))(?:(?=\S)[\s\S]*\S)?((\s*?)([ \t\r\n]*))$/))[1],leadingAscii:t[2],leadingNonAscii:t[3],trailing:t[4],trailingNonAscii:t[5],trailingAscii:t[6]};return r.leadingAscii&&R("left",e,n)&&(r.leading=r.leadingNonAscii),r.trailingAscii&&R("right",e,n)&&(r.trailing=r.trailingNonAscii),{leading:r.leading,trailing:r.trailing}}(e,n),e}function R(e,n,t){var r,i,o;return"left"===e?(r=n.previousSibling,i=/ $/):(r=n.nextSibling,i=/^ /),r&&(3===r.nodeType?o=i.test(r.nodeValue):t.preformattedCode&&"CODE"===r.nodeName?o=!1:1!==r.nodeType||a(r)||(o=i.test(r.textContent))),o}var O=Array.prototype.reduce,C=[[/\\/g,"\\\\"],[/\*/g,"\\*"],[/^-/g,"\\-"],[/^\+ /g,"\\+ "],[/^(=+)/g,"\\$1"],[/^(#{1,6}) /g,"\\$1 "],[/`/g,"\\`"],[/^~~~/g,"\\~~~"],[/\[/g,"\\["],[/\]/g,"\\]"],[/^>/g,"\\>"],[/_/g,"\\_"],[/^(\d+)\. /g,"$1\\. "]];function k(e){if(!(this instanceof k))return new k(e);this.options=function(e){for(var n=1;n0&&"\n"===e[n-1];)n--;return e.substring(0,n)}(e),r=n.replace(/^\n*/,""),i=Math.max(e.length-t.length,n.length-r.length);return t+"\n\n".substring(0,i)+r}k.prototype={turndown:function(e){if(!(null!=e&&("string"==typeof e||e.nodeType&&(1===e.nodeType||9===e.nodeType||11===e.nodeType))))throw TypeError(e+" is not a string, or an element/document/fragment node.");return""===e?"":w.call(this,S.call(this,new E(e,this.options)))},use:function(e){if(Array.isArray(e))for(var n=0;n -------------------------------------------------------------------------------- /dist/chrome/options.95eda3f3.js: -------------------------------------------------------------------------------- 1 | var e,n;"function"==typeof(e=globalThis.define)&&(n=e,e=null),function(n,t,r,l,a){var o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},u="function"==typeof o[l]&&o[l],i=u.cache||{},s="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(e,t){if(!i[e]){if(!n[e]){var r="function"==typeof o[l]&&o[l];if(!t&&r)return r(e,!0);if(u)return u(e,!0);if(s&&"string"==typeof e)return s(e);var a=Error("Cannot find module '"+e+"'");throw a.code="MODULE_NOT_FOUND",a}d.resolve=function(t){var r=n[e][1][t];return null!=r?r:t},d.cache={};var f=i[e]=new c.Module(e);n[e][0].call(f.exports,d,f,f.exports,this)}return i[e].exports;function d(e){var n=d.resolve(e);return!1===n?{}:c(n)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.exports={}},c.modules=n,c.cache=i,c.parent=u,c.register=function(e,t){n[e]=[function(e,n){n.exports=t},{}]},Object.defineProperty(c,"root",{get:function(){return o[l]}}),o[l]=c;for(var f=0;f{if(s)return;s=document.getElementById("__plasmo");let e=(0,o.createRoot)(s),n=(0,u.getLayout)(i);e.render((0,l.jsx)(n,{children:(0,l.jsx)(i.default,{})}))})},{"react/jsx-runtime":"8iOxN",react:"329PG","react-dom/client":"blMEL","@plasmo-static-common/react":"4kz0G","../../options/index.tsx":"5DsfD","@parcel/transformer-js/src/esmodule-helpers.js":"cHUbl"}],"8iOxN":[function(e,n,t){n.exports=e("ba80e5a03a461355")},{ba80e5a03a461355:"hIfNu"}],hIfNu:[function(e,n,t){var r=e("61e3cf0e9433c992"),l=Symbol.for("react.element"),a=Symbol.for("react.fragment"),o=Object.prototype.hasOwnProperty,u=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function s(e,n,t){var r,a={},s=null,c=null;for(r in void 0!==t&&(s=""+t),void 0!==n.key&&(s=""+n.key),void 0!==n.ref&&(c=n.ref),n)o.call(n,r)&&!i.hasOwnProperty(r)&&(a[r]=n[r]);if(e&&e.defaultProps)for(r in n=e.defaultProps)void 0===a[r]&&(a[r]=n[r]);return{$$typeof:l,type:e,key:s,ref:c,props:a,_owner:u.current}}t.Fragment=a,t.jsx=s,t.jsxs=s},{"61e3cf0e9433c992":"329PG"}],"329PG":[function(e,n,t){n.exports=e("ae0ab14aecd941d7")},{ae0ab14aecd941d7:"5ejwk"}],"5ejwk":[function(e,n,t){var r=Symbol.for("react.element"),l=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),u=Symbol.for("react.profiler"),i=Symbol.for("react.provider"),s=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),m=Symbol.iterator,h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,v={};function y(e,n,t){this.props=e,this.context=n,this.refs=v,this.updater=t||h}function b(){}function k(e,n,t){this.props=e,this.context=n,this.refs=v,this.updater=t||h}y.prototype.isReactComponent={},y.prototype.setState=function(e,n){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,n,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=y.prototype;var w=k.prototype=new b;w.constructor=k,g(w,y.prototype),w.isPureReactComponent=!0;var S=Array.isArray,x=Object.prototype.hasOwnProperty,E={current:null},_={key:!0,ref:!0,__self:!0,__source:!0};function C(e,n,t){var l,a={},o=null,u=null;if(null!=n)for(l in void 0!==n.ref&&(u=n.ref),void 0!==n.key&&(o=""+n.key),n)x.call(n,l)&&!_.hasOwnProperty(l)&&(a[l]=n[l]);var i=arguments.length-2;if(1===i)a.children=t;else if(1