diff --git a/Extensions/dist/accesskit.json b/Extensions/dist/accesskit.json new file mode 100644 index 000000000..b911f8552 --- /dev/null +++ b/Extensions/dist/accesskit.json @@ -0,0 +1 @@ +{"id":"accesskit","script":"//* TITLE AccessKit **//\n//* VERSION 2.0.3 **//\n//* DESCRIPTION Accessibility tools for Tumblr **//\n//* DETAILS Provides accessibility tools for XKit and your dashboard, such as increased font sizes, more contrast on icons and more. **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.accesskit = new Object({\n\n\trunning: false,\n\n\tpreferences: {\n\t\t\"sep-1a\": {\n\t\t\ttext: \"Text Adjustments\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\tfont: {\n\t\t\ttext: \"Post Font\",\n\t\t\tdefault: \"default\",\n\t\t\tvalue: \"default\",\n\t\t\ttype: \"combo\",\n\t\t\tvalues: [\n\t\t\t\t\"Default Font\", \"default\",\n\t\t\t\t\"OpenDyslexic (might take a while to load)\", \"opendyslexic\",\n\t\t\t\t\"Serif\", \"sans-serif\"\n\t\t\t],\n\t\t},\n\t\t\"sep-2\": {\n\t\t\ttext: \"Dashboard Adjustments\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\tvisible_captions: {\n\t\t\ttext: \"Make image captions viewable below image\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\tmake_links_blue: {\n\t\t\ttext: \"Make links on the posts on my dashboard blue\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\tno_npf_colors: {\n\t\t\ttext: \"Don't display NPF (user-set) colours in posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\tcontrast_icons: {\n\t\t\ttext: \"Increase the contrast of dashboard icons and text\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\tcontrast_sidebar: {\n\t\t\ttext: \"Increase the contrast of sidebar icons and text\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\tcontrast_notifications: {\n\t\t\ttext: \"Increase the contrast of notifications\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\tincrease_font_size: {\n\t\t\ttext: \"Increase the size of the text\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\tincrease_post_margins: {\n\t\t\ttext: \"Increase the space between posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"sep-3\": {\n\t\t\ttext: \"XKit User Interface Adjustments\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\txkit_disable_counter: {\n\t\t\ttext: \"Disable XKit extensions/settings that might have a negative effect on accessibility\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\txkit_contrast_icons: {\n\t\t\ttext: \"Increase the contrast of XKit user interface\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\txkit_disable_animation: {\n\t\t\ttext: \"Disable some XKit animations\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"sep-1\": {\n\t\t\ttext: \"Color Adjustments\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\tinvert: {\n\t\t\ttext: \"Invert colors (May cause slowness/problems)\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\texperimental: true\n\t\t},\n\t\tgrayscale: {\n\t\t\ttext: \"Use grayscale colors (May cause slowness/problems)\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\texperimental: true\n\t\t},\n\t\tcontrast: {\n\t\t\ttext: \"Increase overall contrast (May cause slowness/problems)\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\texperimental: true\n\t\t}\n\t},\n\n\tcpanel: function() {\n\t\tif (!XKit.page.react) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst deprecated_options = [\n\t\t\t'visible_captions',\n\t\t\t'contrast_sidebar',\n\t\t\t'contrast_icons',\n\t\t\t'contrast_notifications',\n\t\t\t'increase_font_size',\n\t\t\t'xkit_disable_counter',\n\t\t\t'contrast'\n\t\t].map(x => `[data-setting-id=\"${x}\"]`).join(',');\n\n\t\t$(deprecated_options).remove();\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (!XKit.interface.is_tumblr_page()) {\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.tools.init_css('accesskit');\n\n\t\t$.fx.off = this.preferences.xkit_disable_animation.value;\n\n\t\tif (XKit.page.react) {\n\t\t\tconst {font, make_links_blue, no_npf_colors, increase_post_margins, xkit_contrast_icons} = this.preferences;\n\n\t\t\tconst font_families = {\n\t\t\t\t'sans-serif': '\"Palatino Linotype\", \"Book Antiqua\", Palatino, serif',\n\t\t\t\t'opendyslexic': 'open-dyslexic'\n\t\t\t};\n\t\t\tif (font.value !== 'default') {\n\t\t\t\tXKit.tools.add_css(\n\t\t\t\t\t`article { --font-family: ${font_families[font.value]};}`,\n\t\t\t\t\t'accesskit'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (make_links_blue.value) {\n\t\t\t\tXKit.tools.add_css(\n\t\t\t\t\t'article p a { color: rgb(var(--blue)); }',\n\t\t\t\t\t'accesskit'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (no_npf_colors.value) {\n\t\t\t\tXKit.tools.add_css(\n\t\t\t\t\t'article span[style^=\"color:\"] { color: rgb(var(--black)) !important; }',\n\t\t\t\t\t'accesskit'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (increase_post_margins.value) {\n\t\t\t\tXKit.tools.add_css(\n\t\t\t\t\t'article { margin-bottom: 40px; }',\n\t\t\t\t\t'accesskit'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (xkit_contrast_icons.value) {\n\t\t\t\tXKit.tools.add_css(this.xkit_contrast_icons_css, 'accesskit');\n\t\t\t}\n\n\t\t\tconst {invert, grayscale} = this.preferences;\n\t\t\tif (invert.value || grayscale.value) {\n\t\t\t\tconst do_invert = invert.value ? 'invert(100%)' : '';\n\t\t\t\tconst do_grayscale = grayscale.value ? 'grayscale(100%)' : '';\n\t\t\t\tXKit.tools.add_css(`\n\t\t\t\t\thtml {\n\t\t\t\t\t\theight: 100%;\n\t\t\t\t\t}\n\t\t\t\t\tbody {\n\t\t\t\t\t\theight: 100%;\n\t\t\t\t\t\tfilter: ${do_invert} ${do_grayscale};\n\t\t\t\t\t}\n\t\t\t\t`,\n\t\t\t\t'accesskit');\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvar m_css = \"\";\n\n\t\tvar m_filters = \"\";\n\n\t\tif (this.preferences.font.value === \"sans-serif\") {\n\n\t\t\tm_css = m_css + \".post_wrapper * { font-family: \\\"Palatino Linotype\\\", \\\"Book Antiqua\\\", Palatino, serif; } \";\n\n\t\t}\n\n\t\tif (this.preferences.font.value === \"opendyslexic\") {\n\n\t\t\tm_css = m_css + \" @font-face { font-family: open-dyslexic; src: url('https://cdn.jsdelivr.net/open-dyslexic/2.1.0/ttf/OpenDyslexic-Regular.ttf'); }\" +\n\t\t\t\t\t\" .post_wrapper *{ font-family: open-dyslexic; } \";\n\n\t\t}\n\n\n\t\tif (this.preferences.invert.value === true) {\n\n\t\t\tm_filters = \" invert(100%) \";\n\t\t\t//m_css = m_css + \" html { -webkit-filter: invert(100%); } \";\n\t\t}\n\n\t\tif (this.preferences.grayscale.value === true) {\n\n\t\t\tm_filters = m_filters + \" grayscale(100%) \";\n\n\t\t\t/*if (this.preferences.invert.value === true) {\n\t\t\t\tm_css = m_css + \" html { -webkit-filter: invert(100%) grayscale(100%); } \";\n\t\t\t} else {\n\t\t\t\tm_css = m_css + \" html { -webkit-filter: grayscale(100%); } \";\n\t\t\t}*/\n\t\t}\n\n\t\tif (this.preferences.contrast.value === true) {\n\n\t\t\tif (this.preferences.invert.value !== true) {\n\t\t\t\tm_filters = m_filters + \" brightness(0.8) contrast(180%) \";\n\t\t\t} else {\n\t\t\t\tm_filters = m_filters + \" contrast(160%) \";\n\t\t\t}\n\n\t\t}\n\n\t\tif (m_filters !== \"\") {\n\n\t\t\tm_css = m_css + \"html {height: 100%; } body { height: 100%; filter: \" + m_filters + \"; } \";\n\n\t\t}\n\n\t\tif (this.preferences.visible_captions.value === true) {\n\t\t\tXKit.post_listener.add(\"accesskit_vis_caps\", XKit.extensions.accesskit.vis_caps);\n\t\t}\n\n\t\tif (this.preferences.make_links_blue.value === true) {\n\t\t\tm_css = m_css + \" .post .post_body a, .reblog-content a { color: #2449c1 !important; font-weight: bold !important; } \";\n\t\t}\n\n\t\tif (this.preferences.no_npf_colors.value) {\n\t\t\tm_css += \".post span { color: inherit !important; }\";\n\t\t}\n\n\t\tif (this.preferences.contrast_sidebar.value === true) {\n\n\t\t\tm_css = m_css + \" .controls_section li a, .right_column .small_links a { color: white; } \" +\n\t\t\t\t\t\" .controls_section li { border-top: 1px solid rgba(255,255,255,0.38); }\" +\n\t\t\t\t\t\" .controls_section li.account_header, .controls_section li.editors_header, .controls_section li.contributors_header, .controls_section li.section_header { color: white; border-bottom: 2px solid rgba(255,255,255,0.43) } \" +\n\t\t\t\t\t\" .controls_section li a .count { color: white !important; font-weight: bold; } \" +\n\t\t\t\t\t\" .controls_section .open_blog .sub_control.link_arrow, .controls_section li.popover_button_blogs .open_blog_link, .blog_menu .selected_blog #open_blog_link { color: white; } \";\n\n\t\t}\n\n\t\tif (this.preferences.contrast_notifications.value === true) {\n\n\t\t\tm_css = m_css + \" .notification .notification_sentence, .notification .notification_sentence a, .notification blockquote { color: white !important; }\";\n\n\t\t}\n\n\n\n\t\tif (this.preferences.contrast_icons.value === true) {\n\t\t\tm_css = m_css + \" #posts .post .post_control.photo_reply .photo_reply_icon_base, .post_full .post_control:after { opacity: 0.5; } \" +\n\t\t\t\t\t\" .post_full .post_header, .post .post_header a, .post .post_tags a, .post .post_tags .post_tag, .xtimestamp, .post_full .post_control.no_icon, .post_full .post_control.no_icon.show_label, .post_full .post_footer { color: rgb(100,100,100) !important; }\" +\n\t\t\t\t\t\" .post .post_header a:hover, .post .post_tags a:hover, .post .post_tags .post_tag:hover, .post_full .post_control.no_icon:hover, .post_full .post_control.no_icon.show_label:hover { color: rgb(80,80,80) !important; text-decoration: underline; }\" +\n\t\t\t\t\t\" .post_full .post_control:hover:after { opacity: 1; } \" +\n\t\t\t\t\t\" .post .post_info .reblog_icon { opacity: 0.55; } \" +\n\t\t\t\t\t\" .post .post_body, .post .post_body * { color: black ; } \" +\n\t\t\t\t\t\" .post .post_footer { border-top: 1px solid rgb(150,150,150) !important; } \" +\n\t\t\t\t\t\" .post_full.is_note .post_body .note_item { border: 1px solid rgb(120,120,120); } \" +\n\t\t\t\t\t\" .post_full.is_note .nipple, .post_full.is_note .nipple::after { border-left: 8px solid rgb(100,100,100); } \" +\n\t\t\t\t\t\" .post_full.is_note .nipple::after { border-left-color: #f5f5f5; }\" +\n\t\t\t\t\t\" .post_full.is_note .answerer .name, .post_full.is_note .asker .name, .post_full.is_note .asker, .post_full.is_note .answerer { color: black; }\" +\n\t\t\t\t\t\" .post.new_post .new_post_label { color: black; } \" +\n\t\t\t\t\t\" .post_full .post_title { color: black; } \" +\n\t\t\t\t\t\" .notes .note > *, .notes .note blockquote { color: black; }\" +\n\t\t\t\t\t\" .notes_outer_container.popover .note blockquote { color: black !important; } \" +\n\t\t\t\t\t\" .notes_outer_container.popover .note a { text-decoration: underline !important; font-weight: bold !important; color: black !important; } \" +\n\t\t\t\t\t\" #post_form .popover_post_options .option { font-weight: bold; } \" +\n\t\t\t\t\t\" #post_form .popover_post_options .option:first-child { border-top: 0; }\" +\n\t\t\t\t\t\" #xkit-interface-buttons .xkit-interface-control-button { opacity: 0.56; } \" +\n\t\t\t\t\t\" #xkit-interface-buttons .xkit-interface-control-button:hover { opacity: 1; } \" +\n\t\t\t\t\t\" #tumblelog_select > * { color: black !important; } \" +\n\t\t\t\t\t\" #tumblelog_select .txt:not(.edit):after { border-top-color: black; } \" +\n\t\t\t\t\t\" #new_post .cog { opacity: 0.68; } \" +\n\t\t\t\t\t\" #new_post .cog:hover { opacity: 1; } \" +\n\t\t\t\t\t\" button.chrome { background-color: #667079; border-color: #667079 !important; color: white; } \" +\n\t\t\t\t\t\" button.chrome:hover { text-decoration: underline; } \" +\n\t\t\t\t\t\" button.chrome:active { background-color: #343d45 !important; border-color: #343d45 !important; } \" +\n\t\t\t\t\t\" .chrome .button_label { color: white !important; } \" +\n\t\t\t\t\t\" .chrome.blue { background-color: #3b7ea7 !important; border-color: #3b7ea7 !important; color: white !important; } \" +\n\t\t\t\t\t\" .chrome.blue:active { background-color: #0c3b57 !important; } \" +\n\t\t\t\t\t\" .split .chrome.blue[disabled], .split .chrome.blue[disabled]:active, .split .chrome.blue.ui_disabled, .split .chrome.blue.ui_disabled:active { color: rgba(255,255,255,0.40) !important; } \" +\n\t\t\t\t\t\" button.chrome.flat.close { color: white !important; background-color: rgb(130,130,130) !important; border: 0px !important; } \" +\n\t\t\t\t\t\" .post .link_button { background-color: #268154; border-color: #268154; } \" +\n\t\t\t\t\t\" .bluthSkin .mceButton { opacity: 1 !important; } \" +\n\t\t\t\t\t\" .bluthSkin .mceButton:hover { background-color: #c3eaf8; border-radius: 5px; } \" +\n\t\t\t\t\t\" .bluthSkin .mceButtonDisabled:hover .mceIcon, .bluthSkin .mceButtonDisabled:hover {background-color: transparent !important; } \" +\n\t\t\t\t\t\" #post_content .main_content > * { border-color: black; } \" +\n\t\t\t\t\t\" .bluthSkin table.mceLayout tr.mceFirst td { border-color: black !important; }\" +\n\t\t\t\t\t\" .bluthSkin .mceIframeContainer { border-top: 1px dashed black; } \" +\n\t\t\t\t\t\" .main_content { border-color: black; }\" +\n\t\t\t\t\t\" .advanced_post_options label { color: rgb(100,100,100); } \";\n\n\t\t}\n\n\t\tif (this.preferences.increase_font_size.value === true) {\n\n\t\t\tm_css = m_css + \" .post_full .post_notes_label, .post_container { font-size: 15px !important; } \" +\n\t\t\t\t\t\" .post_body *, .reblog-list-item .reblog-header, .reblog-list-item .reblog-content { font-size: 15px !important; } \" +\n\t\t\t\t\t\" .xtimestamp { font-size: 13px; } \" +\n\t\t\t\t\t\" .post_full .post_header { font-size: 14px; } \" +\n\t\t\t\t\t\" .notification .notification_sentence > * { font-size: 14px; } \" +\n\t\t\t\t\t\" .notes .note > *, .notes .note blockquote { font-size: 14px; line-height: 22px; } \" +\n\t\t\t\t\t\" .notes_outer_container.popover .note blockquote { font-size: 14px !important; } \" +\n\t\t\t\t\t\" .post .post_tags a, .post .post_tags .post_tag { font-size: 14px !important; } \" +\n\t\t\t\t\t\" .xkit-notification {font-size: 14px; } \";\n\n\t\t}\n\n\t\tif (this.preferences.increase_post_margins.value === true) {\n\n\t\t\tm_css = m_css + \" #posts.posts>.post_container { margin-bottom: 40px; } \";\n\n\n\t\t}\n\n\t\tif (this.preferences.xkit_disable_counter.value === true) {\n\n\t\t\tXKit.extensions.accesskit.disable_xkit_counter();\n\n\t\t\tsetTimeout(function() { XKit.extensions.accesskit.disable_xkit_counter(); }, 1500);\n\n\t\t}\n\n\t\tif (this.preferences.xkit_contrast_icons.value === true) {\n\n\t\t\tm_css += this.xkit_contrast_icons_css;\n\t\t}\n\n\t\tif (XKit.interface.where().inbox) {\n\t\t\tm_css += \".post_full.is_note.no_body .post_footer { margin: 0; }\";\n\t\t}\n\n\t\tXKit.tools.add_css(m_css, \"accesskit\");\n\n\t},\n\n\txkit_contrast_icons_css: `\n\t\t.xkit-extension-setting, .xkit-extension-setting-separator { color: black !important; border-bottom: 1px solid rgb(100,100,100); }\n\t\t.xkit-extension-setting-separator { background: rgb(230,230,230); }\n\t\t#xkit-extensions-panel-top { border-bottom: 1px solid black; }\n\t\t#xkit-extensions-panel-right, #xkit-extensions-panel-left, #xkit-extensions-panel-left-search { border-color: black; }\n\t\t#xkit-extensions-panel-left .xkit-extension {color: black; border-color: black; }\n\t\t.xkit-button { border-color: black; color: black; }\n\t\t.xkit-button:hover { border-color: black; color: black; text-decoration: underline; }\n\t\t#xkit-extensions-panel-top .description, #xkit-extensions-panel-top .description .details { color: black; }\n\t\t.xkit-checkbox, .xkit-change-ext-setting-checkbox { color: black } .xkit-change-ext-setting-checkbox:hover, .xkit-checkbox:hover { text-decoration: underline; }\n\t\t.xkit-extension-setting.checkbox .xkit-checkbox, .xkit-extension-setting .title { color: black; }\n\t\t.xkit-checkbox.selected b { background-color: #184e98; }\n\t\t.xkit-checkbox b { border: 1px solid black; }\n\t\t#xkit-extensions-panel-right .xkit-others-panel .description { color: black; }\n\t\t.xkit-progress-bar { border: 1px solid black; box-shadow: none; }\n\t\t.xkit-progress-bar-inner { background: #154389; }\n\t\t#xkit-about-window-text .subtitle, #xkit-about-window-links a {color: black; }\n\t\t#xkit-extensions-panel-left .xkit-extension .title { color: black; }\n\t\t#xkit-extensions-panel-left .xkit-extension.text-only.selected, #xkit-extensions-panel-left .xkit-extension.selected .title { color: black; font-weight: bold; text-decoration: underline; }\n\t\t#xkit-extensions-display-type-iconic, #xkit-extensions-display-type-normal { border-color: black; }\n\t\t#xkit-extensions-panel-left .xkit-extension.text-only { color: black; }\n\t\t#xkit-extensions-panel-left .xkit-extension.text-only.selected { text-decoration: underline; }\n\t\t#xkit-extensions-panel-right .xkit-message-display { color: black; }\n\t\t#xkit-extensions-panel-right .xkit-message-info { color: black; border-bottom: 1px solid black; }\n\t\t#xkit-extensions-panel-right.xkit-wide-panel { border-left: 1px solid black; background: white; }\n\t\t.xkit-gallery-extension, #xkit-gallery-toolbar, #xkit-gallery-search { color: black; border-color: black; }\n\t\t.xkit-gallery-extension .xkit-button { border-top: 1px solid black !important; }\n\t\t#xkit-control-panel-tabs div { color: black; border-color: black; }\n\t\t#xkit-control-panel-tabs { background: rgb(200,200,200); }\n\t\t#xkit-about-window-links {border-top: 1px solid black; }\n\t\t.xkit-notification {background-color: white !important; color: black; }\n\t\t.xkit-notification:hover { text-decoration: underline; }\n\t\t#xkit-window-shadow { background-color: rgba(0,0,0,0.77); }\n\t\t.xkit-window-buttons { border-top: 1px solid black; }\n\t`,\n\n\tvis_caps: function() {\n\n\t\tif (!XKit.interface.where().dashboard && !XKit.interface.where().channel && !XKit.interface.where().inbox) {\n\t\t\t// probs on a blog. abort mission.\n\t\t\treturn;\n\t\t}\n\n\t\tvar imgCap = '';\n\t\tvar imgWidth = '';\n\t\tvar rowHeight = '';\n\n\t\t$('.photoset_row').each(function() {\n\n\t\t\tif (!$(this).hasClass('xkit-accesskit-viscaps')) { //prevents double-dipping\n\n\t\t\t\t$(this).attr('style', $(this).attr('style').replace('height', 'min-height'));\n\t\t\t\trowHeight = $(this).css('min-height');\n\n\t\t\t\t$(this).find('a').each(function() {\n\n\t\t\t\t\tif (!$(this).hasClass('xkit-accesskit-viscaps')) { //protection!\n\n\t\t\t\t\t\timgCap = $(this).find('img').attr('alt');\n\t\t\t\t\t\timgWidth = $(this).find('img').css('width');\n\t\t\t\t\t\t$(this).html('
' + $(this).html() + '

' + imgCap + '

');\n\n\t\t\t\t\t\t$(this).addClass('xkit-accesskit-viscaps');\n\n\t\t\t\t\t}\n\n\t\t\t\t});\n\n\t\t\t\t$(this).addClass('xkit-accesskit-viscaps');\n\n\t\t\t}\n\n\t\t});\n\n\t},\n\n\tdisable_xkit_counter: function() {\n\n\t\tXKit.tools.remove_css(\"xkit_tweaks_slim_sidebar\");\n\t\tXKit.tools.remove_css(\"xkit_tweaks_hide_section_headers\");\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.tools.remove_css(\"accesskit\");\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","css":"@font-face {\n\tfont-family: open-dyslexic;\n\tsrc: url(\"https://cdn.jsdelivr.net/open-dyslexic/2.1.0/ttf/OpenDyslexic-Regular.ttf\");\n}\n","title":"AccessKit","description":"Accessibility tools for Tumblr","developer":"new-xkit","version":"2.0.3","details":"Provides accessibility tools for XKit and your dashboard, such as increased font sizes, more contrast on icons and more.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/anti_capitalism.json b/Extensions/dist/anti_capitalism.json new file mode 100644 index 000000000..69022b9c8 --- /dev/null +++ b/Extensions/dist/anti_capitalism.json @@ -0,0 +1 @@ +{"id":"anti_capitalism","script":"//* TITLE Anti-Capitalism **//\n//* VERSION 1.6.6 **//\n//* DESCRIPTION Removes sponsored posts, vendor buttons, and other nonsense that wants your money. **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.anti_capitalism = new Object({\n\n\trunning: false,\n\thas_indicator_selector: \"\",\n\n\tpreferences: {\n\t\t\"sep0\": {\n\t\t\ttext: \"Options\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"sponsored_posts\": {\n\t\t\ttext: \"Remove sponsored posts\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"sidebar_ad\": {\n\t\t\ttext: \"Hide the Sidebar Ads\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"takeover_ad\": {\n\t\t\ttext: \"Hide some elements from takeover ads\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"sep1\": {\n\t\t\ttext: \"Legacy Options\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"video_ad\": {\n\t\t\ttext: \"Terminate with extreme prejudice the auto-playing audio sidebar ads\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"sponsored_ads\": {\n\t\t\ttext: \"Remove those terrible framed ads\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"vendor_buttons\": {\n\t\t\ttext: \"Disable 'Buy' buttons on posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"yahoo_view\": {\n\t\t\ttext: \"Hide the Yahoo View links on posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"asktime\": {\n\t\t\ttext: \"Hide the asktime banner at the top of the dashboard\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\n\trun: async function() {\n\t\tthis.running = true;\n\n\t\tif (XKit.page.react) {\n\t\t\tawait XKit.css_map.getCssMap();\n\n\t\t\tif (this.preferences.sponsored_posts.value) {\n\t\t\t\tconst adSelector = [\"adTimelineObject\", \"instreamAd\", \"nativeIponWebAd\", \"takeoverBanner\"]\n\t\t\t\t\t.map(key => XKit.css_map.keyToCss(key))\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.join(\", \");\n\t\t\t\tXKit.tools.add_css(`${adSelector} { display: none !important; }`, \"anti_capitalism\");\n\n\t\t\t\tconst videoCTASelector = [\"videoCTA\", \"videoImageCTA\"]\n\t\t\t\t\t.map(key => XKit.css_map.keyToClasses(key))\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.map(classes => classes.map(cls => `.${cls}:not(.anti-capitalism-done)`).join(\", \"))\n\t\t\t\t\t.join(\", \");\n\t\t\t\tthis.videoCTASelector = videoCTASelector;\n\t\t\t\tthis.listTimelineObjectInnerSelector = XKit.css_map.keyToCss(\"listTimelineObjectInner\");\n\n\t\t\t\tXKit.tools.add_css(`.anti-capitalism-hidden { display: none !important; }`, \"anti_capitalism\");\n\t\t\t\tXKit.post_listener.add(\"anti_capitalism\", this.process_posts);\n\t\t\t\tthis.process_posts();\n\t\t\t}\n\n\t\t\tif (this.preferences.sidebar_ad.value) {\n\t\t\t\tconst selector = XKit.css_map.keyToCss(\"mrecContainer\");\n\t\t\t\tXKit.interface.hide(selector, \"anti_capitalism\");\n\t\t\t}\n\n\t\t\tif (this.preferences.takeover_ad.value) {\n\t\t\t\tXKit.tools.add_css(`\n\t\t\t\t\t${XKit.css_map.keyToCss('cruelSummer')} {\n\t\t\t\t\t\tdisplay: none !important;\n\t\t\t\t\t}\n\t\t\t\t`, \"anti_capitalism\");\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (XKit.extensions.anti_capitalism.preferences.vendor_buttons.value) {\n\t\t\tXKit.tools.add_css(\" .post .vendor_button {display: none;}\", \"anti_capitalism\");\n\t\t}\n\n\t\tif (XKit.extensions.anti_capitalism.preferences.sponsored_posts.value) {\n\t\t\tXKit.tools.add_css(\" .post.sponsored_post {display:none}\", \"anti_capitalism\");\n\t\t}\n\n\t\tif (XKit.extensions.anti_capitalism.preferences.sponsored_ads.value) {\n\t\t\tXKit.tools.add_css(\" .remnant-unit-container, .yamplus-unit-container, .yam-plus-ad-container, .yam-plus-header, .video-ad-container, .video-ad, .standalone-ad-container, .dfp-ad-container {display: none;}\", \"anti_capitalism\");\n\t\t}\n\n\t\tif (XKit.extensions.anti_capitalism.preferences.asktime.value) {\n\t\t\tXKit.tools.add_css(\" .notification.single_notification.alt.takeover-container { display: none; } \", \"anti_capitalism\");\n\t\t}\n\n\t\tif (XKit.extensions.anti_capitalism.preferences.yahoo_view.value) {\n\t\t\tXKit.tools.add_css(' .recommendation-reason-link[href*=\"//view.yahoo.com\"], .recommendation-reason-link[href*=\"%2F%2Fview.yahoo.com\"] { display: none; } ', \"anti_capitalism\");\n\t\t}\n\n\t\tif (XKit.extensions.anti_capitalism.preferences.sidebar_ad.value) {\n\t\t\tXKit.tools.add_css(' .sidebar-ad { display: none; } ', \"anti_capitalism\");\n\t\t}\n\n\t\tif (this.preferences.video_ad.value) {\n\t\t\tthis.interval_id = setInterval(function() {\n\t\t\t\tvar players = $(\".sidebar-ad-content iframe, .sponsored_post iframe, .sponsored_post video, .standalone-ad-container video\");\n\t\t\t\t// Pause + remove src of video tags to prevent audio from persisting after DOM removal\n\t\t\t\tvar videos = players.filter(\"video\");\n\t\t\t\tif (videos.length) {\n\t\t\t\t\tvideos.trigger(\"pause\");\n\t\t\t\t\tvideos.attr(\"src\", \"\");\n\t\t\t\t}\n\t\t\t\tif (players.length) {\n\t\t\t\t\tplayers.remove();\n\t\t\t\t}\n\t\t\t}, 400);\n\t\t}\n\t},\n\n\tprocess_posts: async function() {\n\t\tconst {videoCTASelector, listTimelineObjectInnerSelector} = XKit.extensions.anti_capitalism;\n\t\tconst $containers = $(videoCTASelector).addClass(\"anti-capitalism-done\");\n\t\tfor (let container of $containers.get()) {\n\t\t\t$(container).closest(listTimelineObjectInnerSelector).addClass('anti-capitalism-hidden');\n\t\t}\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\t$('anti-capitalism-done').removeClass('anti-capitalism-done');\n\t\t$('anti-capitalism-hidden').removeClass('anti-capitalism-hidden');\n\t\tXKit.tools.remove_css(\"anti_capitalism\");\n\t\ttry {\n\t\t\tXKit.post_listener.remove(\"anti_capitalism\", this.process_posts);\n\t\t} catch (e) {\n\t\t\t//no listener to remove\n\t\t}\n\t\tclearInterval(this.interval_id);\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","title":"Anti-Capitalism","description":"Removes sponsored posts, vendor buttons, and other nonsense that wants your money.","developer":"new-xkit","version":"1.6.6","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/audio_downloader.json b/Extensions/dist/audio_downloader.json new file mode 100644 index 000000000..2619b7f13 --- /dev/null +++ b/Extensions/dist/audio_downloader.json @@ -0,0 +1 @@ +{"id":"audio_downloader","script":"//* TITLE Audio Downloader **//\n//* VERSION 3.0.2 **//\n//* DESCRIPTION Lets you download audio posts hosted on Tumblr **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA false **//\n//* SLOW true **//\n//* DETAILS This extension allows you to download audio posts as MP3 files on your computer. Please note that it only works on audio hosted on Tumblr. If they were posted from Spotify, SoundCloud, YouTube or any other service, it won't work. **//\n\nXKit.extensions.audio_downloader = new Object({\n\n\tslow: true,\n\trunning: false,\n\tapiKey: XKit.api_key,\n\taudioBlockClass: \"\",\n\n\tbutton_icon: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkY1MzdFN0ExNTU3MTFFMzlCNjJGNTNDQTgzRjc3M0UiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkY1MzdFN0IxNTU3MTFFMzlCNjJGNTNDQTgzRjc3M0UiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCRjUzN0U3ODE1NTcxMUUzOUI2MkY1M0NBODNGNzczRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCRjUzN0U3OTE1NTcxMUUzOUI2MkY1M0NBODNGNzczRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuxbowMAAACcSURBVHja7NTBDYAgDABA6gKMQpzEURiFERyFERiFEZCamlTToqIvY5O+aO/RlEIpxUgBAOJDrQejxGBejB/7EobhcX0epl/3lZY2PoAiGhyzNXMHhD12hxHoOjC39e8wAv3dOakYgfMFaD72aRjOLzWgxOfUxNj8sjJwJ/WoGIGTgE1afRMjMDAotGoxQbu07OImurDj2VdaBBgAbglVZHbAZ/wAAAAASUVORK5CYII=\",\n\n\trun: function() {\n\n\t\tif (XKit.page.react) {\n\t\t\tXKit.tools.async_add_function(async () => {\n\t\t\t\t/* globals tumblr */\n\t\t\t\treturn await tumblr.getCssMap();\n\t\t\t})\n\t\t\t.then(({audioBlock}) => {\n\t\t\t\tthis.audioBlockClass = `.${audioBlock[0]}`;\n\t\t\t\tthis.react_add_buttons();\n\t\t\t\tXKit.post_listener.add('audio_downloader', this.react_add_buttons);\n\t\t\t});\n\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.tools.init_css(\"audio_downloader\");\n\n\t\tif (XKit.storage.get(\"audio_downloader\", \"shown_welcome\", \"false\") === \"false\") {\n\t\t\tXKit.window.show(\"Welcome to Audio Downloader!\", \"If an audio post is downloadable, an arrow will appear next to the Like button that allows you to download the audio post as an MP3 file.

Please note that Audio Downloader only works on MP3 files hosted on Tumblr: any file shared on Tumblr from other services such as Spotify or SoundCloud can not be downloaded. In that case, the download arrow will not appear on the post.\", \"info\", \"
OK
\");\n\t\t\tXKit.storage.set(\"audio_downloader\", \"shown_welcome\", \"true\");\n\t\t}\n\n\t\tXKit.interface.create_control_button(\"xkit-audio-downloader\", this.button_icon, \"Audio Downloader\", \"\");\n\t\tXKit.extensions.audio_downloader.init();\n\t\tXKit.post_listener.add(\"audio_downloader\", XKit.extensions.audio_downloader.do);\n\t\tXKit.extensions.audio_downloader.do();\n\t},\n\n\treact_add_buttons: function() {\n\t\tconst {audioBlockClass} = XKit.extensions.audio_downloader;\n\n\t\t$(\"audio > source[src]:not(.xkit-audio-downloader-done)\").each(function() {\n\t\t\tconst $source = $(this).addClass(\"xkit-audio-downloader-done\");\n\t\t\tconst src = $source.attr('src');\n\n\t\t\t$source.parents(audioBlockClass).append(`\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t`);\n\t\t});\n\n\t\t$(\".audio_downloader:not(.download_ready)\").each(function() {\n\t\t\t$(this).addClass(\"download_ready\");\n\t\t\tthis.onclick = function(event) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tconst src = this.getAttribute('data-src');\n\t\t\t\tconst filename = (new URL(src)).pathname.replace(\"/\", \"\");\n\n\t\t\t\tfetch(src)\n\t\t\t\t.then(response => response.blob())\n\t\t\t\t.then(blob => {\n\t\t\t\t\tconst blob_url = window.URL.createObjectURL(blob);\n\t\t\t\t\tconst download_link = Object.assign(document.createElement('a'), {\n\t\t\t\t\t\tstyle: { display: 'none' },\n\t\t\t\t\t\thref: blob_url,\n\t\t\t\t\t\tdownload: filename,\n\t\t\t\t\t});\n\t\t\t\t\tdocument.body.appendChild(download_link);\n\t\t\t\t\tdownload_link.click();\n\t\t\t\t\tdownload_link.parentElement.removeChild(download_link);\n\t\t\t\t\twindow.URL.revokeObjectURL(blob_url);\n\t\t\t\t});\n\t\t\t};\n\t\t});\n\t},\n\n\tinit: function() {\n\n\t\t$(document).on(\"click\", \".xkit-audio-downloader\", function(event) {\n\t\t\tvar post_id = $(this).attr('data-post-id');\n\t\t\tvar username = $(this).attr('data-xkit-audio-downloader-tumblelog-name');\n\t\t\tif (XKit.interface.where().queue === true || XKit.interface.where().drafts === true) {\n\t\t\t\tvar m_post = XKit.interface.find_post(post_id);\n\t\t\t\tif (m_post.reblogged === false) { return; }\n\t\t\t\tXKit.extensions.audio_downloader.download(m_post.reblog_original_id, m_post.reblog_owner);\n\t\t\t} else {\n\t\t\t\tXKit.extensions.audio_downloader.download(post_id, username);\n\t\t\t}\n\t\t});\n\n\t},\n\n\tdownload: function(post_id, username) {\n\n\t\tvar api_url = \"https://api.tumblr.com/v2/blog/\" + username + \".tumblr.com/posts\" + \"?api_key=\" + XKit.extensions.audio_downloader.apiKey + \"&id=\" + post_id;\n\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: api_url,\n\t\t\tjson: true,\n\t\t\tonload: function(response) {\n\t\t\t\ttry {\n\n\t\t\t\t\tvar data = JSON.parse(response.responseText);\n\t\t\t\t\tvar obj = data.response;\n\n\t\t\t\t\tif (typeof obj.posts[0] === \"undefined\") {\n\t\t\t\t\t\treturn XKit.extensions.audio_downloader.show_error(\"13\");\n\t\t\t\t\t}\n\n\t\t\t\t\tif (obj.posts[0].audio_type == \"tumblr\") {\n\t\t\t\t\t\tvar m_url = obj.posts[0].audio_url;\n\t\t\t\t\t\tif (m_url.indexOf('https://www.tumblr.com/audio_file/') === 0) {\n\t\t\t\t\t\t\tm_url = 'http://a.tumblr.com/' + m_url.substr(m_url.lastIndexOf('/') + 1) + 'o1.mp3?plead=please-dont-download-this-or-our-lawyers-wont-let-us-host-audio';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar m_id = \"audio_\" + XKit.extensions.audio_downloader.make_id();\n\n\t\t\t\t\tvar audio_name = obj.posts[0].track_name;\n\t\t\t\t\tvar audio_author = obj.posts[0].artist;\n\n\t\t\t\t\tif (typeof audio_author == \"undefined\" || audio_author === \"\") {\n\t\t\t\t\t\taudio_author = \"unknown\";\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof audio_name !== \"undefined\" && audio_name !== \"\") {\n\t\t\t\t\t\tm_id = audio_name.replace(/\\W/g, '') + \"__\" + audio_author.replace(/\\W/g, '');\n\t\t\t\t\t}\n\n\t\t\t\t\tvar m_titles = [ \"You probably wouldn't steal a car.\", \"The Big-Bro Warning\", \"Watch it, they are watching you.\", \"Do you want Metallica to starve to death?\", \"Psst. Behind you.\", \"Would you download a car?\", \"You are too pretty to go to jail.\", \"Oh I hope you are not doing what I think you are doing.\", \"Xenixlet Sez: Buy music!\", \"You are downloading a Mitt Romney audio snippet, right?\", \"Insert sassy title here\", \"The P in MP3 might mean Prison y'know.\", \"NSA means No Stealing Audio (or something else perhaps, not sure.)\", \"Don't make the headlines\", \"STOP TAKING PICTURES OF ME IT IS MAKING ME UNCOMFORTABLE!\" ];\n\t\t\t\t\tvar m_index = Math.floor(Math.random() * m_titles.length);\n\n\t\t\t\t\tvar m_title = m_titles[m_index];\n\n\t\t\t\t\tXKit.window.show(m_title, \"This functionality is provided in good faith.
Please keep in mind the laws while using it: if you think downloading this file might be a copyright violation, hit Cancel now.\", \"warning\", \"Download File
Cancel
\");\n\n\t\t\t\t\t$(\"#xkit-get-audio-button-start\").click(function() {\n\n\t\t\t\t\t\tXKit.notifications.add(\"Your download will begin any second now.\", \"ok\");\n\t\t\t\t\t\tXKit.window.close();\n\n\t\t\t\t\t});\n\n\t\t\t\t} catch (e) {\n\n\t\t\t\t\tXKit.extensions.audio_downloader.show_error(\"12 - \" + e.message);\n\n\t\t\t\t}\n\n\t\t\t},\n\t\t\tonerror: function() {\n\n\t\t\t\tXKit.extensions.audio_downloader.show_error(\"11\");\n\n\t\t\t}\n\t\t});\n\n\t},\n\n\tmake_id: function() {\n\n\t\tvar text = \"\";\n\t\tvar possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\n\t\tfor (var i = 0; i < 15; i++) {\n\t\t\ttext += possible.charAt(Math.floor(Math.random() * possible.length));\n\t\t}\n\n\t\treturn text;\n\n\t},\n\n\tshow_error: function(error_code) {\n\n\t\tXKit.window.show(\"Can't fetch audio information\", \"I'm sorry but I could not fetch information needed to download this file.

There might be a problem with Tumblr servers, or perhaps the user removed the post.

Please try again later.
(Error \" + error_code + \")\", \"error\", \"
OK
\");\n\n\t},\n\n\tdo: function() {\n\n\t\tvar posts = XKit.interface.get_posts(\"xkit-audio-downloader-done\");\n\n\t\t$(posts).each(function() {\n\n\t\t\t$(this).addClass(\"xkit-audio-downloader-done\");\n\n\t\t\t// Check if hosted by Tumblr:\n\t\t\tif ($(this).find(\".audio-player\").length === 0) { return; }\n\n\t\t\tvar m_post = XKit.interface.post($(this));\n\n\t\t\tif (m_post.type !== \"audio\") { return; }\n\n\t\t\tif (XKit.interface.where().queue === true || XKit.interface.where().drafts === true) {\n\t\t\t\tif (m_post.reblogged === false) { return; }\n\t\t\t}\n\n\t\t\tXKit.interface.add_control_button(this, \"xkit-audio-downloader\", \"data-xkit-audio-downloader-tumblelog-key=\\\"\" + m_post.tumblelog_key + \"\\\" data-xkit-audio-downloader-tumblelog-name=\\\"\" + m_post.owner + \"\\\"\");\n\n\t\t});\n\n\t},\n\n\tdestroy: function() {\n\t\tXKit.post_listener.remove(\"audio_downloader\");\n\t\tXKit.tools.remove_css(\"audio_downloader\");\n\t\t$(\".xgetaudiobutton\").remove();\n\t\t$(\".xkit-audio-downloader-done\").removeClass(\"xkit-audio-downloader-done\");\n\t\t$(\"button.audio_downloader\").parent().remove();\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","css":".xkit-audio-downloader-working {\n\tcursor: default !important;\n}\n\n.xgetaudiobutton:after {\n\tbackground-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAQCAYAAAAbBi9cAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjI3MTE0RUU4M0QwMTFFMUIzNjRFMDcxRjVBOTlFQUEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjI3MTE0RUY4M0QwMTFFMUIzNjRFMDcxRjVBOTlFQUEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGMjcxMTRFQzgzRDAxMUUxQjM2NEUwNzFGNUE5OUVBQSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGMjcxMTRFRDgzRDAxMUUxQjM2NEUwNzFGNUE5OUVBQSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkYyavwAAACxSURBVHjaYvz//z8DCDT3zGbAAf5D6XQgnoUuWVuSCqaZGKgERg0izSAtILYnQa8osnpkgziBeDsQOxFpyAEgVsflNZBhW4DYlQhDtHB57QsQ/4UathGHYeiGfMdm0E0gTkQzzAOPIYuBeBlMkgXNxsVQej7UsHVIco1AzIykDmYpVoOwGQYDMEOWoRuCLx2BDItDVww1BJs43gSJrgmnIbi8hm4YAzTQE3EZAgIAAQYAfrcpY86J1RUAAAAASUVORK5CYII=\") !important;\n\tbackground-position: 3px 50% !important;\n}\n\n.xkit-audio-downloader-working:after {\n\tbackground-image: url(data:image/gif;base64,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) !important;\n}","title":"Audio Downloader","description":"Lets you download audio posts hosted on Tumblr","developer":"new-xkit","version":"3.0.2","details":"This extension allows you to download audio posts as MP3 files on your computer. Please note that it only works on audio hosted on Tumblr. If they were posted from Spotify, SoundCloud, YouTube or any other service, it won't work.","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/audio_plus.json b/Extensions/dist/audio_plus.json new file mode 100644 index 000000000..c59d2d591 --- /dev/null +++ b/Extensions/dist/audio_plus.json @@ -0,0 +1 @@ +{"id":"audio_plus","script":"//* TITLE Audio+ **//\n//* VERSION 1.0.0 **//\n//* DESCRIPTION Enhancements for the Audio Player **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.audio_plus = {\n\n\trunning: false,\n\n\taudioBlockClass: \"\",\n\n\tcurrent_player: null,\n\ttimeout_counter: 0,\n\twaiting_until_dock_ready: null,\n\tpop_out_controls: null,\n\tmouseDown: false,\n\tscrubbing: false,\n\n\tpreferences: {\n\t\tsep0: {\n\t\t\ttext: \"Options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\tadd_volume_control: {\n\t\t\ttext: \"Add a volume slider to audio posts\",\n\t\t\tvalue: true,\n\t\t\tdefault: true\n\t\t},\n\t\tpop_out_player: {\n\t\t\ttext: \"Pop out controls when you scroll away from playing audio\",\n\t\t\tvalue: true,\n\t\t\tdefault: true\n\t\t}\n\t},\n\n\tcan_see_docked_posts: $(\"#right_column\").length !== 0,\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (XKit.interface.where().inbox === true) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!XKit.page.react && $(\"#posts\").length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.tools.init_css(\"audio_plus\");\n\n\t\tif (XKit.page.react) {\n\t\t\tif (this.preferences.add_volume_control.value) {\n\t\t\t\tXKit.css_map.getCssMap().then(({audioBlock}) => {\n\t\t\t\t\tthis.audioBlockClass = `.${audioBlock[0]}`;\n\t\t\t\t\tXKit.post_listener.add('audio_plus', this.react_do);\n\t\t\t\t\tthis.react_do();\n\n\t\t\t\t\tXKit.tools.add_css(\n\t\t\t\t\t\t`${this.audioBlockClass} { position: relative !important; }`,\n\t\t\t\t\t\t'audio_plus'\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.preferences.add_volume_control.value) {\n\t\t\t$(document).on(\"mousemove mousedown mouseup mouseout click\", \".xkit-audio-plus-slider\", this.slider_handle_event);\n\t\t\tXKit.post_listener.add(\"audio_plus\", () => setTimeout(this.do, 10));\n\t\t\tsetTimeout(() => this.do(), 500);\n\t\t}\n\n\t\tif (this.preferences.pop_out_player.value) {\n\t\t\twindow.addEventListener(\"scroll\", this.handle_scroll, false);\n\t\t\tthis.create_pop_out_controls();\n\n\t\t\tif (this.can_see_docked_posts) {\n\t\t\t\tvar targetNode = document.getElementById(\"right_column\");\n\t\t\t\tvar config = {attributes: true};\n\t\t\t\tthis.dock_observer.observe(targetNode, config);\n\t\t\t}\n\t\t}\n\t},\n\n\treact_do: function() {\n\t\tconst {audioBlockClass, react_slider_handle_event} = XKit.extensions.audio_plus;\n\n\t\t$(`${audioBlockClass}:not(.audio_plus_done)`)\n\t\t.addClass('audio_plus_done')\n\t\t.each(function() {\n\t\t\tconst $audioBlock = $(this);\n\t\t\tconst audio = this.querySelector('audio');\n\t\t\tconst slider = this.querySelector('.xkit-audio-plus-slider');\n\n\t\t\tif (audio === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$audioBlock.on('change', '.xkit-audio-plus-slider', react_slider_handle_event);\n\n\t\t\tif (slider === null) {\n\t\t\t\t$audioBlock.append(`\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t`);\n\t\t\t} else {\n\t\t\t\tconst $slider = $(slider);\n\t\t\t\tconst currentVolume = audio.volume;\n\t\t\t\t$slider.val(currentVolume * 100);\n\t\t\t}\n\n\t\t});\n\t},\n\n\treact_slider_handle_event: function(e) {\n\t\te.stopPropagation();\n\n\t\tconst {audioBlockClass} = XKit.extensions.audio_plus;\n\t\tconst $slider = $(e.target);\n\t\tconst $audioBlock = $slider.parents(audioBlockClass);\n\t\tconst volume = $slider.val();\n\n\t\t$slider.attr('title', volume);\n\n\t\tconst audio = $audioBlock[0].querySelector('audio');\n\t\tif (audio !== null && audio.volume !== volume / 100) {\n\t\t\taudio.volume = volume / 100;\n\t\t}\n\t},\n\n\tdo: function() {\n\n\t\tvar posts = XKit.interface.get_posts(\"audio_plus_done\");\n\n\t\t$(posts).each(function() {\n\t\t\t$(this).addClass(\"audio_plus_done\");\n\n\t\t\tvar m_post = XKit.interface.post($(this));\n\n\t\t\tif (!m_post || m_post.type !== \"audio\") { return; }\n\n\t\t\t// Check if hosted by Tumblr:\n\t\t\tif ($(this).find(\".audio-player\").length === 0) { return; }\n\n\t\t\tvar slider_html = \"
\" +\n\t\t\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\"
\";\n\n\t\t\t$(this).find(\".audio-player\").after(slider_html);\n\t\t});\n\n\t},\n\n\tslider_handle_event: function(e) {\n\t\tvar slider = e.target;\n\t\tvar player = $(e.target).closest(\".native-audio-container\")[0];\n\n\t\tvar volume = slider.value;\n\t\tif (e.type === \"click\" || e.type === \"mousemove\") {\n\t\t\tslider.title = volume;\n\t\t\tvar audio = player.querySelector(\"audio\");\n\t\t\tif (audio && audio.volume !== volume / 100) {\n\t\t\t\taudio.volume = volume / 100;\n\t\t\t}\n\t\t}\n\t},\n\n\tdock_observer: new MutationObserver(mutations => {\n\t\tfor (var mutation of mutations) {\n\t\t\tif (mutation.target.classList.contains(\"has_docked_post\")) {\n\t\t\t\tvar docked_video = document.getElementById(\"posts\").querySelector(\".dockable_video_embed.docked\");\n\t\t\t\tXKit.extensions.audio_plus.waiting_until_dock_ready = setInterval(function() {XKit.extensions.audio_plus.waitUntilDockReady(docked_video);}, 50);\n\t\t\t} else {\n\t\t\t\tXKit.extensions.audio_plus.pop_out_controls.style.transform = \"\";\n\t\t\t}\n\t\t}\n\t}),\n\n\twaitUntilDockReady: function(docked_video) {\n\t\tif (this.timeout_counter <= 40) { //40 * 50ms = 2s\n\t\t\tthis.timeout_counter++;\n\t\t} else {\n\t\t\tthis.timeout_counter = 0;\n\t\t\tclearInterval(this.waiting_until_dock_ready);\n\t\t}\n\n\t\tif (docked_video.classList.contains(\"velocity-animating\")) {\n\t\t\t//still animating\n\t\t} else {\n\t\t\tclearInterval(this.waiting_until_dock_ready);\n\t\t\tthis.getDockHeight(docked_video);\n\t\t\tthis.timeout_counter = 0;\n\t\t}\n\t},\n\n\tgetDockHeight: function(docked_video) {\n\t\tvar docked_video_height = docked_video.style.height;\n\t\tvar controls_style = window.getComputedStyle(this.pop_out_controls);\n\t\tthis.pop_out_controls.style.transform = `translateY(calc(-${docked_video_height} - ${controls_style.bottom}))`;\n\t},\n\n\tsetProgress: function(elem, progress, event) {\n\t\tvar audio = XKit.extensions.audio_plus.current_player.querySelector(\"audio\");\n\t\tvar x = event.offsetX;\n\t\tvar total_w = elem.offsetWidth;\n\t\tvar width_per = (x / total_w);\n\t\tprogress.style.width = (width_per * 100) + \"%\";\n\t\taudio.currentTime = (width_per * audio.duration);\n\t},\n\n\tscrubIfDown: function(elem, progress, event) {\n\t\tif (XKit.extensions.audio_plus.mouseDown) {\n\t\t\tvar audio = XKit.extensions.audio_plus.current_player.querySelector('audio');\n\t\t\taudio.pause();\n\t\t\tXKit.extensions.audio_plus.scrubbing = true;\n\t\t\tXKit.extensions.audio_plus.setProgress(elem, progress, event);\n\t\t}\n\t},\n\n\tplayAfterScrubbing: function() {\n\t\tif (XKit.extensions.audio_plus.scrubbing && XKit.extensions.audio_plus.pop_out_controls.classList.contains(\"playing\")) {\n\t\t\tvar audio = XKit.extensions.audio_plus.current_player.querySelector('audio');\n\t\t\taudio.play();\n\t\t}\n\t\tXKit.extensions.audio_plus.scrubbing = false;\n\t},\n\n\tcreate_pop_out_controls: function() {\n\t\tconst controls_markup = `\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t`;\n\n\t\tvar psuedo_post = document.createElement(\"div\");\n\t\tpsuedo_post.classList.add(\"xkit-audio-plus-pseudo-post\");\n\t\tpsuedo_post.innerHTML = controls_markup;\n\t\tdocument.body.appendChild(psuedo_post);\n\n\t\tthis.pop_out_controls = psuedo_post;\n\t\tthis.pop_out_controls_progress = psuedo_post.querySelector(\".progress\");\n\t\tthis.pop_out_controls_track_name = psuedo_post.querySelector(\".track-name\");\n\t\tthis.pop_out_controls_track_artist = psuedo_post.querySelector(\".track-artist\");\n\n\t\t//event listeners\n\t\tvar audio_plus = XKit.extensions.audio_plus;\n\t\tvar controls = psuedo_post.querySelector(\".xkit-audio-plus-controls\");\n\t\tvar progress = psuedo_post.querySelector(\".progress\");\n\t\tvar playPause = psuedo_post.querySelector(\".play-pause\");\n\t\tvar controls_undock_container = psuedo_post.querySelector(\"#xkit-audio-plus-controls-undock-container\");\n\n\t\t//change progress\n\t\tcontrols.addEventListener(\"mousedown\", function(event) {\n\t\t\tif (event.target === playPause) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\taudio_plus.setProgress(controls, progress, event);\n\t\t\t}\n\t\t}, false);\n\n\t\t//scrubbing\n\t\tcontrols.onmousedown = function() {\n\t\t\taudio_plus.mouseDown = true;\n\t\t};\n\t\tdocument.body.addEventListener(\"mouseup\", function() {\n\t\t\taudio_plus.mouseDown = false;\n\t\t}, false);\n\t\tcontrols.addEventListener(\"mousemove\", function(event) {\n\t\t\tif (event.target === playPause) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\taudio_plus.scrubIfDown(controls, progress, event);\n\t\t\t}\n\t\t}, false);\n\n\t\tcontrols.addEventListener(\"mouseup\", function() {\n\t\t\tif (event.target === playPause) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\taudio_plus.playAfterScrubbing();\n\t\t\t}\n\t\t}, false);\n\n\t\tplayPause.addEventListener(\"click\", function(event) {\n\t\t\taudio_plus.controls_click_callback();\n\t\t}, false);\n\n\t\tcontrols_undock_container.addEventListener(\"click\", function(event) {\n\t\t\taudio_plus.controls_undock_click_callback();\n\t\t}, false);\n\t},\n\n\tcontrols_undock_click_callback: function() {\n\t\tvar audio_plus = XKit.extensions.audio_plus;\n\t\tvar controls = audio_plus.pop_out_controls;\n\t\tif (controls.classList.contains(\"playing\")) {\n\t\t\taudio_plus.controls_click_callback();\n\t\t}\n\t\tcontrols.classList.remove(\"showing\");\n\t\taudio_plus.current_player = null;\n\t\t$(\"#right_column\").removeClass(\"has_docked_audio\");\n\t},\n\n\tcontrols_click_callback: function() {\n\t\tvar audio_plus = XKit.extensions.audio_plus;\n\t\tvar controls = audio_plus.pop_out_controls;\n\t\tvar ppIcon = controls.querySelector('.play-pause .icon');\n\t\tvar audio = audio_plus.current_player.querySelector('audio');\n\n\t\tif (!controls.classList.contains(\"showing\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (controls.classList.contains(\"playing\")) {\n\t\t\taudio.pause();\n\t\t\tppIcon.classList.remove(\"icon_pause\");\n\t\t\tppIcon.classList.add(\"icon_play\");\n\t\t\tcontrols.classList.remove(\"playing\");\n\t\t} else {\n\t\t\taudio.play();\n\t\t\tppIcon.classList.remove(\"icon_play\");\n\t\t\tppIcon.classList.add(\"icon_pause\");\n\t\t\tcontrols.classList.add(\"playing\");\n\t\t}\n\t},\n\n\taudio_player_of_element: function(elt) {\n\t\twhile (elt && !elt.classList.contains('audio-player')) {\n\t\t\telt = elt.parentNode;\n\t\t}\n\t\treturn elt;\n\t},\n\n\thandle_scroll: function() {\n\t\tvar audio_plus = XKit.extensions.audio_plus;\n\t\tif (audio_plus.scroll_waiting) {\n\t\t\treturn;\n\t\t}\n\t\tif (audio_plus.pop_out_controls.classList.contains(\"showing\")) {\n\t\t\treturn;\n\t\t}\n\t\taudio_plus.scroll_waiting = true;\n\t\tsetTimeout(audio_plus.check_pop_out, 100);\n\t},\n\n\tcheck_pop_out: function() {\n\t\tvar audio_plus = XKit.extensions.audio_plus;\n\t\taudio_plus.scroll_waiting = false;\n\n\t\t// Arbitrarily select the first if there are multiple\n\t\tvar pause_icon = document.querySelectorAll(\".post_media .audio-player .icon_pause\")[0];\n\t\tif (pause_icon) {\n\t\t\taudio_plus.show_pop_out(pause_icon);\n\t\t}\n\t},\n\n\tshow_pop_out: function(pause_icon) {\n\t\tvar player = this.audio_player_of_element(pause_icon);\n\t\tvar player_bounds = player.getBoundingClientRect();\n\n\t\t// If not completely off the screen\n\t\tif (player_bounds.top > -player_bounds.height) {\n\t\t\treturn;\n\t\t}\n\n\t\t//show progress in popout container\n\t\tvar progress = player.querySelector(\".progress\");\n\t\tvar config = {attributes: true};\n\t\tthis.progress_observer.observe(progress, config);\n\t\tthis.icon_observer.observe(pause_icon, config);\n\n\t\tif (player.querySelector(\".track-name\").innerHTML != \"\") {\n\t\t\tthis.pop_out_controls_track_name.innerHTML = player.querySelector(\".track-name\").innerHTML;\n\t\t} else {\n\t\t\tthis.pop_out_controls_track_name.innerHTML = \"Listen\";\n\t\t}\n\t\tthis.pop_out_controls_track_artist.innerHTML = player.querySelector(\".track-artist\").innerHTML;\n\n\t\tthis.current_player = player;\n\t\tthis.pop_out_controls.classList.add(\"showing\");\n\t\tthis.pop_out_controls.classList.add(\"playing\");\n\t\tvar ppIcon = this.pop_out_controls.querySelector('.play-pause .icon');\n\t\tppIcon.classList.remove(\"icon_play\");\n\t\tppIcon.classList.add(\"icon_pause\");\n\t\t$(\"#right_column\").addClass(\"has_docked_audio\");\n\t},\n\n\tprogress_observer: new MutationObserver(mutations => {\n\t\tfor (var mutation of mutations) {\n\t\t\tXKit.extensions.audio_plus.pop_out_controls_progress.setAttribute(\"style\", mutation.target.attributes.getNamedItem(\"style\").value);\n\t\t\t//reset when audio is finished\n\t\t\tif (mutation.target.attributes.getNamedItem(\"style\").value == \"width: 0px;\") {\n\t\t\t\tXKit.extensions.audio_plus.controls_click_callback();\n\t\t\t}\n\t\t}\n\t}),\n\n\ticon_observer: new MutationObserver(mutations => {\n\t\tfor (var mutation of mutations) {\n\t\t\tvar ppIcon = XKit.extensions.audio_plus.pop_out_controls.querySelector('.play-pause .icon');\n\t\t\tif (mutation.target.classList.contains(\"icon_play\")) {\n\t\t\t\tppIcon.classList.remove(\"icon_pause\");\n\t\t\t\tppIcon.classList.add(\"icon_play\");\n\t\t\t\tif (XKit.extensions.audio_plus.scrubbing == false) {\n\t\t\t\t\tXKit.extensions.audio_plus.pop_out_controls.classList.remove(\"playing\");\n\t\t\t\t}\n\t\t\t} else if (mutation.target.classList.contains(\"icon_pause\")) {\n\t\t\t\tppIcon.classList.remove(\"icon_play\");\n\t\t\t\tppIcon.classList.add(\"icon_pause\");\n\t\t\t\tif (XKit.extensions.audio_plus.scrubbing == false) {\n\t\t\t\t\tXKit.extensions.audio_plus.pop_out_controls.classList.add(\"playing\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}),\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.tools.remove_css('audio_plus');\n\t\tXKit.post_listener.remove(\"audio_plus\");\n\n\t\t$(document).off(\"mousemove mousedown mouseup mouseout click\", \".xkit-audio-plus-slider\");\n\n\t\t$('.xkit-audio-plus-slider-container').remove();\n\t\t$('.audio_plus_done')\n\t\t\t.removeClass('audio_plus_done')\n\t\t\t.off('change', '.xkit-audio-plus-slider');\n\n\t\tif (this.pop_out_controls) {\n\t\t\tXKit.tools.add_function(function() {\n\t\t\t\tclearInterval(window.xkit_audio_plus_check_current_interval);\n\t\t\t}, true, \"\");\n\t\t\t$(\"#xkit-audio-plus-current-player\").remove();\n\n\t\t\tdocument.body.removeChild(this.pop_out_controls);\n\t\t\twindow.removeEventListener(\"scroll\", this.handle_scroll, false);\n\n\t\t\tthis.dock_observer.disconnect();\n\t\t\tthis.progress_observer.disconnect();\n\t\t\tthis.icon_observer.disconnect();\n\t\t}\n\t}\n};\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","css":".post_full .post_media { position: relative; }\n\n.xkit-audio-plus-slider-container {\n\tposition: absolute;\n\tbottom: 7px;\n\tleft: 8px;\n\tbackground: rgba(0,0,0,0.33) no-repeat 10px 50% url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUM5QjAxRTYxNzI3MTFFM0E2RkFCMjhCQTdGQjEwOTAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUM5QjAxRTcxNzI3MTFFM0E2RkFCMjhCQTdGQjEwOTAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFQzlCMDFFNDE3MjcxMUUzQTZGQUIyOEJBN0ZCMTA5MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFQzlCMDFFNTE3MjcxMUUzQTZGQUIyOEJBN0ZCMTA5MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PihVDREAAAB0SURBVHjaYmSgDHABsS4jBQaoArE2EP8nxxA+IDYGYmEo/zcLCZqZgFgDipmQJYg1RBhqOx82SUKGsED9rUpIES4gCcSG0BhgINUQdiDWB2I5YgML3RB5qAFspEQXzBBuqNMlyEkwIEPUgFiLhJjCAAABBgCzWgWZRwU92AAAAABJRU5ErkJggg==);\n\twidth: 145px;\n\theight: 23px;\n\tborder-radius: 6px;\n\tpadding-left: 35px;\n\tpadding-right: 5px;\n\tz-index: 77;\n\topacity: 0.65;\n}\n\n.xkit-audio-plus-slider-container:hover {\n\topacity: 1;\n}\n\n.xkit-audio-plus-slider-container * {\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\tuser-select: none;\n}\n\n.xkit-audio-plus-slider {\n\twidth: 100px;\n\tposition: absolute;\n\ttop: 50%; height: 6px;\n\tmargin-top: -3px;\n\tbackground: rgba(0,0,0,0.33);\n\tborder-radius: 6px;\n}\n\n.xkit--react .xkit-audio-plus-slider-container {\n\twidth: 100px;\n\tpadding-right: 10px;\n\tz-index: 1;\n}\n\n.xkit--react .xkit-extension-setting[data-extension-id=\"audio_plus\"][data-setting-id=\"pop_out_player\"] {\n\tdisplay: none;\n}\n\n#right_column.has_docked_audio {\n\topacity: 0.3;\n}\n\n.xkit-audio-plus-pseudo-post {\n\tdisplay: block;\n\tposition: fixed;\n\tbackground: white;\n\theight: auto;\n\twidth: 300px;\n\tborder-radius: 3px;\n\tpadding: 15px 0;\n\tleft: calc(50% + 178px);\n\tbottom: 15px;\n\topacity: 0;\n\tz-index: -1;\n\ttransition:\n\t\tbottom .15s cubic-bezier(.165,.84,.44,1),\n\t\ttransform .15s cubic-bezier(.165,.84,.44,1),\n\t\topacity .15s cubic-bezier(.165,.84,.44,1);\n}\n\n#search_actions_search .xkit-audio-plus-pseudo-post {\n\tleft: calc(50% + 289px);\n}\n\n.xkit-audio-plus-pseudo-post.showing {\n\tbottom: 20px;\n\topacity: 1;\n\tz-index: 78;\n}\n\n.peepr .xkit-audio-plus-pseudo-post {\n\topacity: 0;\n\tz-index: -1;\n}\n\n.xkit-audio-plus-controls {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tposition: relative;\n\twidth: 100%;\n\theight: 85px;\n\tmin-height: unset;\n\tpadding: 5px;\n\tbottom: 0px;\n\tz-index: 1;\n}\n\n.audio-player .play-pause {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 45px;\n\theight: 45px;\n}\n\n.xkit-audio-plus-controls .audio-info {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tmargin: 0;\n\tuser-select: none;\n}\n\n.xkit-audio-plus-controls .audio-info * {\n\tdisplay: inline-block;\n\tmargin-left: 10px;\n\tfont-size: 13px;\n}\n\n.xkit-audio-plus-controls .audio-info .track-name {\n\tfont-size: 15px;\n}\n\n.audio-player .play-pause .icon {\n\tdisplay: contents;\n}\n\n/* The following three heavily use Tumblr's dock_button styles */\n#xkit-audio-plus-controls-undock-container {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tjustify-self: flex-end;\n\tposition: absolute;\n\tbackground-color: #748089;\n\twidth: 21px;\n\theight: 21px;\n\ttop: -10px;\n\tright: -10px;\n\tborder-radius: 50%;\n\tfont-size: 12px;\n\tcursor: pointer;\n\tcolor: #fff;\n\tz-index: 2;\n}\n\n#xkit-audio-plus-controls-undock::before {\n\tcontent: \"\";\n}\n\n#xkit-audio-plus-controls-undock {\n\tfont-family: \"tumblr-icons\",\"Blank\";\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n\tfont-weight: 400;\n\tfont-size: 12px;\n\tcursor: pointer;\n\tcolor: #fff;\n}\n","title":"Audio+","description":"Enhancements for the Audio Player","developer":"new-xkit","version":"1.0.0","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/auto_tagger.json b/Extensions/dist/auto_tagger.json new file mode 100644 index 000000000..f17b87dcf --- /dev/null +++ b/Extensions/dist/auto_tagger.json @@ -0,0 +1 @@ +{"id":"auto_tagger","script":"//* TITLE Auto Tagger **//\n//* VERSION 0.7.5 **//\n//* DESCRIPTION Tags posts automatically. **//\n//* DEVELOPER new-xkit **//\n//* DETAILS This extension allows you to automatically add tags to posts based on state (reblogged, original, queued) or post type (audio, video, etc) and keeping original tags while reblogging a post. **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.auto_tagger = new Object({\n\n\trunning: false,\n\n\tpreferences: {\n\n\t\t\"sep0\": {\n\t\t\ttext: \"Keeping Tags\",\n\t\t\ttype: \"separator\"\n\t\t},\n\n\t\t\"keep_tags\": {\n\t\t\ttext: \"Keep original tags when I'm reblogging a post\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\n\t\t\"sep1\": {\n\t\t\ttext: \"Tags by Type\",\n\t\t\ttype: \"separator\"\n\t\t},\n\n\t\t\"tag_for_text\": {\n\t\t\ttext: \"Tags for Text Posts\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t},\n\n\t\t\"tag_for_ask\": {\n\t\t\ttext: \"Tags for reblogged Ask Posts\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t},\n\n\t\t\"tag_for_photo\": {\n\t\t\ttext: \"Tags for Photo/Photoset Posts\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t},\n\n\t\t\"tag_for_quote\": {\n\t\t\ttext: \"Tags for Quote Posts\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t},\n\n\t\t\"tag_for_link\": {\n\t\t\ttext: \"Tags for Link Posts\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t},\n\n\t\t\"tag_for_chat\": {\n\t\t\ttext: \"Tags for Chat Posts\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t},\n\n\t\t\"tag_for_audio\": {\n\t\t\ttext: \"Tags for Audio Posts\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t},\n\n\t\t\"tag_for_video\": {\n\t\t\ttext: \"Tags for Video Posts\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t},\n\n\t\t\"sep2\": {\n\t\t\ttext: \"Tags by State\",\n\t\t\ttype: \"separator\"\n\t\t},\n\n\t\t\"tag_for_original\": {\n\t\t\ttext: \"Tags for posts I create\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t},\n\n\t\t\"tag_for_reblogged\": {\n\t\t\ttext: \"Tags for posts I reblog\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t},\n\n\t\t\"tag_for_queued\": {\n\t\t\ttext: \"Tags for Queued Posts\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t},\n\n\t\t\"sep3\": {\n\t\t\ttext: \"Miscellaneous\",\n\t\t\ttype: \"separator\"\n\t\t},\n\n\t\t\"tag_person\": {\n\t\t\ttext: \"When reblogging, tag with the URL of the person I'm reblogging from\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\n\t\t\"tag_person_replace_hyphens\": {\n\t\t\ttext: \"Replace hyphens in usernames with spaces\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\n\t\t\"tag_date\": {\n\t\t\ttext: \"Tag with date (ie: #August 21th 2013, #August, #21th, #2013)\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\n\t\t\"tag_source\": {\n\t\t\ttext: \"When reblogging, tag with the username of the original source if possible\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\n\t\t\"tag_source_prefix\": {\n\t\t\ttext: \"Prefix used for source tags\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t},\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tsetInterval(function() { XKit.extensions.auto_tagger.new_post_check(); }, 1000);\n\t},\n\n\tis_queue: function() {\n\n\t\tif ($(\".post-form--header\").length <= 0) { setTimeout(function() { XKit.extensions.auto_tagger.is_queue(); }, 100); return; }\n\n\t\tif ($(\".create_post_button\").html() == \"Queue\") {\n\t\t\tif (XKit.extensions.auto_tagger.preferences.tag_for_queued.value !== \"\" && !$('.create_post_button').hasClass('xkit-queuetag')) {\n\t\t\t\t$('.create_post_button').addClass('xkit-queuetag');\n\t\t\t\tXKit.extensions.auto_tagger.inject_to_window(XKit.extensions.auto_tagger.preferences.tag_for_queued.value);\n\t\t\t}\n\t\t} else {\n\t\t\tif (XKit.extensions.auto_tagger.preferences.tag_for_queued.value !== \"\" && $('.create_post_button').hasClass('xkit-queuetag')) {\n\t\t\t\t// Remove tag\n\t\t\t\t$('.create_post_button').removeClass('xkit-queuetag');\n\t\t\t\tXKit.extensions.auto_tagger.remove_tag(XKit.extensions.auto_tagger.preferences.tag_for_queued.value);\n\t\t\t}\n\t\t}\n\n\t},\n\n\tcheck_if_tag_exists: function(tag) {\n\t\treturn XKit.interface.tag_exists(tag);\n\t},\n\n\tnew_post_check: function() {\n\n\t\tvar original = true;\n\t\tif (document.location.href.indexOf(\"://www.tumblr.com/reblog/\") !== -1) {\n\t\t\toriginal = false;\n\t\t} else if (document.location.href.indexOf(\"://www.tumblr.com/edit\") === -1 && $(\".post-form\").length > 0) {\n\t\t\t// A new post has been created from the button in the header\n\t\t} else if (document.location.href.indexOf(\"://www.tumblr.com/new/\") === -1) {\n\t\t\t// Url is wrong for a new post, neither new nor reblog\n\t\t\treturn;\n\t\t}\n\n\t\tthis.is_queue(); // Mutation Observer would work somewhere in this mess\n\n\t\tvar post_forms = $(\".post-form\");\n\n\t\tconsole.log(\"Auto Tagger -> new_post_check -> user in new post page!\");\n\n\t\tif (post_forms.length <= 0) {\n\t\t\tconsole.log(\"Auto Tagger -> new_post_check -> delaying, not on page...\");\n\t\t\treturn;\n\t\t}\n\n\t\tvar post_form = $(post_forms[0]);\n\n\t\tif (post_form.hasClass(\"xkit-auto-tagger-done\") === true) {\n\t\t\tconsole.log(\"Auto Tagger -> new_post_check -> quitting, already done.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconsole.log(\"Auto Tagger -> new_post_check -> page is shown.\");\n\n\t\tpost_form.addClass(\"xkit-auto-tagger-done\");\n\n\t\tvar post_object = null;\n\t\tif (original) {\n\t\t\t// Create fake post object:\n\t\t\tvar type = XKit.interface.post_window.type();\n\t\t\tpost_object = {type: type, tags: '', owner: ''};\n\t\t} else {\n\t\t\tvar post_id = document.location.href.match(/tumblr.com\\/reblog\\/(\\d+)\\//)[1];\n\t\t\tpost_object = XKit.interface.find_post(post_id);\n\t\t}\n\n\t\tvar m_tags = this.return_tags(post_object, original);\n\n\t\tif (m_tags !== \"\") {\n\t\t\tthis.inject_to_window(m_tags);\n\t\t}\n\t},\n\n\treturn_date_tag: function() {\n\t\t// defined in moment.js\n\t\t/* globals moment */\n\n\t\tvar nowdate = new Date();\n\t\tvar nowdatem = moment(nowdate);\n\t\tvar m_date = nowdatem.format(\"Do[,]MMMM[,]YYYY[,]MMMM Do YYYY\");\n\t\treturn m_date;\n\n\t},\n\n\t/*\n\t * Return tags for the post object returned by XKit.interface.post or\n\t * XKit.interface.find_post.\n\t * Uses tag_for_reblogged, tag_for_original, tag_based_on_type, keep_tags,\n\t * some weird bullshit, tag_person, and tag_date\n\t */\n\treturn_tags: function(obj, original) {\n\n\t\tvar to_return = \"\";\n\n\t\tif (typeof XKit.interface === \"undefined\") { return \"\"; }\n\n\t\tif (!original) {\n\t\t\tto_return = this.mreturn_add(to_return, XKit.extensions.auto_tagger.preferences.tag_for_reblogged.value);\n\t\t}\n\n\t\tif (original) {\n\t\t\tto_return = this.mreturn_add(to_return, XKit.extensions.auto_tagger.preferences.tag_for_original.value);\n\t\t}\n\n\t\tto_return = this.mreturn_add(to_return, XKit.extensions.auto_tagger.return_tag_based_on_type(obj));\n\n\t\tif (XKit.extensions.auto_tagger.preferences.keep_tags.value) {\n\t\t\tto_return = this.mreturn_add(to_return, obj.tags);\n\t\t}\n\n\t\tif (XKit.extensions.auto_tagger.preferences.keep_tags.value && !XKit.page.react) {\n\n\t\t\tif ($(\"body\").attr('data-page-root').indexOf('/tagged/') !== -1) {\n\t\t\t\tvar m_search_tag = $(\"body\").attr('data-page-root').substring(8);\n\t\t\t\tm_search_tag = decodeURIComponent(m_search_tag);\n\t\t\t\tm_search_tag = XKit.tools.replace_all(m_search_tag, \"\\\\+\", \" \");\n\t\t\t\tm_search_tag = XKit.tools.replace_all(m_search_tag, \"\\\\-\", \" \");\n\t\t\t\tif (m_search_tag.indexOf(\"?before=\") !== -1) {\n\t\t\t\t\tm_search_tag = m_search_tag.substring(0, m_search_tag.indexOf('?before='));\n\t\t\t\t}\n\n\t\t\t\tif (m_search_tag.indexOf('/everything') !== -1) {\n\t\t\t\t\tm_search_tag = m_search_tag.substring(0, m_search_tag.indexOf('/everything'));\n\t\t\t\t}\n\t\t\t\tto_return = this.mreturn_add(to_return, m_search_tag);\n\t\t\t}\n\n\t\t}\n\n\t\tif (XKit.extensions.auto_tagger.preferences.tag_person.value && obj.owner !== \"\") {\n\t\t\tif (XKit.extensions.auto_tagger.preferences.tag_person_replace_hyphens.value) {\n\t\t\t\tif (obj.owner !== undefined) {\n\t\t\t\t\tto_return = this.mreturn_add(to_return, obj.owner.replace(/-/g, ' '));\n\t\t\t\t}\n\t\t\t\tif (obj.reblog_name !== undefined) {\n\t\t\t\t\tto_return = this.mreturn_add(to_return, obj.reblog_name.replace(/-/g, ' '));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tto_return = this.mreturn_add(to_return, obj.owner);\n\t\t\t}\n\n\t\t}\n\n\n\t\tif (XKit.extensions.auto_tagger.preferences.tag_source.value) {\n\t\t\tvar source;\n\t\t\tif (obj.source_owner !== undefined) {\n\t\t\t\tsource = obj.source_owner;\n\t\t\t} else {\n\t\t\t\tsource = obj.owner;\n\t\t\t}\n\n\t\t\tif (source !== undefined && source !== \"\") {\n\t\t\t\tvar sourceTag;\n\n\t\t\t\tif (XKit.extensions.auto_tagger.preferences.tag_person_replace_hyphens.value) {\n\t\t\t\t\tsourceTag = XKit.extensions.auto_tagger.preferences.tag_source_prefix.value + source.replace(/-/g, ' ');\n\t\t\t\t} else {\n\t\t\t\t\tsourceTag = XKit.extensions.auto_tagger.preferences.tag_source_prefix.value + source;\n\t\t\t\t}\n\n\t\t\t\tto_return = this.mreturn_add(to_return, sourceTag);\n\t\t\t}\n\t\t}\n\n\t\tif (XKit.extensions.auto_tagger.preferences.tag_date.value) {\n\t\t\tvar m_date = XKit.extensions.auto_tagger.return_date_tag();\n\t\t\tto_return = this.mreturn_add(to_return, m_date);\n\t\t}\n\n\t\tif ($.trim(to_return) !== \"\") {\n\t\t\treturn to_return;\n\t\t} else {\n\t\t\treturn \"\";\n\t\t}\n\n\t},\n\n\treturn_tag_based_on_type: function(obj) {\n\n\t\tif ((obj.type === \"regular\" || obj.type === \"text\") && XKit.extensions.auto_tagger.preferences.tag_for_text.value !== \"\") {\n\t\t\treturn XKit.extensions.auto_tagger.preferences.tag_for_text.value;\n\t\t}\n\n\t\tif (obj.type === \"note\" && XKit.extensions.auto_tagger.preferences.tag_for_text.value !== \"\") {\n\t\t\treturn XKit.extensions.auto_tagger.preferences.tag_for_ask.value;\n\t\t}\n\n\t\tif (obj.type === \"photo\" && XKit.extensions.auto_tagger.preferences.tag_for_photo.value !== \"\") {\n\t\t\treturn XKit.extensions.auto_tagger.preferences.tag_for_photo.value;\n\t\t}\n\n\t\tif (obj.type === \"photoset\" && XKit.extensions.auto_tagger.preferences.tag_for_photo.value !== \"\") {\n\t\t\treturn XKit.extensions.auto_tagger.preferences.tag_for_photo.value;\n\t\t}\n\n\t\tif (obj.type === \"quote\" && XKit.extensions.auto_tagger.preferences.tag_for_quote.value !== \"\") {\n\t\t\treturn XKit.extensions.auto_tagger.preferences.tag_for_quote.value;\n\t\t}\n\n\t\tif (obj.type === \"link\" && XKit.extensions.auto_tagger.preferences.tag_for_link.value !== \"\") {\n\t\t\treturn XKit.extensions.auto_tagger.preferences.tag_for_link.value;\n\t\t}\n\n\t\tif ((obj.type === \"chat\" || obj.type === \"conversation\") && XKit.extensions.auto_tagger.preferences.tag_for_chat.value !== \"\") {\n\t\t\treturn XKit.extensions.auto_tagger.preferences.tag_for_chat.value;\n\t\t}\n\n\t\tif (obj.type === \"audio\" && XKit.extensions.auto_tagger.preferences.tag_for_audio.value !== \"\") {\n\t\t\treturn XKit.extensions.auto_tagger.preferences.tag_for_audio.value;\n\t\t}\n\n\t\tif (obj.type === \"video\" && XKit.extensions.auto_tagger.preferences.tag_for_video.value !== \"\") {\n\t\t\treturn XKit.extensions.auto_tagger.preferences.tag_for_video.value;\n\t\t}\n\n\t\treturn \"\";\n\n\t},\n\n\treturn_tags_for_queue: function() {\n\t\treturn this.preferences.tag_for_queued.value;\n\t},\n\n\tmreturn_add: function(m_return, tag) {\n\t\tif (m_return === \"\") {\n\t\t\treturn tag;\n\t\t} else if (tag !== \"\" && typeof(tag) === 'string') {\n\t\t\treturn m_return + \",\" + tag;\n\t\t} else {\n\t\t\treturn m_return;\n\t\t}\n\t},\n\n\tremove_tag: function(tag) {\n\t\tXKit.interface.post_window.remove_tag(tag);\n\t},\n\n\tinject_to_window: function(raw_string) {\n\t\t$(\".post-form--footer\").css(\"display\", \"block\");\n\t\t$(\".post-form--footer\").css(\"opacity\", \"1\");\n\t\tif ($(\".post-form\").length <= 0) {\n\t\t\tsetTimeout(function() {\n\t\t\t\tXKit.extensions.auto_tagger.inject_to_window(raw_string);\n\t\t\t}, 200);\n\t\t\treturn;\n\t\t}\n\n\t\tvar tags = raw_string.split(\",\");\n\t\tXKit.interface.post_window.add_tag(tags);\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","title":"Auto Tagger","description":"Tags posts automatically.","developer":"new-xkit","version":"0.7.5","details":"This extension allows you to automatically add tags to posts based on state (reblogged, original, queued) or post type (audio, video, etc) and keeping original tags while reblogging a post.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/autoscroll.json b/Extensions/dist/autoscroll.json new file mode 100644 index 000000000..305cd1f83 --- /dev/null +++ b/Extensions/dist/autoscroll.json @@ -0,0 +1 @@ +{"id":"autoscroll","script":"//* TITLE Auto Scroll **//\n//* VERSION 1.2.0 **//\n//* DESCRIPTION Scrolls the page at a variable pace. **//\n//* DETAILS Automatically scrolls the dashboard. **//\n//* DEVELOPER Fr33dan **//\n//* BETA true **//\n\nXKit.extensions.autoscroll = new Object({\n\n\trunning: false,\n\tpreferences: {\n\t\t\"ClickAnywhereToStop\": {\n\t\t\ttext: \"Click anywhere to stop scrolling\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"StepsOnControl\": {\n\t\t\ttext: \"Number of steps to have on the control:\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"6\",\n\t\t\tvalue: \"6\"\n\t\t},\n\t\t\"PixelsPerSecond\": {\n\t\t\ttext: \"Maximum number of pixels per second:\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"300\",\n\t\t\tvalue: \"300\"\n\t\t},\n\t\t\"sep0\": {\n\t\t\ttext: \"Advanced (Changing these settings could slow down your browser)\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"RefreshRate\": {\n\t\t\ttext: \"Number of times to scroll the page per second:\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"50\",\n\t\t\tvalue: \"50\",\n\t\t}\n\t},\n\timageCode: '\"\"',\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tthis.initControl();\n\n\t\t// We cannot make references to the \"this\" that has the preferences\n\t\t// inside a nested functions. Load the values from it ahead of time.\n\t\tvar totalStepCount = Number(this.preferences.StepsOnControl.value);\n\t\tvar maxSpeed = Number(this.preferences.PixelsPerSecond.value);\n\t\tvar smoothingFactor = 1 / Number(this.preferences.RefreshRate.value);\n\t\tvar clickAnywhereToStop = this.preferences.ClickAnywhereToStop.value;\n\n\t\tvar controlSteps = $(\".auto_scroll_control_step\");\n\t\tvar currentStep = null;\n\t\tvar isScrolling = false;\n\t\tvar middleNumber = Math.round(totalStepCount / 2);\n\t\tvar scrollFunction = function() {\n\t\t\tvar stepNumber = 0;\n\t\t\tvar numberOfSteps = 0;\n\t\t\tvar directionFactor = 1;\n\t\t\tif (Number(currentStep) < middleNumber) {\n\t\t\t\tnumberOfSteps = middleNumber;\n\t\t\t\tdirectionFactor = -1;\n\t\t\t\tstepNumber = middleNumber - Number(currentStep);\n\t\t\t} else {\n\t\t\t\tnumberOfSteps = totalStepCount - middleNumber;\n\t\t\t\tstepNumber = Number(currentStep) - middleNumber + 1;\n\t\t\t\tdirectionFactor = 1;\n\t\t\t}\n\t\t\twindow.scrollBy(0, maxSpeed * smoothingFactor * directionFactor);\n\t\t\tif (isScrolling) {\n\t\t\t\tvar timerRatio = stepNumber / numberOfSteps;\n\t\t\t\tsetTimeout(scrollFunction, 1000 * smoothingFactor / timerRatio);\n\t\t\t}\n\t\t};\n\t\t$(document).on(\"click\", \".auto_scroll_control_step\", function(event) {\n\t\t\tif (!$(event.target).is(\"[selected]\")) {\n\t\t\t\t// Mark and store the selected speed.\n\t\t\t\tcontrolSteps.removeAttr(\"selected\");\n\t\t\t\t$(event.target).attr(\"selected\", \"true\");\n\t\t\t\tcurrentStep = $(event.target).attr(\"number\");\n\n\t\t\t\t// Start scrolling\n\t\t\t\tvar wasScrolling = isScrolling;\n\t\t\t\tisScrolling = true;\n\t\t\t\t// Function must be started after isScrolling is set\n\t\t\t\t// to prevent possible race condition.\n\t\t\t\tif (wasScrolling === false) {\n\t\t\t\t\tsetTimeout(scrollFunction, 50);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisScrolling = false;\n\t\t\t\tcontrolSteps.removeAttr(\"selected\");\n\t\t\t}\n\n\t\t\t// Prevent click event from being processed further.\n\t\t\tevent.stopPropagation();\n\t\t});\n\n\t\t$(document).on(\"click\", null, function(event) {\n\t\t\tif (clickAnywhereToStop && isScrolling === true) {\n\t\t\t\tisScrolling = false;\n\t\t\t\tcontrolSteps.removeAttr(\"selected\");\n\t\t\t}\n\t\t});\n\t},\n\n\tinitControl: function() {\n\t\tXKit.tools.init_css(\"autoscroll\");\n\t\t// HTML for control\n\t\tvar m_html = '
';\n\t\t// Place it at the bottom of the document because it is fixed position\n\t\t// anyway\n\t\t$(document.body).append(m_html);\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\t$(\".auto_scroll_control_container\").remove();\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","css":".auto_scroll_control_container{\n\tposition:fixed;\n\tleft:50px;\n\tbottom:50px;\n\t}\n\n.auto_scroll_control_center{\n\twidth:26px;\n\theight:5px;\n\tbackground-color:#272c30;\n\t}\n\n.auto_scroll_control_step{\n\tposition:relative;\n\tleft:2px;\n\twidth:20px;\n\theight:10px;\n\tborder: 1px solid #aaaaaa;\n\tbackground-color:#d0dbe5;\n\tmargin-top:auto;\n\tmargin-bottom:auto;\n\t}\n\n\n.auto_scroll_control_step[selected]{\n\tbackground-color:#718ea9;\n\t}\n\n.auto_scroll_control_label{\n\tmargin:auto;\n\tvertical-align:middle;\n\t}\n.auto_scroll_table_cell{\n\tvertical-align:middle;\n }\n","title":"Auto Scroll","description":"Scrolls the page at a variable pace.","developer":"Fr33dan","version":"1.2.0","details":"Automatically scrolls the dashboard.","frame":"false","beta":"true","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/better_reblogs.json b/Extensions/dist/better_reblogs.json new file mode 100644 index 000000000..dd6a6e416 --- /dev/null +++ b/Extensions/dist/better_reblogs.json @@ -0,0 +1 @@ +{"id":"better_reblogs","script":"//* TITLE Reblog Display Options **//\n//* VERSION 1.3.6 **//\n//* DESCRIPTION Adds different styles to the new reblog layout, including the \"classic\" nested look. **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.better_reblogs = new Object({\n\n\trunning: false,\n\n\tpreferences: {\n\t\t'sep0': {\n\t\t\ttext: 'Reblog Style',\n\t\t\ttype: 'separator'\n\t\t},\n\t\t\"type\": {\n\t\t\ttext: \"Which reblog style to use?\",\n\t\t\ttype: \"combo\",\n\t\t\tvalues: [\"flat\", \"flat\",\n\t\t\t\t\"nested\", \"nested\"],\n\t\t\tvalue: \"flat\",\n\t\t\tdefault: \"flat\",\n\t\t},\n\t\t'sep1': {\n\t\t\ttext: 'Style Options',\n\t\t\ttype: 'separator'\n\t\t},\n\t\t\"remove_icon\": {\n\t\t\ttext: 'Remove the green \"reblogged\" icon from avatars',\n\t\t\tdefault: true,\n\t\t\tvalue: true,\n\t\t\tstyle: \"flat\"\n\t\t},\n\t\t\"margin\": {\n\t\t\ttext: \"Move reblog content to the right (under the username, not avatar)\",\n\t\t\tdefault: true,\n\t\t\tvalue: true,\n\t\t\tstyle: \"flat\",\n\t\t},\n\t\t\"add_border\": {\n\t\t\ttext: \"Add border to the left\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tstyle: \"flat\",\n\t\t},\n\t\t\"remove_last_user\": {\n\t\t\ttext: \"Remove the username/avatar from the last post if its new (not reblogged)\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tstyle: \"flat\"\n\t\t},\n\t\t\"reorder_reblog_title\": {\n\t\t\ttext: \"Put post titles above posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tstyle: \"flat\",\n\t\t},\n\t\t\"remove_user_names\": {\n\t\t\ttext: \"Hide usernames and put posts next to avatars. (mouse over avatars for blog info)\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tstyle: \"flat\",\n\t\t},\n\t\t\"slim_new_reblog\": {\n\t\t\ttext: \"Slim the new reblog spacing\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tstyle: \"flat\",\n\t\t},\n\t\t\"remove_avatars\": {\n\t\t\ttext: \"Remove avatars\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tstyle: \"flat\",\n\t\t},\n\t\t\"alternating_reblogs\": {\n\t\t\ttext: \"Lightly highlight reblogs in alternating gray and new comments in blue\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tstyle: \"flat\"\n\t\t},\n\t\t\"color_quotes\": {\n\t\t\ttext: \"Enable Color Quotes\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tstyle: \"nested\",\n\t\t},\n\t\t\"dont_fade_if_less_than_two\": {\n\t\t\ttext: \"Don't color the block quotes if there is only one\",\n\t\t\tdefault: true,\n\t\t\tvalue: true,\n\t\t\tstyle: \"nested\",\n\t\t},\n\t\t\"cq_theme\": {\n\t\t\ttext: \"Color Theme\",\n\t\t\tdefault: \"rainbow\",\n\t\t\tvalue: \"rainbow\",\n\t\t\ttype: \"combo\",\n\t\t\tvalues: [\n\t\t\t\t\"Default Rainbow\", \"rainbow\",\n\t\t\t\t\"Reverse Rainbow\", \"revrainbow\",\n\t\t\t\t\"Pastel Rainbow\", \"pastel\",\n\t\t\t\t\"Tumblr Blue\", \"blue\",\n\t\t\t\t\"Grayscale\", \"grayscale\",\n\t\t\t\t\"Pink and Red\", \"pink\",\n\t\t\t\t\"Red and Gray\", \"rag\",\n\t\t\t],\n\t\t\tstyle: \"nested\",\n\t\t},\n\t\t\"do_backgrounds\": {\n\t\t\ttext: \"Use a faded color on block quote backgrounds too\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tstyle: \"nested\",\n\t\t},\n\t\t\"increase_padding\": {\n\t\t\ttext: \"Increase padding for easier reading\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tstyle: \"nested\",\n\t\t},\n\t\t\"decrease_padding\": {\n\t\t\ttext: \"Decrease left padding so large reblog chains are somewhat readable\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tstyle: \"nested\",\n\t\t},\n\t},\n\n\tcolors: {\n\t\trainbow: [\"ff1900\", \"ff9000\", \"ffd000\", \"6adc13\", \"00cd8b\", \"00a5e7\", \"001999\", \"cc00b9\", \"ff78e1\"],\n\t\trevrainbow: [\"ff78e1\", \"cc00b9\", \"001999\", \"00a5e7\", \"00cd8b\", \"6adc13\", \"ffd000\", \"ff9000\", \"ff1900\"],\n\t\tpastel: [\"e45c5c\", \"ffcc66\", \"d7e972\", \"76e2c2\", \"5dc6cd\", \"be7ce4\", \"e45c5c\", \"ffcc66\", \"d7e972\"],\n\t\tblue: [\"36536e\", \"536c83\", \"6a8094\", \"798c9f\", \"36536e\", \"536c83\", \"6a8094\", \"798c9f\", \"36536e\"],\n\t\tgrayscale: [\"b2b2b2\", \"969696\", \"6b6b6b\", \"3d3d3d\", \"d3d0d0\", \"b2b2b2\", \"969696\", \"6b6b6b\", \"3d3d3d\"],\n\t\tpink: [\"c53b3c\", \"f09dd8\", \"c53b3c\", \"f09dd8\", \"c53b3c\", \"f09dd8\", \"c53b3c\", \"f09dd8\"],\n\t\trag: [\"e24545\", \"acacac\", \"e24545\", \"acacac\", \"e24545\", \"acacac\", \"e24545\", \"acacac\"]\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (!XKit.interface.is_tumblr_page()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.preferences.type.value === \"nested\") {\n\t\t\tthis.run_nested();\n\t\t} else {\n\t\t\tthis.run_flat();\n\t\t}\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.tools.remove_css(\"better_reblogs\");\n\t\tXKit.tools.remove_css(\"colorquotes_padding\");\n\t\tXKit.post_listener.remove(\"better_reblogs\");\n\t\t$(\".xkit-better-reblogs-old\").remove();\n\t\t$(\".xkit-better-reblogs-title\").remove();\n\t\t$(\".xkit-better-reblogs-done\").removeClass(\"xkit-better-reblogs-done\");\n\t\t$(\".xkit-color-quoted\").removeClass(\"xkit-color-quoted\");\n\t\t$(\".xkit-colorquotes-border-item\").css(\"background\", \"\").css(\"border-left-color\", \"\");\n\t},\n\n\tcpanel: function(cp) {\n\t\tvar update = function(type) {\n\t\t\tfor (var i in XKit.extensions.better_reblogs.preferences) {\n\t\t\t\tvar j = XKit.extensions.better_reblogs.preferences[i];\n\t\t\t\tif (j.style) {\n\t\t\t\t\tif (j.style === type) {\n\t\t\t\t\t\tcp.find('[data-setting-id=\"' + i + '\"]').show();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcp.find('[data-setting-id=\"' + i + '\"]').hide();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tvar old_val;\n\t\tcp.find(\"select[data-setting-id=type]\").focus(function() {\n\t\t\told_val = $(this).val();\n\t\t}).change(function() {\n\t\t\tvar $el = $(this);\n\t\t\t$el.blur();\n\t\t\tXKit.window.show(\"Warning\", \"Changing the reblog style requires refreshing the page. \" +\n \"
Are you sure you wish to continue?\",\n \"warning\",\n '
Refresh
' +\n '
Cancel
');\n\t\t\t$(\"#xkit-confirm-refresh\").click(function() {\n\t\t\t\twindow.location.reload();\n\t\t\t});\n\t\t\t$(\"#xkit-close-message\").click(function() {\n\t\t\t\t$el.val(old_val);\n\t\t\t});\n\t\t});\n\t\tupdate(cp.find(\"select[data-setting-id=type]\").val());\n\t},\n\n\trun_flat: function() {\n\n\t\tvar list_sel = \"\";\n\t\tif (this.preferences.remove_last_user.value) {\n\t\t\tXKit.tools.add_css(\".reblog-list-item.contributed-content .reblog-header {display: none;}\", \"better_reblogs\");\n\t\t\tlist_sel = \".reblog-list \";\n\t\t}\n\n\t\tif (this.preferences.margin.value) {\n\t\t\tXKit.tools.add_css(list_sel + \".reblog-list-item .reblog-content {margin-left:35px;} \" +\n list_sel + \".reblog-list-item .reblog-title {margin-left:35px;}\", \"better_reblogs\");\n\t\t}\n\n\t\tif (this.preferences.remove_icon.value) {\n\t\t\tXKit.tools.add_css(\".reblog-header .sub-icon-reblog:before {display: none!important;} \" +\n \".reblog-header .sub-icon-reblog:after {display:none!important;}\", \"better_reblogs\");\n\n\t\t}\n\n\t\tif (this.preferences.add_border.value) {\n\t\t\tXKit.tools.add_css(list_sel + \".reblog-list-item .reblog-content {border-left: 2px solid #E7E7E7; padding-left: 10px;} \" +\n \".post.post_full \" + list_sel + \".reblog-list-item .tmblr-full > img {padding: 0 20px}\", \"better_reblogs\");\n\n\t\t\tif (!(this.preferences.margin.value || this.preferences.remove_user_names.value)) {\n\t\t\t\tXKit.tools.add_css(\".reblog-list-item .reblog-content {margin-left: 3px;}\", \"better_reblogs\");\n\t\t\t}\n\n\t\t\tif (this.preferences.remove_last_user.value) {\n\t\t\t\tXKit.tools.add_css(list_sel + \".contributed-content .reblog-content {border-left: unset !important; padding-left: unset !important;}\", \"better_reblogs\");\n\n\t\t\t\tif (!(this.preferences.margin.value || this.preferences.remove_user_names.value)) {\n\t\t\t\t\tXKit.tools.add_css(list_sel + \".contributed-content .reblog-content {margin-left: -10px;}\", \"better_reblogs\");\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif (this.preferences.remove_user_names.value) {\n\t\t\tXKit.tools.add_css(\".reblog-tumblelog-name {display:none;} .reblog-list-item .reblog-header {margin-bottom: 0;} \" +\n list_sel + \".reblog-content {margin-left:35px;} .reblog-title {margin-left:35px; margin-top:-10px;}\", \"better_reblogs\");\n\t\t}\n\n\t\tif (this.preferences.remove_avatars.value) {\n\t\t\tXKit.tools.add_css(\".reblog-avatar {display:none !important;} .reblog-header {padding-left: 0px !important;}\",\n \"better_reblogs\");\n\t\t}\n\n\t\tif (this.preferences.alternating_reblogs.value) {\n\t\t\tXKit.tools.add_css(\n \".reblog-list-item:nth-child(odd){background-color: rgb(245,245,245); padding-bottom: 15px;}\" +\n \".reblog-list-item:nth-child(even){background-color: rgb(250,250,250);}\" +\n \".original-reblog-content {background-color: #fff !important; padding-bottom: 15px;}\" +\n \".contributed-content {background-color: #F0F5FA !important;\" +\n \"padding-bottom:15px !important; border-top: 1px solid #D9E2EA;}\",\n \"better_reblogs\");\n\t\t}\n\n\t\tif (this.preferences.slim_new_reblog.value) {\n\t\t\tXKit.tools.add_css(\".reblog-list-item {padding: 10px 20px 5px !important; min-height: 41px;}\",\n \"better_reblogs\");\n\t\t}\n\n\t\tif (this.preferences.reorder_reblog_title.value) {\n\t\t\tXKit.tools.add_css(\".reblog-list-item .reblog-title {margin-left:0!important;}\",\n \"better_reblogs\");\n\t\t}\n\n\t\tXKit.extensions.better_reblogs.do_flat();\n\t\tXKit.post_listener.add(\"better_reblogs\", XKit.extensions.better_reblogs.do_flat);\n\n\t},\n\n\trun_nested: function() {\n\t\tXKit.tools.add_css('.posts .reblog-list {display: none!important} ' +\n '.posts .reblog-title {display: none!important} ' +\n '.posts .reblog-list-item.contributed-content ' +\n '{display: none!important;} ' +\n '.posts .post_full.post .post_content_inner .post_media ' +\n '~ .xkit-better-reblogs-old {margin-top: 13px;} ' +\n '.xkit-better-reblogs-old p.reblog-user {margin-bottom: 10px} ' +\n '.xkit-better-reblogs-old blockquote.reblog-quote {margin-top: 10px}',\n 'better_reblogs');\n\t\tXKit.extensions.better_reblogs.do_nested();\n\t\tXKit.post_listener.add(\"better_reblogs\", XKit.extensions.better_reblogs.do_nested);\n\t\tif (this.preferences.color_quotes.value) {\n\t\t\tthis.run_cq();\n\t\t}\n\t\tif (this.preferences.decrease_padding.value === true) {\n\t\t\tXKit.tools.add_css(\".xkit-better-reblogs-old blockquote.reblog-quote { padding-left: 8px; margin-top: 6px; } .xkit-better-reblogs-old p.reblog-user { margin-bottom: 6px; }\", 'better_reblogs');\n\t\t}\n\t},\n\n\trun_cq: function() {\n\t\tif (this.preferences.increase_padding.value === true) {\n\t\t\tXKit.tools.add_css(\"#posts .post_content blockquote \" +\n \"{ padding-top: 8px; padding-bottom: 8px; }\", \"colorquotes_padding\");\n\t\t}\n\n\t\tif ($(\"#posts\").length > 0) {\n\t\t\tXKit.post_listener.add(\"better_reblogs\", this.do_cq);\n\t\t\tthis.do_cq();\n\t\t}\n\t},\n\n\tdo_flat: function() {\n\t\tvar posts = XKit.interface.get_posts(\"xkit-better-reblogs-done\");\n\n\t\t$(posts).each(function() {\n\t\t\tvar $this = $(this);\n\t\t\tif ($this.is(\"[data-js-container-inner]\") || $this.hasClass(\"control-reblog-trail\")) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t$this.addClass(\"xkit-better-reblogs-done\");\n\n\t\t\t// trick tumblr into displaying the little blog info popovers for the reblog avatars\n\t\t\t$this.find(\".reblog-avatar\").addClass(\"post_sub_avatar\");\n\n\t\t\tif (XKit.extensions.better_reblogs.preferences.reorder_reblog_title.value) {\n\t\t\t\tvar title = $this.find(\".reblog-title\");\n\t\t\t\tif (!title.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar parent = title.parent();\n\t\t\t\tif (!parent.find(\".reblog-content\").length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttitle.remove();\n\t\t\t\tparent.prepend(title);\n\t\t\t}\n\t\t});\n\t},\n\n\tdo_nested: function() {\n\t\tvar posts = XKit.interface.get_posts(\"xkit-better-reblogs-done\");\n\n\t\t$(posts).each(function() {\n\t\t\tvar $this = $(this);\n\t\t\tif ($this.is(\"[data-js-container-inner]\") || $this.hasClass(\"control-reblog-trail\")) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t$this.addClass(\"xkit-better-reblogs-done\");\n\n\t\t\tvar reblog_tree = $this.find(\".reblog-list\");\n\t\t\tvar title = reblog_tree.find('.reblog-title').clone();\n\n\t\t\tif (!reblog_tree.length) {\n\t\t\t\tvar content = $this.find(\".reblog-list-item.contributed-content .reblog-content\").clone();\n\t\t\t\ttitle = $this.find(\".reblog-list-item.contributed-content .reblog-title\").clone();\n\t\t\t\tif (content.length) {\n\t\t\t\t\tcontent.addClass(\"post_body\");\n\t\t\t\t\t$this.find(\".reblog-list-item.contributed-content\").before(title);\n\t\t\t\t\ttitle.removeClass(\"reblog-title\");\n\t\t\t\t\ttitle.addClass(\"post_title xkit-better-reblogs-title\");\n\t\t\t\t\t$this.find(\".reblog-list-item.contributed-content\").before(content);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treblog_tree.after('
');\n\t\t\treblog_tree.after(title);\n\t\t\ttitle.removeClass(\"reblog-title\");\n\t\t\ttitle.addClass(\"post_title xkit-better-reblogs-title\");\n\n\t\t\tvar all_quotes = [];\n\t\t\treblog_tree.find(\".reblog-list-item:not(.contributed-content)\").each(function() {\n\t\t\t\tvar $item = $(this);\n\t\t\t\tvar reblog_content = $item.find('.reblog-content');\n\t\t\t\tvar author = $item.find('.reblog-tumblelog-name');\n\t\t\t\tvar reblog_data = {\n\t\t\t\t\treblog_content: reblog_content.html() || '',\n\t\t\t\t\treblog_author: author.contents()[0].data || '',\n\t\t\t\t\treblog_url: author.attr('href') || ''\n\t\t\t\t};\n\t\t\t\tall_quotes.push(reblog_data);\n\t\t\t});\n\n\t\t\tvar all_quotes_text = \"\";\n\t\t\tall_quotes.forEach(function(data, index, all) {\n\t\t\t\tvar reblog_content = data.reblog_content;\n\t\t\t\tall_quotes_text =\n '

' + \"\" +\n data.reblog_author + \":

\" +\n '
' + all_quotes_text + reblog_content + \"
\";\n\t\t\t});\n\n\t\t\t$this.find(\".xkit-better-reblogs-old\").append(all_quotes_text);\n\t\t\tvar post_c = $this.find(\".reblog-list-item.contributed-content .reblog-content\").clone();\n\t\t\t$this.find(\".xkit-better-reblogs-old\").append(post_c);\n\t\t});\n\t},\n\n\tdo_cq: function() {\n\n\t\tvar posts = XKit.interface.get_posts(\"xkit-color-quoted\");\n\n\t\tvar colors = XKit.extensions.better_reblogs\n .colors[XKit.extensions.better_reblogs.preferences.cq_theme.value];\n\n\t\t$(posts).each(function() {\n\n\t\t\t$(this).addClass(\"xkit-color-quoted\");\n\n\t\t\tvar count = 0;\n\n\t\t\tif (XKit.extensions.better_reblogs.preferences.dont_fade_if_less_than_two.value === true) {\n\t\t\t\tif ($(this).find(\"blockquote\").length === 1) { return; }\n\t\t\t}\n\n\t\t\t$(this).find(\"blockquote\").each(function() {\n\n\t\t\t\tif (count >= colors.length) { count = 0; }\n\n\t\t\t\tvar m_color = XKit.extensions.better_reblogs.hex_to_rgb(colors[count]);\n\n\t\t\t\t$(this).css(\"border-left-color\", \"#\" + colors[count]);\n\t\t\t\t$(this).attr('xkit-border-color', JSON.stringify(m_color));\n\t\t\t\t$(this).addClass(\"xkit-colorquotes-border-item\");\n\n\t\t\t\tif (XKit.extensions.better_reblogs.preferences.do_backgrounds.value === true) {\n\t\t\t\t\t$(this).css(\"background\", \"rgba(\" + m_color.r + \",\" + m_color.g + \",\" + m_color.b + \",0.1)\");\n\t\t\t\t}\n\n\t\t\t\tcount++;\n\n\t\t\t});\n\n\n\t\t});\n\n\t},\n\n\thex_to_rgb: function(hex) {\n\t\t// From: http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\n\t\t/* eslint-disable id-length */\n\n\t\tvar result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\t\treturn result ? {\n\t\t\tr: parseInt(result[1], 16),\n\t\t\tg: parseInt(result[2], 16),\n\t\t\tb: parseInt(result[3], 16)\n\t\t} : null;\n\n\t\t/* eslint-enable id-length */\n\t},\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/jpeg;base64,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ZWN0UmlnaHRsb25nAAAAAAAAAAtjcm9wUmVjdFRvcGxvbmcAAAAAADhCSU0D7QAAAAAAEAAgAAAAAQABACAAAAABAAE4QklNBCYAAAAAAA4AAAAAAAAAAAAAP4AAADhCSU0EDQAAAAAABAAAAB44QklNBBkAAAAAAAQAAAAeOEJJTQPzAAAAAAAJAAAAAAAAAAABADhCSU0nEAAAAAAACgABAAAAAAAAAAE4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA/gAAAAAAHAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAOEJJTQQAAAAAAAACAAA4QklNBAIAAAAAAAIAADhCSU0EMAAAAAAAAQEAOEJJTQQtAAAAAAAGAAEAAAADOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA1sAAAAGAAAAAAAAAAAAAAAgAAAAIAAAABMAMgAwADEANQAtADAAOQAtADAAMgBfADEANwAtADIAMgAtADUAOAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAACAAAAAAUmdodGxvbmcAAAAgAAAABnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5cGUA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MS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxNS0wOS0wMlQxNzoyMjo1OC0wNTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMTUtMDktMDJUMTc6MjY6MzctMDU6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTUtMDktMDJUMTc6MjY6MzctMDU6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvanBlZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplNjZkNDMyZC0yZGI5LWQ4NDUtOGFkMy1kNTcwZTBmNDc0NDYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzRhZmEyNTUtZmY0Ny1jMjQ1LTg5NjMtNTE0NGY5MmM2MzQ2IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MzRhZmEyNTUtZmY0Ny1jMjQ1LTg5NjMtNTE0NGY5MmM2MzQ2Ij4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozNGFmYTI1NS1mZjQ3LWMyNDUtODk2My01MTQ0ZjkyYzYzNDYiIHN0RXZ0OndoZW49IjIwMTUtMDktMDJUMTc6MjI6NTgtMDU6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBpbWFnZS9wbmcgdG8gaW1hZ2UvanBlZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZTY2ZDQzMmQtMmRiOS1kODQ1LThhZDMtZDU3MGUwZjQ3NDQ2IiBzdEV2dDp3aGVuPSIyMDE1LTA5LTAyVDE3OjI2OjM3LTA1OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+/+4ADkFkb2JlAGRAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQEBAQEBAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAIAAgAwERAAIRAQMRAf/dAAQABP/EAaIAAAAGAgMBAAAAAAAAAAAAAAcIBgUECQMKAgEACwEAAAYDAQEBAAAAAAAAAAAABgUEAwcCCAEJAAoLEAACAQMEAQMDAgMDAwIGCXUBAgMEEQUSBiEHEyIACDEUQTIjFQlRQhZhJDMXUnGBGGKRJUOhsfAmNHIKGcHRNSfhUzaC8ZKiRFRzRUY3R2MoVVZXGrLC0uLyZIN0k4Rlo7PD0+MpOGbzdSo5OkhJSlhZWmdoaWp2d3h5eoWGh4iJipSVlpeYmZqkpaanqKmqtLW2t7i5usTFxsfIycrU1dbX2Nna5OXm5+jp6vT19vf4+foRAAIBAwIEBAMFBAQEBgYFbQECAxEEIRIFMQYAIhNBUQcyYRRxCEKBI5EVUqFiFjMJsSTB0UNy8BfhgjQlklMYY0TxorImNRlUNkVkJwpzg5NGdMLS4vJVZXVWN4SFo7PD0+PzKRqUpLTE1OT0laW1xdXl9ShHV2Y4doaWprbG1ub2Z3eHl6e3x9fn90hYaHiImKi4yNjo+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8Av5kllEjjzSmzsLmRiTZjyTfkn38rEk84kkHjv8R/EfXoI1Pr1w803/HWT/ktv+K+6ePP/v5/2nr1T69dCeUgETOQfoRIxB/1iDb3oXMxAK3DEf6Y/wCfr1T69d+aX/jrJ/yW3/Ffe/Hn/wB/P+09aqfXr//Qv2l/zsn/AC0f/oY+/lUm/tZf9Mf8PQQ6FzrXobffcGGy+Y2fkcDQQYrIyYeZcuKgzmuSmiqfLF4ZFUQBZ1tcG5v7yB9mPuwe5Hv7sG+cw8jbrttvZWN6bSRbkuJDKqLIWQqdIXS66SynNeI6URWk9yjtCygjGfXoRPkF8fMj1tRYfemDpI32zPi8XR7wo6IyPFt3cSU0UFTmIDI7yHCZaqvruSYZCD9Db3LP3rfuo7n7P7bsXuJyxt6nk6Sztot0iiLMtjfCNUkul1En6S5krqz+lIR5MB0/d2bQBZAP0yBWnkfUfI9Fb94Q9IOv/9G/aX/Oyf8ALR/+hj7+VSb+1l/0x/w9BDoUOv8Au/sbqjD5TD7FfBrT5Suly04y1B93IcjJTxUwKSak0waIE9J4Bufz7m32o+8p7t+xmx7xy/7bSbathfXTXUn1MHiv47IsdVNRRdKLRTgGvr0/FdT26OsJGc59el73v3/mO0oMLtfGVjw7Ux2NxlRuGSnRqQbq3R9vG9bHJAeUwWLqr+OM/wCdlsx4UH3KX3nvvVb572WnL/JOy7gyckWlpbvfMimIbluIRWlDJxFnby18OM4kejEHSpDt3dvcaIw36QAr82/zD+fRbveHnSPr/9K/mSKUyORFLy7HmNgeWP1FuD7+ViSCcySEQP8AEfwn16CND6dcPDN/xyk/5Ib/AIp7p9PP/vl/2H/N16h9OveGX/jlJ/1Lb/inv308/wDvh/8AeT/m61Q+nXvDL/xyk/5Ib/inv3gT/wC+X/YevUPp1//Z\n","title":"Reblog Display Options","description":"Adds different styles to the new reblog layout, including the \"classic\" nested look.","developer":"new-xkit","version":"1.3.6","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/blacklist.json b/Extensions/dist/blacklist.json new file mode 100644 index 000000000..94660e73c --- /dev/null +++ b/Extensions/dist/blacklist.json @@ -0,0 +1 @@ +{"id":"blacklist","script":"//* TITLE Blacklist **//\n//* VERSION 3.1.9 **//\n//* DESCRIPTION Clean your dash **//\n//* DETAILS This extension allows you to block posts based on the words you specify. If a post has the text you've written in the post itself or it's tags, it will be replaced by a warning, or won't be shown on your dashboard, depending on your settings. **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA false **//\n//* SLOW true **//\n\njQuery.fn.selectText = function() {\n\tvar doc = document;\n\tvar element = this[0];\n\tvar range, selection;\n\n\tif (doc.body.createTextRange) {\n\t\trange = document.body.createTextRange();\n\t\trange.moveToElementText(element);\n\t\trange.select();\n\t} else if (window.getSelection) {\n\t\tselection = window.getSelection();\n\t\trange = document.createRange();\n\t\trange.selectNodeContents(element);\n\t\tselection.removeAllRanges();\n\t\tselection.addRange(range);\n\t}\n};\n\nXKit.extensions.blacklist = new Object({\n\n\trunning: false,\n\tslow: true,\n\n\tcontrol_panel_div: \"\",\n\n\tpreferences: {\n\t\t\"sep0\": {\n\t\t\ttext: \"User interface options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"shortcut\": {\n\t\t\ttext: \"Enable alt + B shortcut for adding new words\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"right_click\": {\n\t\t\ttext: \"Enable alt + click on highlighted text to add words\",\n\t\t\texperimental: true,\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"show_type\": {\n\t\t\ttext: \"Show type of post when it's blocked\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"mini_block\": {\n\t\t\ttext: \"Enable mini-UI for blocked posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"sep1\": {\n\t\t\ttext: \"Blacklisting options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"dont_display\": {\n\t\t\ttext: \"Don't display blocked posts at all (not recommended)\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"check_authors\": {\n\t\t\ttext: \"Check author blog titles and usernames for blacklisted words\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"dont_block_me\": {\n\t\t\ttext: \"Don't block my own posts\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"dont_on_inbox\": {\n\t\t\ttext: \"Don't run Blacklist on my Inbox\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"dont_block_liked\": {\n\t\t\ttext: \"Don't block posts I've liked or replied to\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"dont_show_cause\": {\n\t\t\ttext: \"Don't show why the post was blocked\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"use_improved\": {\n\t\t\ttext: \"Use improved checking\",\n\t\t\tslow: true,\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"sep2\": {\n\t\t\ttext: \"Appearance options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"show_tags\": {\n\t\t\ttext: \"Show tags on blocked posts (does not work with Mini-UI mode)\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"sep3\": {\n\t\t\ttext: \"Blacklisted Words\",\n\t\t\ttype: \"separator\"\n\t\t}\n\t},\n\n\tblacklisted: [],\n\twhitelisted: [],\n\n\tedit_label: \"\",\n\n\trun: async function() {\n\t\tthis.running = true;\n\n\t\tif (!XKit.interface.is_tumblr_page()) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait XKit.css_map.getCssMap();\n\t\tif (XKit.page.react) {\n\t\t\tthis.edit_label = await XKit.interface.translate(\"Edit\");\n\t\t}\n\n\t\tif ($(\"body\").hasClass(\"dashboard_messages_inbox\") === true || $(\"body\").hasClass(\"dashboard_messages_submissions\") === true) {\n\t\t\tif (this.preferences.dont_on_inbox.value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tXKit.tools.init_css(\"blacklist\");\n\t\tXKit.interface.hide(\".xblacklist_hidden_post\", \"blacklist\");\n\n\t\tvar m_blacklist = XKit.storage.get(\"blacklist\", \"words\", \"\").split(\",\");\n\t\tvar m_whitelist = XKit.storage.get(\"blacklist\", \"words_whitelisted\", \"\").split(\",\");\n\n\t\tif (m_blacklist !== \"\") {\n\t\t\tthis.blacklisted = m_blacklist;\n\t\t}\n\n\t\tif (m_blacklist !== \"\") {\n\t\t\tthis.whitelisted = m_whitelist;\n\t\t}\n\n\t\tif (this.preferences.shortcut.value === true) {\n\n\t\t\t$(document).on('keydown', XKit.extensions.blacklist.key_down);\n\n\t\t}\n\n\t\tconst postSel = XKit.css_map.keyToCss('listTimelineObject') || '.post';\n\t\tconst postContentClasses = XKit.css_map.keyToClasses('post') || ['.post_content'];\n\t\tconst blacklistedPostContentSel = postContentClasses.map(cls => `.xblacklist_blacklisted_post ${cls}`).join(', ');\n\n\t\tif (this.preferences.mini_block.value === true) {\n\n\t\t\tconst mini_ui = `\n\t\t\t\t.xblacklist_blacklisted_post {\n\t\t\t\t\topacity: 1 !important;\n\t\t\t\t\tpadding: 0 !important;\n\t\t\t\t\tborder: 1px dashed rgba(var(--white-on-dark, 255,255,255), 0.4) !important;\n\t\t\t\t\tbackground: transparent !important;\n\t\t\t\t}\n\t\t\t\t.xblacklist_blacklisted_post .post_avatar,\n\t\t\t\t.xblacklist_blacklisted_post .post_permalink {\n\t\t\t\t\tdisplay: none !important;\n\t\t\t\t}\n\t\t\t\t.xblacklist_excuse_container {\n\t\t\t\t\tbackground: transparent !important;\n\t\t\t\t}\n\t\t\t\t.xblacklist_blacklisted_post .xblacklist_excuse {\n\t\t\t\t\theight: 40px !important;\n\t\t\t\t\tline-height: 40px !important;\n\t\t\t\t\tcolor: rgba(var(--white-on-dark, 255,255,255), 0.4);\n\t\t\t\t\tpadding: 0;\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\tpadding-left: 15px;\n\t\t\t\t}\n\t\t\t\t${blacklistedPostContentSel} {\n\t\t\t\t\tbackground: transparent;\n\t\t\t\t}\n\t\t\t\t.xblacklist_blacklisted_post .xblacklist_open_post,\n\t\t\t\t.xblacklist_blacklisted_post .post_tags {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t\t.xblacklist_blacklisted_post:hover .xblacklist_open_post {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\theight: unset;\n\t\t\t\t\tline-height: initial;\n\t\t\t\t\ttop: 50% !important;\n\t\t\t\t\ttransform: translateY(-50%);\n\t\t\t\t\tmargin: 0;\n\t\t\t\t}\n\t\t\t\t.xkit--react .xblacklist_open_post {\n\t\t\t\t\tcolor: rgba(var(--white-on-dark), 0.8);\n\t\t\t\t\tbackground: rgba(var(--white-on-dark), 0.05);\n\t\t\t\t\tborder-color: rgba(var(--white-on-dark), 0.3);\n\t\t\t\t}\n\t\t\t\t.xkit--react .xblacklist_open_post:hover {\n\t\t\t\t\tcolor: rgb(var(--white-on-dark));\n\t\t\t\t\tbackground: rgba(var(--white-on-dark), 0.1);\n\t\t\t\t\tborder-color: rgba(var(--white-on-dark), 0.5);\n\t\t\t\t}\n\t\t\t`;\n\n\t\t\tXKit.tools.add_css(mini_ui, \"blacklist\");\n\n\t\t}\n\n\t\tif (XKit.page.react || $(postSel).length > 0) {\n\t\t\tXKit.post_listener.add(\"blacklist\", XKit.extensions.blacklist.check);\n\t\t\tXKit.extensions.blacklist.check();\n\n\t\t\tif (XKit.extensions.blacklist.preferences.right_click.value === true) {\n\t\t\t\t$(document).on('mouseup', XKit.extensions.blacklist.get_selection);\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tkey_down: function(e) {\n\t\tif (e.altKey === true) {\n\t\t\tif (e.which === 66) {\n\t\t\t\tvar m_div = \"\";\n\t\t\t\tif ($(\"#xkit-control-panel\").length > 0) {\n\t\t\t\t\t// Control panel is open.\n\t\t\t\t\tif (XKit.extensions.blacklist.control_panel_div !== \"\") {\n\t\t\t\t\t\tm_div = XKit.extensions.blacklist.control_panel_div;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tXKit.extensions.blacklist.show_add(\"\", m_div, true);\n\t\t\t}\n\t\t}\n\n\t},\n\n\tget_selection: function(e) {\n\n\t\tif ( e.altKey !== true ) { return; }\n\n\t\tvar text = \"\";\n\n\t\ttry {\n\n\t\t\tif (top.getSelection) {\n\t\t\t\ttext = top.getSelection().toString();\n\t\t\t} else if (document.selection && document.selection.type != \"Control\") {\n\t\t\t\ttext = document.selection.createRange().text;\n\t\t\t}\n\n\t\t} catch (err) {\n\t\t\t// console.log(\"ho\");\n\t\t}\n\n\t\tif (text === \"\" || typeof text === \"undefined\") {\n\t\t\treturn;\n\t\t}\n\n\t\ttext = $.trim(text);\n\n\t\tXKit.extensions.blacklist.show_add(text, \"\");\n\n\t},\n\n\texport: function() {\n\n\t\tvar m_data = {};\n\n\t\tm_data.creator = \"XKIT\";\n\t\tm_data.version = \"1.0\";\n\t\tm_data.blacklist = XKit.extensions.blacklist.blacklisted;\n\t\tm_data.whitelist = XKit.extensions.blacklist.whitelisted;\n\n\t\tvar m_html = \"
\" +\n\t\t\t\t\t\"
\" +\n\t\t\t\t\t\t\"
\" +\n\t\t\t\t\t\t\tJSON.stringify(m_data) +\n\t\t\t\t\t\t\"
\" +\n\t\t\t\t\t\"
\" +\n\t\t\t\t\"
\";\n\n\t\tXKit.window.show(\"Export Blacklist\", \"Blacklist Contents in JSON:\" + m_html, \"info\", \"
OK
\");\n\n\t\t$(\"#xkit-blacklist-share-code\").nanoScroller();\n\t\t$(\"#xkit-blacklist-share-code\").nanoScroller({ scroll: 'top' });\n\n\t\t$(\"#xkit-blacklist-share-code\").click(function() { $(this).selectText();});\n\n\t},\n\n\timport: function(m_div) {\n\n\t\tXKit.window.show(\"Import\", \"You can import settings from Tumblr Savior/XKit.
Go to your Tumblr Savior's Save/Load panel and paste the text below to import your blacklisted/whitelisted words.\", \"question\", \"
Import!
Cancel
\");\n\n\t\t$(\"#xkit-blacklist-replace-on-import\").click(function() {\n\t\t\t$(this).toggleClass(\"selected\");\n\t\t});\n\n\t\t$(\"#xkit-blacklist-add-words\").click(function() {\n\n\t\t\tvar $m_to_add = $(\"#xkit-blacklist-import-words\");\n\t\t\tvar m_to_add = $m_to_add.val();\n\n\t\t\tif (m_to_add === \"\" || $.trim(m_to_add) === \"\") {\n\t\t\t\t$m_to_add\n\t\t\t\t\t.css(\"border-color\", \"red\")\n\t\t\t\t\t.attr(\"placeholder\", \"You forgot to paste anything.\")\n\t\t\t\t\t.val(\"\")\n\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t$m_to_add\n\t\t\t\t\t\t\t.removeAttr(\"style\")\n\t\t\t\t\t\t\t.attr(\"placeholder\", \"Paste preferences text here.\")\n\t\t\t\t\t\t\t.off(\"click\");\n\t\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar m_obj = null;\n\t\t\ttry {\n\n\t\t\t\tm_obj = JSON.parse(m_to_add);\n\n\t\t\t} catch (e) {\n\t\t\t\tXKit.window.show(\"Invalid or corrupt data.\",\n\t\t\t\t\t\"The JSON you inputted could not be read.
\" +\n\t\t\t\t\t\"Be sure you are copy/pasting the right file in its entirety.

\" +\n\t\t\t\t\t\"Error details:

\" + e.message + \"

\",\n\t\t\t\t\t\"error\",\n\t\t\t\t\t'
OK
'\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar to_check_blacklist = \"listBlack\";\n\t\t\tvar to_check_whitelist = \"listWhite\";\n\n\t\t\tif (m_obj.creator === \"XKIT\") {\n\n\t\t\t\tto_check_blacklist = \"blacklist\";\n\t\t\t\tto_check_whitelist = \"whitelist\";\n\n\t\t\t}\n\n\t\t\tvar blacklist_count = 0;\n\t\t\tif (typeof m_obj[to_check_blacklist] === \"object\") {\n\t\t\t\tfor (var i = 0; i < m_obj[to_check_blacklist].length; i++) {\n\t\t\t\t\tvar m_word = m_obj[to_check_blacklist][i];\n\t\t\t\t\tm_word = $.trim(m_word);\n\t\t\t\t\tif (m_word === \"\") { continue; }\n\t\t\t\t\tif (m_word.indexOf(\",\") !== -1) {\n\t\t\t\t\t\tm_word = XKit.tools.replace_all(m_word, \",\", \"\");\n\t\t\t\t\t}\n\t\t\t\t\tif (m_word.indexOf(\"\\\\\") !== -1) {\n\t\t\t\t\t\tm_word = XKit.tools.replace_all(m_word, \"\\\\\\\\\", \"\");\n\t\t\t\t\t}\n\t\t\t\t\tif (m_word.length <= 3) {\n\t\t\t\t\t\tm_word = m_word + \"*\";\n\t\t\t\t\t}\n\t\t\t\t\tif (XKit.extensions.blacklist.check_if_exists(m_word) !== true) {\n\t\t\t\t\t\tXKit.extensions.blacklist.blacklisted.push(m_word);\n\t\t\t\t\t\tblacklist_count++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar whitelist_count = 0;\n\t\t\tif (typeof m_obj[to_check_whitelist] === \"object\") {\n\t\t\t\tm_obj[to_check_whitelist].forEach(function(word) {\n\t\t\t\t\tword = $.trim(word);\n\t\t\t\t\tif (word === \"\") { return; }\n\t\t\t\t\tif (word.indexOf(\",\") !== -1) {\n\t\t\t\t\t\tword = XKit.tools.replace_all(word, \",\", \"\");\n\t\t\t\t\t}\n\t\t\t\t\tif (word.indexOf(\"\\\\\") !== -1) {\n\t\t\t\t\t\tword = XKit.tools.replace_all(word, \"\\\\\\\\\", \"\");\n\t\t\t\t\t}\n\t\t\t\t\tif (word.length <= 3) {\n\t\t\t\t\t\tword = word + \"*\";\n\t\t\t\t\t}\n\t\t\t\t\tif (XKit.extensions.blacklist.check_if_exists(word) !== true) {\n\t\t\t\t\t\tXKit.extensions.blacklist.whitelisted.push(word);\n\t\t\t\t\t\twhitelist_count++;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (blacklist_count > 0 || whitelist_count > 0) {\n\n\t\t\t\tif (m_obj.creator === \"XKIT\") {\n\n\t\t\t\t\tXKit.window.show(\"Results\",\t\"Imported from XKit Blacklist.
\" +\n\t\t\t\t\t\t\t\t\t\"Added \" + blacklist_count + \" new words to the blacklist.
\" +\n\t\t\t\t\t\t\t\t\t\"Added \" + whitelist_count + \" new words to the whitelist.

Words that already exist in your list are not added. Your settings are not carried from Tumblr Savior, so you might want to check the settings to configure Blacklist to your liking.\", \"info\", \"
OK
\");\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tXKit.window.show(\"Results\",\t\"Imported from version \" + m_obj.version + \" of Tumblr Savior.
\" +\n\t\t\t\t\t\t\t\t\t\"Added \" + blacklist_count + \" new words to the blacklist.
\" +\n\t\t\t\t\t\t\t\t\t\"Added \" + whitelist_count + \" new words to the whitelist.

Words that already exist in your list are not added. Your settings are not carried from Tumblr Savior, so you might want to check the settings to configure Blacklist to your liking.\", \"info\", \"
OK
\");\n\n\t\t\t\t}\n\n\t\t\t\tXKit.extensions.blacklist.save_blacklist();\n\n\t\t\t} else {\n\n\t\t\t\tXKit.window.show(\"Results\", \"No words were imported.
It might be possible that all the words in your import were already in your blacklist.\", \"info\", \"
OK
\");\n\n\t\t\t}\n\n\t\t\tXKit.extensions.blacklist.cpanel(m_div);\n\t\t\tXKit.extensions.xkit_preferences.restart_extension(\"blacklist\");\n\n\t\t\t/*if (typeof m_text === \"undefined\" || m_text === \"\") {\n\t\t\t\tXKit.extensions.blacklist.cpanel(m_div);\n\t\t\t} else {\n\t\t\t\tXKit.notifications.add(\"Added to blacklist.\",\"ok\");\n\t\t\t}\n\t\t\tXKit.extensions.xkit_preferences.restart_extension(\"blacklist\");\n\t\t\t*/\n\n\t\t});\n\n\t},\n\n\tshow_add: function(m_text, m_div, from_shortcut) {\n\n\t\tXKit.window.show(\"Add word to blacklist/whitelist\", \"Enter the word you want to add.
Your words can not contain commas or backslashes.
 Add to whitelist

Before adding a word, please check \\\"Tips\\\" section.\", \"question\", \"
Add word
Cancel
\");\n\n\t\tif (typeof m_text !== \"undefined\" && m_text !== \"\") {\n\t\t\t$(\"#xkit-blacklist-word\").val(m_text);\n\t\t}\n\n\t\t$(\"#xkit-blacklist-add-to-whitelist\").click(function() {\n\t\t\t$(this).toggleClass(\"selected\");\n\t\t});\n\n\t\t$(\"#xkit-blacklist-add-word\").click(function() {\n\n\t\t\tvar $m_to_add = $(\"#xkit-blacklist-word\");\n\t\t\tvar m_to_add = $m_to_add.val().replace(/\\u200B/g, '');\n\t\t\tfunction complain(problem) {\n\t\t\t\t$m_to_add\n\t\t\t\t\t.css(\"border-color\", \"red\")\n\t\t\t\t\t.attr(\"placeholder\", problem)\n\t\t\t\t\t.val(\"\")\n\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t$m_to_add\n\t\t\t\t\t\t\t.removeAttr(\"style\")\n\t\t\t\t\t\t\t.attr(\"placeholder\", \"Enter a word here.\")\n\t\t\t\t\t\t\t.off(\"click\");\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (m_to_add === \"\" || $.trim(m_to_add) === \"\") {\n\t\t\t\tcomplain(\"Not even XKit can save you from ALL posts.\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_to_add.indexOf(\",\") !== -1) {\n\t\t\t\tcomplain(\"The word you enter cannot have commas in it.\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_to_add.indexOf(\"\\\\\") !== -1) {\n\t\t\t\tcomplain(\"The word you enter cannot have backslashes in it.\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_to_add.length <= 1) {\n\t\t\t\tcomplain(\"Words must be at least two characters.\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (XKit.extensions.blacklist.check_if_exists(m_to_add) === true) {\n\t\t\t\tcomplain(m_to_add + \" is already in the blacklist.\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!$(\"#xkit-blacklist-add-to-whitelist\").hasClass(\"selected\")) {\n\n\t\t\t\tXKit.extensions.blacklist.blacklisted.push(m_to_add);\n\t\t\t\tXKit.extensions.blacklist.save_blacklist();\n\n\t\t\t} else {\n\n\t\t\t\tXKit.extensions.blacklist.whitelisted.push(m_to_add);\n\t\t\t\tXKit.extensions.blacklist.save_blacklist();\n\n\t\t\t}\n\n\t\t\tif ((typeof m_text === \"undefined\" || m_text === \"\") && from_shortcut !== true) {\n\t\t\t\tXKit.extensions.blacklist.cpanel(m_div);\n\t\t\t} else {\n\t\t\t\tif (!$(\"#xkit-blacklist-add-to-whitelist\").hasClass(\"selected\")) {\n\t\t\t\t\tXKit.notifications.add(\"Added to blacklist.\", \"ok\");\n\t\t\t\t} else {\n\t\t\t\t\tXKit.notifications.add(\"Added to whitelist.\", \"ok\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tXKit.extensions.xkit_preferences.restart_extension(\"blacklist\");\n\t\t\tXKit.window.close();\n\n\t\t});\n\n\t},\n\n\tcheck: function() {\n\n\t\tvar height_changed = false;\n\n\t\tif (XKit.extensions.blacklist.running !== true) {return; }\n\n\t\t// Refuse to process anything within the new post form\n\t\t$('.post-form .post').not('.xblacklist-done').each(function() {\n\t\t\t$(this).addClass('xblacklist-done');\n\t\t\treturn;\n\t\t});\n\n\t\tconst postSel = XKit.css_map.keyToCss('listTimelineObject') || '.post';\n\t\t$(postSel).not(\".xblacklist-done\").each(function() {\n\n\t\t\ttry {\n\n\t\t\t\t// Check if it's something we should not touch.\n\t\t\t\tif ($(this).attr('id') === \"new_post\") { return; }\n\t\t\t\t//if ($(this).css(\"display\") === \"none\") { return; }\n\n\t\t\t\t// $(this).css(\"background\",\"green\");\n\n\t\t\t\t// if has no text content, no need to do this.\n\t\t\t\t// if ($(this).find(\".post_content\").length <= 0 && $(this).find(\".post_body\").length <=0 &&) { $(this).css(\"background\",\"blue\"); return; }\n\n\t\t\t\t// Add class to not do this twice.\n\t\t\t\t$(this).addClass(\"xblacklist-done\");\n\n\t\t\t\tif (XKit.extensions.blacklist.preferences.dont_block_me.value && $(this).find(`[aria-label='${XKit.extensions.blacklist.edit_label}']`).length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Collect the tags\n\t\t\t\tvar tag_array = [];\n\t\t\t\tconst tagSel = XKit.css_map.keyToCss('tag') || '.post_tag';\n\t\t\t\tif ($(this).find(tagSel).length > 0) {\n\t\t\t\t\t$(this).find(tagSel).each(function() {\n\t\t\t\t\t\ttag_array.push($(this).text().trim().replace(\"#\", \"\").toLowerCase());\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Collect the title contents too.\n\t\t\t\tvar m_title = \"\";\n\t\t\t\tif ($(this).find(\".post_title, .reblog-title\").length > 0) {\n\t\t\t\t\tm_title = $(this).find(\".post_title, .reblog-title\").html();\n\t\t\t\t}\n\n\t\t\t\t// Collect the author info, if the option is toggled.\n\t\t\t\tvar m_author = \"\";\n\t\t\t\tif (XKit.extensions.blacklist.preferences.check_authors.value) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst postInfoSel = XKit.css_map.keyToCss('blogLink') ||\n\t\t\t\t\t\t\t'.post_info_link, .reblog-tumblelog-name';\n\t\t\t\t\t\tvar post_info_links = $(this).find(postInfoSel).map(function() {\n\t\t\t\t\t\t\treturn $(this).text();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Join the text of the post info links with spaces\n\t\t\t\t\t\tm_author += post_info_links.get().join(\" \");\n\n\t\t\t\t\t\tconst contentSourceSel = XKit.css_map.keyToCss('contentSource') || '.reblog_source';\n\t\t\t\t\t\tif ($(this).find(contentSourceSel).length > 0) {\n\t\t\t\t\t\t\tm_author = m_author + \" \" + $(this).find(contentSourceSel).find(\"a\").html();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ($(this).find(\".post_source_link\").length > 0) {\n\t\t\t\t\t\t\tm_author = m_author + \" \" + $(this).find(\".post_source_link\").html();\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.log(\" !! can't get author !!\");\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Collect the content.\n\t\t\t\tvar m_content = \"\";\n\n\t\t\t\t// Old methods of finding content\n\t\t\t\tif ($(this).find('.post_text_wrapper').length > 0) {\n\t\t\t\t\tm_content = $(this).find('.post_text_wrapper').html();\n\t\t\t\t}\n\n\t\t\t\tif ($(this).find(\".post_body\").length > 0) {\n\t\t\t\t\tm_content = $(this).find(\".post_body\").html();\n\t\t\t\t}\n\n\t\t\t\t// Link buttons (link post's content) live inside a .post_media\n\t\t\t\t// which can coexist with a .post_body.\n\t\t\t\tif ($(this).find(\".post_media\").length > 0) {\n\t\t\t\t\tm_content += \" \" + $(this).find(\".post_media\").html();\n\t\t\t\t}\n\n\t\t\t\tif ($(this).find(\".caption\").length > 0) {\n\t\t\t\t\tm_content = $(this).find(\".caption\").html();\n\t\t\t\t}\n\n\t\t\t\tif ($(this).find(\".reblog-content\").length > 0) {\n\t\t\t\t\tm_content = $(this).find(\".reblog-content\").map(function() {\n\t\t\t\t\t return $(this).html();\n\t\t\t\t\t}).get().join(\" \");\n\t\t\t\t}\n\n\t\t\t\t// New method for finding content on react. \"link\" finds the content of link posts\n\t\t\t\tconst contentSel = XKit.css_map.keyToCss('textBlock') + \",\" + XKit.css_map.keyToCss('link');\n\t\t\t\tvar content = $(this).find(contentSel);\n\t\t\t\tif (content.length) {\n\t\t\t\t\tm_content += content.map(function() {\n\t\t\t\t\t return $(this).html();\n\t\t\t\t\t}).get().join(\" \");\n\t\t\t\t}\n\n\t\t\t\tm_content = m_content + \" \" + m_title;\n\n\t\t\t\tif (XKit.extensions.blacklist.preferences.check_authors.value) {\n\t\t\t\t\tm_content = m_content + \" \" + m_author;\n\t\t\t\t}\n\n\t\t\t\tm_content = XKit.tools.replace_all(m_content, \" \", \" \");\n\t\t\t\tm_content = m_content.toLowerCase();\n\n\t\t\t // Preserve href links.\n\t\t\t m_content = m_content.replace(/]*?\\s+)?href=\"([^\"]*)\".*?>/gm, ' $1 ');\n\t\t\t\t// Strip HTML tags.\n\t\t\t\tm_content = m_content.replace(/<(?:.|\\n)*?>/gm, ' ');\n\n\t\t\t\t//console.log('all the content is', m_content);\n\n\t\t\t\tvar m_result = XKit.extensions.blacklist.do_post($(this), m_content, tag_array);\n\t\t\t\tif (m_result !== \"\") {\n\t\t\t\t\theight_changed = true;\n\t\t\t\t\t//$(this).css(\"background\",\"red\");\n\t\t\t\t\tXKit.extensions.blacklist.hide_post($(this), m_result);\n\t\t\t\t} else {\n\t\t\t\t\t//$(this).css(\"background\",\"green\");\n\t\t\t\t}\n\n\t\t\t} catch (e) {\n\n\t\t\t\tconsole.error(\"Blacklist can't parse post: \" + e.message);\n\t\t\t\t// $(this).css(\"background\",\"red\");\n\n\t\t\t}\n\n\t\t});\n\n\t\tif (height_changed) {\n\t\t\tsetTimeout(function() {\n\n\t\t\t\tXKit.tools.add_function(function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (typeof Tumblr === \"undefined\") {\n\t\t\t\t\t\t\tsetTimeout(function() {\n\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t// console.log(\"!!! XKit blacklist ---> \" + e.message);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}, 1000);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t// console.log(\"!!! XKit blacklist ---> \" + e.message);\n\t\t\t\t\t}\n\t\t\t\t}, true, \"\");\n\n\t\t\t}, 300);\n\t\t}\n\t},\n\n\thide_post: function($post, word) {\n\t\tconst {\n\t\t\tdont_block_me,\n\t\t\tdont_block_liked,\n\t\t\tdont_display,\n\t\t\tshow_type,\n\t\t\tdont_show_cause,\n\t\t\tmini_block,\n\t\t\tshow_tags\n\t\t} = this.preferences;\n\n\t\tif (dont_block_me.value && $post.hasClass('is_mine')) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (dont_block_liked.value && $post.find('.post_control.like.liked').length !== 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (dont_display.value) {\n\t\t\t$post.addClass('xblacklist_hidden_post');\n\t\t\treturn;\n\t\t}\n\n\t\tconst cause = dont_show_cause.value ?\n\t\t\t''\n\t\t\t: `Blocked because it contains the word "${word}"`;\n\n\t\tconst post_type_div = show_type.value ?\n\t\t\t`
 
`\n\t\t\t: '';\n\n\t\tconst excuse = `\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t${cause}\n\t\t\t\t\t${post_type_div}\n\t\t\t\t\t
\n\t\t\t\t\t\tShow it anyway\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t`;\n\n\t\t$post.addClass('xblacklist_blacklisted_post');\n\n\t\tif (!mini_block.value) {\n\t\t\t$post.find('header, .post_header').first().after(excuse);\n\t\t} else {\n\t\t\t$post.prepend(excuse);\n\t\t}\n\n\t\t$post.on('click', '.xblacklist_open_post', this.unhide_post);\n\n\t\tif (!mini_block.value) {\n\t\t\t$post.addClass('xblacklist_blacklisted_post_full_ui');\n\n\t\t\tif (show_tags.value) {\n\t\t\t\tconst tagsSel = XKit.css_map.keyToCss('tags') || '.post_tags';\n\t\t\t\tconst excuseTags = $post.find(tagsSel).clone().addClass('post_tags');\n\t\t\t\t$post.find('.xblacklist_excuse_container').append(excuseTags);\n\t\t\t}\n\t\t}\n\n\t\tif ($post.hasClass(\"xkit-shorten-posts-shortened\")) {\n\t\t\t$post.find('.xkit-shorten-posts-embiggen').hide();\n\t\t\t$post.attr('data-xkit-blacklist-old-height', $post.css(\"height\"));\n\t\t\t$post.css('height', 'auto');\n\t\t}\n\t},\n\n\tunhide_post: function(e) {\n\t\tconst $button = $(e.target);\n\t\tconst $post = $button.parents('.xblacklist_blacklisted_post');\n\t\tconst $excuse = $button.parents('.xblacklist_excuse_container');\n\n\t\tif ($post.hasClass('xkit-shorten-posts-shortened')) {\n\t\t\t$post.find('.xkit-shorten-posts-embiggen').show();\n\t\t\t$post.css('height', $post.attr('data-xkit-blacklist-old-height'));\n\t\t}\n\n\t\t$post.removeClass('xblacklist_blacklisted_post');\n\t\t$excuse.remove();\n\t},\n\n\tdo_post: function(obj, post_content, tags) {\n\n\t\t// if ($.trim(post_content) === \"\") { return \"\"; }\n\t\tpost_content = post_content.replace(/\\n/g, ' ').replace(/\\u200B/g, '');\n\t\tvar p_words = post_content.split(\" \");\n\n\t\tvar new_array = [];\n\n\t\tfor (var i = 0; i < p_words.length; i++) {\n\n\t\t\tif ($.trim(p_words[i]) !== \"\") {\n\t\t\t\tnew_array.push(p_words[i].toLowerCase());\n\t\t\t}\n\n\t\t}\n\n\t\t/*var new_tags = [];\n\n\t\tfor (var i=0;i current word is \\\"\" + m_word + \"\\\"\");\n\n\t\t\tvar m_word_wildcard = false;\n\n\t\t\tif (m_word.substring(m_word.length - 1) === \"*\") {\n\t\t\t\t// This word is wildcarded!\n\t\t\t\tm_word_wildcard = true;\n\t\t\t\tm_word = m_word.substring(0, m_word.length - 1);\n\t\t\t}\n\n\t\t\tif (m_word.indexOf(\" \") !== -1) {\n\t\t\t\tm_word_wildcard = true;\n\t\t\t}\n\n\t\t\tvar m_p_words = [];\n\t\t\tvar tag_search_mode = false;\n\n\t\t\tif (m_word.substring(0, 1) === \"#\") {\n\t\t\t\t// console.log(\"blacklist -> checking tags only...\");\n\t\t\t\tif (tags.length === 0) { continue; }\n\t\t\t\tm_word = m_word.substring(1);\n\t\t\t\ttag_search_mode = true;\n\t\t\t\tm_p_words = tags;\n\t\t\t} else {\n\t\t\t\t// console.log(\"blacklist -> checking tags + content...\");\n\t\t\t\tm_p_words = p_words;\n\t\t\t\tm_p_words = m_p_words.concat(tags);\n\t\t\t\t// console.log(m_p_words);\n\t\t\t}\n\n\t\t\tvar m_post_content = post_content;\n\n\t\t\tif (tag_search_mode) {\n\t\t\t\tm_post_content = tags.join(\" \");\n\t\t\t} else {\n\t\t\t\tm_post_content = m_post_content + tags.join(\" \");\n\t\t\t}\n\n\t\t\tif (m_word_wildcard === false) {\n\n\t\t\t\t// Well this one is easy:\n\n\t\t\t\t// First lets strip the dots or commas.\n\n\t\t\t\tif (m_p_words.indexOf(m_word) !== -1) {\n\t\t\t\t\t// We've found the word!\n\t\t\t\t\tif (tag_search_mode) {\n\t\t\t\t\t\treturn \"#\" + m_word;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn m_word;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (XKit.extensions.blacklist.preferences.use_improved.value === true) {\n\t\t\t\t\t\t// This will use some CPU...\n\t\t\t\t\t\tif (m_post_content.indexOf(m_word) !== -1) {\n\t\t\t\t\t\t\t// // console.log('%c found on m_post_content.', 'background: #a5edae; color: black');\n\t\t\t\t\t\t\tfor (var j = 0; j < m_p_words.length; j++) {\n\t\t\t\t\t\t\t\tif (m_p_words[j].indexOf(m_word) !== -1) {\n\t\t\t\t\t\t\t\t\tvar mp_word = m_p_words[j].replace(/\\./g, '');\n\t\t\t\t\t\t\t\t\tmp_word = mp_word.replace(/,/g, '');\n\t\t\t\t\t\t\t\t\tmp_word = mp_word.replace(/\\u2026/g, '');\n\t\t\t\t\t\t\t\t\tmp_word = mp_word.replace(/[.,-/#!$%^&*;:{}=\\-_`~()@]/g, \"\").replace(/\\s{2,}/g, \" \");\n\t\t\t\t\t\t\t\t\t//// console.log('%c mp_word = ' + mp_word, 'background: #a5edae; color: black');\n\t\t\t\t\t\t\t\t\tif (m_word === mp_word) {\n\t\t\t\t\t\t\t\t\t\tif (tag_search_mode) {\n\t\t\t\t\t\t\t\t\t\t\treturn \"#\" + m_word;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn m_word;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Ugh. Wildcarded. This will\n\t\t\t\t// require some processing power.\n\t\t\t\t// To save CPU time, let's run it in the\n\t\t\t\t// post_content first, continue only if\n\t\t\t\t// we can find it there.\n\t\t\t\tif (m_post_content.indexOf(m_word) !== -1) {\n\n\t\t\t\t\t// Ugh. Even worse, we've found it,\n\t\t\t\t\t// now we need to get into a loop.\n\t\t\t\t\tfor (var m_i = 0; m_i < m_p_words.length; m_i++) {\n\n\t\t\t\t\t\tif (m_p_words[m_i] === \"\") { continue; }\n\t\t\t\t\t\tif (m_p_words[m_i].indexOf(m_word) !== -1) {\n\t\t\t\t\t\t\tif (tag_search_mode) {\n\t\t\t\t\t\t\t\treturn \"#\" + m_word;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn m_word;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (m_i < m_p_words.length) {\n\t\t\t\t\t\t\tvar tmp_word = m_p_words[m_i] + \" \" + m_p_words[m_i + 1];\n\n\t\t\t\t\t\t\t// This is a dirty fix but it should work for now.\n\t\t\t\t\t\t\tif (m_p_words[m_i + 2] !== \"\" || typeof m_p_words[m_i + 2] !== \"undefined\") {\n\t\t\t\t\t\t\t\ttmp_word = tmp_word + \" \" + m_p_words[m_i + 2];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (m_p_words[m_i + 3] !== \"\" || typeof m_p_words[m_i + 3] !== \"undefined\") {\n\t\t\t\t\t\t\t\ttmp_word = tmp_word + \" \" + m_p_words[m_i + 3];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (m_p_words[m_i + 4] !== \"\" || typeof m_p_words[m_i + 4] !== \"undefined\") {\n\t\t\t\t\t\t\t\ttmp_word = tmp_word + \" \" + m_p_words[m_i + 4];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (m_p_words[m_i + 5] !== \"\" || typeof m_p_words[m_i + 5] !== \"undefined\") {\n\t\t\t\t\t\t\t\ttmp_word = tmp_word + \" \" + m_p_words[m_i + 5];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (m_p_words[m_i + 6] !== \"\" || typeof m_p_words[m_i + 6] !== \"undefined\") {\n\t\t\t\t\t\t\t\ttmp_word = tmp_word + \" \" + m_p_words[m_i + 6];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst unsanitized = tmp_word;\n\n\t\t\t\t\t\t\ttmp_word = tmp_word.replace(/,/g, '').replace(/\\u2026/g, '');\n\t\t\t\t\t\t\ttmp_word = tmp_word.replace(/[.,-/#!$%^&*;:{}=\\-_`~()]/g, \"\").replace(/\\s{2,}/g, \" \");\n\n\t\t\t\t\t\t\t// // console.log(\"--------- \" + tmp_word);\n\n\t\t\t\t\t\t\tif (tmp_word.includes(m_word) || unsanitized.includes(m_word)) {\n\t\t\t\t\t\t\t\tif (tag_search_mode) {\n\t\t\t\t\t\t\t\t\treturn \"#\" + m_word;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn m_word;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\treturn \"\";\n\n\t},\n\n\tcheck_for_whitelist: function(p_words, post_content, tags) {\n\n\t\treturn XKit.extensions.blacklist.check_contents(XKit.extensions.blacklist.whitelisted, p_words, post_content, tags);\n\n\t},\n\n\tcheck_for_blacklist: function(p_words, post_content, tags) {\n\n\t\treturn XKit.extensions.blacklist.check_contents(XKit.extensions.blacklist.blacklisted, p_words, post_content, tags);\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tclearTimeout(XKit.extensions.blacklist.check_interval);\n\t\tXKit.post_listener.remove(\"blacklist\");\n\t\tsetTimeout(function() {\n\t\t\t$(\".xblacklist-done\").each(function() {\n\t\t\t\t$(this).removeClass(\"xblacklist_blacklisted_post\");\n\t\t\t\t$(this).find(\".xblacklist_excuse_container\").remove();\n\t\t\t\tconst postContentSel = XKit.css_map.keyToCss('post') || '.post_content';\n\t\t\t\t$(this).find(postContentSel).html($(this).find(\".xblacklist_old_content\").html());\n\t\t\t\t$(this).find(\".xkit-shorten-posts-embiggen\").css(\"display\", \"block\");\n\t\t\t\tXKit.extensions.blacklist.unhide_post($(this));\n\t\t\t});\n\t\t\t$(\".xblacklist-done\").removeClass(\"xblacklist-done\");\n\t\t\t$(\".xblacklist_hidden_post\").removeClass(\"xblacklist_hidden_post\");\n\t\t\t$(\".xblacklist_blacklisted_post\").removeClass(\"xblacklist_blacklisted_post\");\n\t\t}, 500);\n\t\tXKit.tools.remove_css(\"blacklist\");\n\t},\n\n\tcreate_blacklist_div: function(word, on_whitelist) {\n\n\t\tvar m_classes = \"xkit-blacklisted-word\";\n\t\tif (on_whitelist === true) {\n\t\t\tm_classes = m_classes + \" xkit-whitelisted-word\";\n\t\t}\n\n\t\tvar m_html = \"
\" + word + \"
\";\n\t\treturn m_html;\n\n\t},\n\n\tcheck_if_exists: function(word) {\n\n\t\tif (XKit.extensions.blacklist.blacklisted.indexOf(word) !== -1 || XKit.extensions.blacklist.whitelisted.indexOf(word) !== -1) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\n\t},\n\n\tsave_blacklist: function() {\n\n\t\tXKit.storage.set(\"blacklist\", \"words\", this.blacklisted.join(\",\"));\n\t\tXKit.storage.set(\"blacklist\", \"words_whitelisted\", this.whitelisted.join(\",\"));\n\n\t},\n\n\tcpanel: function(m_div) {\n\n\t\tXKit.extensions.blacklist.control_panel_div = m_div;\n\n\t\tif ($(\"#xkit-blacklist-custom-panel\").length > 0) {\n\t\t\t// Panel already exists, probably in refresh mode.\n\t\t\t// Remove it first.\n\t\t\t$(\"#xkit-blacklist-custom-panel\").remove();\n\t\t}\n\n\t\tvar m_html = \"
Add new
Auto-Populate
Tips
Import
Export
Delete All
\";\n\n\t\tm_html = m_html + \"
Blacklisted Words
\";\n\t\tif (XKit.extensions.blacklist.blacklisted.length <= 1) {\n\t\t\tm_html = m_html + \"
You have no blacklisted words.
\";\n\t\t} else {\n\t\t\tfor (var i = 0; i < XKit.extensions.blacklist.blacklisted.length; i++) {\n\t\t\t\tif (XKit.extensions.blacklist.blacklisted[i] !== \"\") {\n\t\t\t\t\tm_html = m_html + XKit.extensions.blacklist.create_blacklist_div(XKit.extensions.blacklist.blacklisted[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t\tm_html = m_html + \"
Whitelisted Words
\";\n\n\t\tif (XKit.extensions.blacklist.whitelisted.length <= 1) {\n\t\t\tm_html = m_html + \"
You have no whitelisted words.
\";\n\t\t} else {\n\t\t\tfor (var j = 0; j < XKit.extensions.blacklist.whitelisted.length; j++) {\n\t\t\t\tif (XKit.extensions.blacklist.whitelisted[j] !== \"\") {\n\t\t\t\t\tm_html = m_html + XKit.extensions.blacklist.create_blacklist_div(XKit.extensions.blacklist.whitelisted[j], true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tm_html = m_html + \"
 
\";\n\n\t\t$(m_div).append(m_html);\n\n\t\t$(\".xkit-blacklisted-word-delete\").unbind(\"click\");\n\t\t$(\".xkit-blacklisted-word-delete\").click(function() {\n\n\t\t\tif ($(this).parent().hasClass(\"xkit-whitelisted-word\")) {\n\n\t\t\t\tvar m_index = XKit.extensions.blacklist.whitelisted.indexOf($(this).attr('data-word'));\n\t\t\t\tif (m_index === -1) { return; }\n\n\t\t\t\tXKit.extensions.blacklist.whitelisted.splice(m_index, 1);\n\t\t\t\tXKit.extensions.blacklist.save_blacklist();\n\t\t\t\tXKit.extensions.xkit_preferences.restart_extension(\"blacklist\");\n\n\t\t\t\tvar m_box = $(this).parent();\n\t\t\t\t$(this).parent().slideUp('slow', function() {\n\t\t\t\t\t$(m_box).remove();\n\t\t\t\t});\n\n\t\t\t} else {\n\n\t\t\t\tvar word_index = XKit.extensions.blacklist.blacklisted.indexOf($(this).attr('data-word'));\n\t\t\t\tif (word_index === -1) { return; }\n\n\t\t\t\tXKit.extensions.blacklist.blacklisted.splice(word_index, 1);\n\t\t\t\tXKit.extensions.blacklist.save_blacklist();\n\t\t\t\tXKit.extensions.xkit_preferences.restart_extension(\"blacklist\");\n\n\t\t\t\tvar parent_box = $(this).parent();\n\t\t\t\t$(this).parent().slideUp('slow', function() {\n\t\t\t\t\t$(parent_box).remove();\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t});\n\n\t\t$(\"#blacklist-tips\").click(function() {\n\n\t\t\tXKit.window.show(\"A few tips on blacklisting\", \"
    \" +\n\t\t\t\t\"
  • You can add \\\"*\\\" at the end of a word to wildcard it.
  • \" +\n\t\t\t\t\"
  • Wildcarded words match words that begin with it: for example, \\\"cat*\\\" will find \\\"category\\\", \\\"capital\\\" etc.
  • \" +\n\t\t\t\t\"
  • If you add something that contains 2 or more words, it will be wildcarded automatically
  • \" +\n\t\t\t\t\"
  • Adding too much words, especially wildcard ones, will slow your computer down dramatically.
  • \" +\n\t\t\t\t\"
\", \"info\", \"
OK
\");\n\n\t\t});\n\n\t\t$(\"#blacklist-delete-all\").click(function() {\n\n\t\t\tXKit.window.show(\"Delete list\", \"Delete all your blacklisted words?\", \"question\", \"
Yes, delete my list.
Cancel
\");\n\n\t\t\t$(\"#xkit-blacklist-delete-all-continue\").click(function() {\n\n\t\t\t\tvar m_array = [];\n\n\t\t\t\tXKit.extensions.blacklist.blacklisted = m_array;\n\t\t\t\tXKit.extensions.blacklist.whitelisted = m_array;\n\t\t\t\tXKit.extensions.blacklist.save_blacklist();\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.extensions.blacklist.cpanel(m_div);\n\t\t\t\tXKit.extensions.xkit_preferences.restart_extension(\"blacklist\");\n\n\t\t\t});\n\n\t\t});\n\n\t\t$(\"#blacklist-populate-common\").click(function() {\n\n\t\t\tXKit.window.show(\"Populate list\", \"This will delete your existing list and replace it with some of the most common blocked words.

Note that this list might be incomplete, so please check it twice and add the ones you feel missing before using it.\", \"question\", \"
Yes, populate my list.
Cancel
\");\n\n\t\t\t$(\"#xkit-blacklist-populate-continue\").click(function() {\n\n\t\t\t\tvar m_array = [\"tw:*\", \"nsfw\", \"trigger*\", \"porn*\", \"naked\", \"cut*\", \"rape\", \"sex*\", \"blood*\", \"gore*\", \"nude*\", \"ass*\", \"horny*\", \"xxx\", \"adult\", \"amateur\", \"tit*\", \"fuck*\", \"boob*\", \"cock\", \"cunt\", \"pussy*\", \"anal*\", \"hardcore\"];\n\n\t\t\t\tXKit.extensions.blacklist.blacklisted = m_array;\n\t\t\t\tXKit.extensions.blacklist.save_blacklist();\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.extensions.blacklist.cpanel(m_div);\n\t\t\t\tXKit.extensions.xkit_preferences.restart_extension(\"blacklist\");\n\n\t\t\t});\n\n\t\t});\n\n\t\t$(\"#blacklist-add-button\").click(function() {\n\n\t\t\tXKit.extensions.blacklist.show_add(\"\", m_div);\n\n\t\t});\n\n\t\t$(\"#blacklist-import\").click(function() {\n\n\t\t\tXKit.extensions.blacklist.import(m_div);\n\n\t\t});\n\n\t\t$(\"#blacklist-export\").click(function() {\n\n\t\t\tXKit.extensions.blacklist.export();\n\n\t\t});\n\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller();\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller({ scroll: 'top' });\n\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","css":".xkit-blacklist-none {\n\tpadding: 15px;\n\tcolor: rgb(150,150,150);\n\tfont-size: 13px;\n\tline-height: 22px;\n\ttext-align: center;\n}\n.xkit-blacklist-post-type {\n\tdisplay: inline-block;\n\twidth: 25px;\n\theight: 100%;\n\tbackground-size: 24px 24px;\n\tbackground-position: 50% 50%;\n\tfloat: left;\n\tmargin-right: 6px;\n\tbackground-repeat: no-repeat;\n}\n\n.xkit-blacklist-post-type.regular {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUI4RDdBMTJBRUZBMTFFM0IwMzg5QTVEMzY1MTVDMTEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUI4RDdBMTNBRUZBMTFFM0IwMzg5QTVEMzY1MTVDMTEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFQjhEN0ExMEFFRkExMUUzQjAzODlBNUQzNjUxNUMxMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFQjhEN0ExMUFFRkExMUUzQjAzODlBNUQzNjUxNUMxMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PiK11qEAAAGUSURBVHja7NbLK0RhGMdx4xKF3GNKiY2Na0qEEMZiXIqydfkXLGyUhaxs/AtWVhZyX7BgocgCsbGQklxCJCzMHN+pX3k7mRtCOm99Ou95b8857/t0ZlyWZcX8dImN+YXiBHWC/v+g41jEPOq/HDXwcQgjHy/We5mOYE5IkbypF4nGvQeZIcbHf8f29um6gTPkodU2Jh1jWMcBNjGJos9sbzGeta2dmFF91hgTjyVj+++M+hGy7OuGCzqiyZdIwqDub5CnMdVq82MAaWjGk9rbojnTOPSqvoYXLOBBZ9qhvhPUoAnLKECZcXSJ0ZxpOSpVv0QDSnCqth5dr5GBUZ35HqaMhLKiOdMJK3R5hBtV8KltTkfQgiu1ee1rB0vvBHSpHnj6Qz25X9tVi2S0I0c7to1uzSlEarQfh0bjjfptfXHYVt88hlU/R7tsGfM9kSbSkK6vSiKz+LCqeiCZjrEPN1bkHhcaU2pf3BXkP1IdUpSpWx/0Z6PK2NZYZXoudpXlFbq/xU4kQZ3fUyeoE/TvBH0TYACJSBj0yVWwSAAAAABJRU5ErkJggg==);\n}\n\n.xblacklist_blacklisted_post_full_ui .xkit-blacklist-post-type.regular {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZGNjZFRUYxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZGNjZFRjAxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkY2NkVFRDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkY2NkVFRTFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsJAvbIAAAGdSURBVHja7NbJK0VhGMfxY8otKUMyRIaNlLmrEEIiEaJY8xdYsFOUlViwtbNhK5EpEkrpWiArC5GFoRQbynB9T/3U6aTc18JQ561P5z3vGZ73fd7ndG9YMBi0frqFW7/QvKBe0P8bNPKzQb/f7x4aRSneMIZdkyCBQODroK6WjkFE6/zONOh30tviCGi3RiSYZs80aLeO27hEChpc98RhGJs4xg7GkfOdoLmoVH/CkdYe18pmMYI6TaoKA1hEomnQDvhwg3WsabxWL7dUYM2wfzl6kYV6PCJP10MOGoEu9TfwpJk/aE9bde0M5ZrIMjJR6Hh3tEnQIpSof41q5ONcY5063iIeQ9rzQ0w6CipoUmldjuv94mw1SEUalrSABczjAnNIMinvKLSpb8/+RPe+KV0ViEGTXmwH3Ee7nslGrOk3ValUWkrbjGuv91CmbGxpPEOTsFTJPvWfQ93TPh1fVETO9opV9e1iOsWRUr0i97jSPQWhrnRa396D0utuU/pmP9LaoFUn40BVXqzzO/fDYd4fMy+oF/TPB30XYAA/FlCkcqgrRwAAAABJRU5ErkJggg==) !important;\n}\n\n.xkit-blacklist-post-type.photo, .xkit-blacklist-post-type.photoset, .xkit-blacklist-post-type.pano {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZGNjZFRjMxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZGNjZFRjQxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkY2NkVGMTFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkY2NkVGMjFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PklZnYUAAAF6SURBVHja7JXNKwVRGIfdcRVKIhHJSmQhKWwslBUbWSibG9a3lIWVjaIsxNLKBkluyVcs/AEiO8nGQjefC2woF8V4Tr3qNM3cc+c2WZ23nuZ89f7m954zZ2Ku6xb8d8SsqBW1opGJXgw1qUcdVMlQDaxCuWfpFyThUvqvkG7duvLNGze81CgsaKJBUQobWv8TZmDOb7FjSDYfIJiGTVjT3Km4gWm4htmgpCanFZ6+cjAJO1ALhXAPHbACB+LwGZbyFf3R2mrzE+LyENpk/A7GoQ/WpaQD2ZLGQxy6bTiFc6iUsQyUifMeSMGUKZETQlQdlDERfJMyt0CzuFRHfRe+TYnCOH2AYWmPiMBfHMmzEd7FfSROlcMnOPYI6qHEiqN0OgjLcJtljSpzUZR7mhAniwHzqrQTuSRyQsyXyGHq91nXDXtQnYuoqbyP0KD11d27D2dwInduO/T6GMjkK5qUctZ73HdClzb24flUXrJdg/Z/akWtaKj4FWAAOdZxVglFqeYAAAAASUVORK5CYII=);\n}\n\n.xkit-blacklist-post-type.quote {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTgwREFEQzYxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTgwREFEQzcxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkY2NkVGNTFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkY2NkVGNjFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp21znIAAAFvSURBVHja7JXNK0RRGMZdH5OSmgk1ZWEjCmUjElnNjiysmFKSBRZIFlZWNpKNz0lCdoqUlSWK3Sws+CuoSdJQXL9T7+J2u+eYMyarc+pXz9z3ueeZ9517z3i+75f99/JcqAt1oSUJzWW8qMt90A77v+yrPCnYjk/7X+FipcUXHIc9qIFPONb4BuEIGqAWVsOG8gIDF+FEAs/gRuNLw4UEXsNllKmQTqdgQ/QmLEDUbzIkHVbBKUzCezGhvbAlWm00r/E1y7hjMoUJyOs2NY03Jp1VwwvM6R5GmUQdfIgvb+rEFDoCXaIrYA1mIRHy9cOwaDX2ZViCxmJC0wEdl5HtwC20BGqjAa2mMgbrcAc9tqGdmusdsBu4t1vja4JD29CEoTYAraLrDb4229A3Q029FknRr7bHoCn00VBTR9uz6GwpQzOG2hU8iT6Ab40vaxt6DisR75w63makW7Xu5XMu5HuQJ979n7pQF/q39SPAAIOXa93gNF/cAAAAAElFTkSuQmCC);\n}\n\n.xkit-blacklist-post-type.link {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTgwREFEQ0ExQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTgwREFEQ0IxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODBEQURDODFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBODBEQURDOTFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Puk0h+sAAAGqSURBVHja7NZNKARhHMfx3fVyQF6Kg7eUXLQHysUmL+HgtUjhILJRilyk3F04SHJyUBJyk1YSeYkktZID2igHB29Rsl4Om/Wd+h+mzczq2XLYdurT7Owzz/x2Zv7Pv7X6/X7Lf2/WSGgkNDxDG9dHAr8qQyccyIIN93BjEWv6k111Y79eN/qPPy4RE3BKkH7LE+1YQT/uzC5m+0NgElbRY3L+u+ybsSVPIaTQSVQYjO2hCKmowTXsmEOMamg5ug3GHtCCLwziCB1yXIVW1VCnydg2XrCEcUzhGLcy3qsa6jAZ0yo2Bbl4xT5ikSDjBUYTg1VvRsDxE3ZQDK8UUCU8eMMo0uXcZNVQ/ZPYlWXxKJ+1dxeFOPShXmog6BYsVAvIgQ8DSJPlU4ghaRYbBnO9qu/0VPYfuECbPNpvXEq40eZRvdN5NCEepZhGNg7wiQaTuQuqd+rCpry7GQnU1u2yFE2JwbxzzKreqU+KRAvOlwZwJZWZaTDnGV1Szcpt8Aa1unVoNwk8k3Z4EmrvtUhPrZYucyjNQN/stYIbliXjjvxziISGb+iPAAMAcz18wE4/HnIAAAAASUVORK5CYII=);\n}\n\n.xkit-blacklist-post-type.conversation {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTgwREFEQ0UxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTgwREFEQ0YxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODBEQURDQzFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBODBEQURDRDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pmc6aAoAAAEzSURBVHjaYvz//z8DvQHjqKWjlo5aSjVL7ebf4AZSnUAcAsS8BMz6DsRHgLgUiG+DBA4lamBVyELAoG4gziTSA1xA7A/EfEDsCsR/cSlkImBQJBmhZwK1mIFcS7nJjTZ8koSC9x8S+xkQswKxKJT/GIhBCYIDGpSSSHp+UOJTZNABxLOB+A+UfwaIzwFxL1QOBniA2IdalrIB8UpQogbi+UD8E4jfQX3KhqSOGSofQQ1LfwGxIxAXAPF6IL4FxWZAbIAlJbuRG6fI4BsQqyPF3R9o3AkDMTua2hVAnE0NS52AWASIpYDYC4jloBa/gQY1DHwF4lxoYUGWpchJPwqJrYxHz1+kxEZWnJJTMDMRMpeQpdfIsPQ9pfm0BIhfkWAhKG5boYlutD4dtXTUUuoAgAADAGzGZBT0+yuKAAAAAElFTkSuQmCC);\n}\n\n.xkit-blacklist-post-type.audio {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDAxMTc2OTExQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDAxMTc2OTIxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODBEQUREMDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEMDExNzY5MDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmgJCVkAAAGISURBVHja7NY/KEVRHMDxd3kxyKoMMmCxeFneoje8wSBiMOgVykCkPEYyUCYDBgsRr2SUwkKUyeDPYDBICovVS/l/fU/9bp1u7nvvnluk7qlPt/On8zvn/s49Xcu27chvl6LIH5QwaBj0/waN5upcTx+7m6rRj1bUyKIfcIhlnOmDe+cTgXfajUuM4x2bal14xABOMV3InFEfATO4RjuOXP2NWMAkyjEaNKe1WMQdkj8EVOUcLThBGm1Bg47J6kckf14li2Goy3wi19z5gpahAzfYLmCB6iAdII4606DqhFbiAmuY0foqUKXV1anelbyrkjANmpFnJ3rQrPWlUK/Vk5LXIanPmQZtkPyoyT6Ec+q78KzN8abtOCWpMT5I+3KQ1NgvaYsL9bpnpc35G9iTlBh/p69YQkzqn/JswpXkbVXaLHnuaOONd6pP4EysLoJB3GPLtdNY0Au/1GP8C0rkKnzye6Xme71Tkp9i9Ln6brGi1Z1XvyEHLOs1qRX+DYZBw6B+yrcAAwC9FkublkrqIgAAAABJRU5ErkJggg==);\n}\n\n.xkit-blacklist-post-type.video {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDAxMTc2OTUxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDAxMTc2OTYxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpEMDExNzY5MzFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEMDExNzY5NDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlXaRegAAAFvSURBVHja7NbNKwRxHMfxXYsL+QdwEScHBxlyVPKQEkkO/oF18XwQKSSHvbg5c/TwH9iLXLQlFwc5SFKK5CGUxXp/63PYNjvGzoTDfOvVtL+Znc9vfvOd2Y1mMpnIb1dR5A8qDA1DA6lit53x6UXb9GEG9bjCOpbQhBU4eMIOZnFnX1pLzBcWSnViCzF9rsGCJtCKKo2XYwSVGMBbwVdKTWQFWp2hDIM5x9kKvKAXLdj3c0+rtb3FPcZxrDF7lV1rOW0tdzVe57eRzrXdQDse0KixKJLoQQodGj/x1UhUAm0YQ5euInuiQ2jWvSzFNg78hibVTHNowA3ec46pwCU2sfzF/h+H1mq54jp5vrJuvcCj+mAUU4WGnmprs/9wOc7u76GWehX9bqHfNZKjk9ljU+LCJp/GsAJ9LW9Kj4uXcvTCCOTdG/MYalf6HFSo1x+FI3TjNYgTpj2G2nO6h0l1cf6uC/+YhaFh6L8P/RRgAJzXR6+2XwoJAAAAAElFTkSuQmCC);\n}\n\n.xkit-blacklist-post-type.ask, .xkit-blacklist-post-type.note {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NEZFOTM1NjNCMUIxMTFFM0IwMzg5QTVEMzY1MTVDMTEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NEZFOTM1NjRCMUIxMTFFM0IwMzg5QTVEMzY1MTVDMTEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFQjhEN0ExNEFFRkExMUUzQjAzODlBNUQzNjUxNUMxMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0RkU5MzU2MkIxQjExMUUzQjAzODlBNUQzNjUxNUMxMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pt6K/OcAAADVSURBVHjaYvz//z8DvQETwwCAUUtHLaUKYCFRvQAQOwCxAZR/AIgvAPEHkkwB5VMisQEQP/iPCR5A5Yg2i5HIwgHkwwdAzA/lf0Riw/gKxPqY2DhNQLJkI9QRglDLGKByDtROSAZI7AlQ+gM0PpFDgyhAbPAaIBkKSzgg389HUmOI5giqJCRknICWmBaQop8cCxXQLGwg1QxyLC2gxEIQJqdEQk4wB8gpkRjJqMSxJSoGWpVIMHwAKXgd6BW8dC/wGdDy4gd6xeloJT5q6ail9AUAAQYAWQ3owAzEAUYAAAAASUVORK5CYII=);\n}\n\n.xblacklist_blacklisted_post_full_ui .xkit-blacklist-post-type.ask, .xblacklist_blacklisted_post_full_ui .xkit-blacklist-post-type.note {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0YwNkY2NzkyNjEwMTFFM0E4QURBMkY5NDVFMjREMzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0YwNkY2N0EyNjEwMTFFM0E4QURBMkY5NDVFMjREMzgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRjA2RjY3NzI2MTAxMUUzQThBREEyRjk0NUUyNEQzOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozRjA2RjY3ODI2MTAxMUUzQThBREEyRjk0NUUyNEQzOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmiD5J8AAADXSURBVHjaYvz//z8DvQETwwCAUUtHLaUKYCFGkYmJCYwpAMQOQGwA5R8A4gtA/AHEOXPmDPUshQKQRRuAWB5JrB6IHwJxANRyqgavANRXMAs/IsnJQ+UEqG1pAhDzQ9kboRYIIlnODw12qlpqgMSeAKU/oAWpAFUTEtSiBVD2BSTf2yOpuUBtSy9gCe75SPyFtEhIyEABzcJGqCNoWjgEoFnYQI8SCTnBHKBZiYQGNiBZdoEcS8nxKSgl74dig+FV4OPJPh/IsZRxtGE2aumopYPeUoAAAwBfSihME+bbPgAAAABJRU5ErkJggg==) !important;\n}\n\n\n\n#xkit-blacklist-share-code {\n\n\theight: 203px;\n\tborder: 1px solid rgb(190,190,190);\n\tmargin-top: 10px;\n\tbackground: rgb(244,244,244);\n\n}\n\n#xkit-blacklist-share-code-inner {\n\n\tfont-family: \"Courier New\", Courier, monospace;\n\tfont-size: 14px;\n\tbackground: rgb(244,244,244);\n\tpadding: 15px;\n\tword-wrap: break-word;\n\t-moz-user-select: text !important;\n\t-webkit-user-select: text !important;\n\tuser-select: text !important;\n\n}\n\n.xblacklist_blacklisted_post {\n\topacity: 0.7;\n\tpadding: 15px 0px 7px 0px !important;\n}\n\n.xblacklist_blacklisted_post .post_footer { display: none !important; }\n\n.xblacklist_blacklisted_post .post_footer,\n.xblacklist_blacklisted_post .post_header,\n.xblacklist_blacklisted_post .xtimestamp {\n\tdisplay: none;\n}\n\n.xblacklist_excuse {\n\ttext-align: left; font-size: 12px;\n\tline-height: 50px;\n\tmargin-top: 5px;\n}\n\n.xblacklist_excuse_container {\n\tborder-radius: 3px;\n\tposition: relative;\n}\n\n.xblacklist_open_post {\n\tposition: absolute !important;\n\theight: 30px;\n\tline-height: 30px;\n\tright: 5px;\n}\n\n.xblacklist_open_post:active {\n\tposition: absolute !important;\n\tright: 5px !important;\n}\n\n.xkit-blacklist-add-margins-to-ul {\n\tmargin: 0; padding: 0px 20px;\n}\n\n.xkit-blacklist-add-margins-to-ul li {\n\tmargin-bottom: 10px;\n}\n\n#xkit-blacklist-add-to-whitelist {\n\tpadding-left: 0px;\n\tmargin-bottom: 10px;\n\tmargin-top: 3px;\n}\n\n#blacklist-word-container {\n\tposition: absolute;\n\theight: auto;\n\twidth: 100%;\n}\n\n#blacklist-toolbar {\n\tbackground: rgb(245,245,245);\n\tpadding: 3px 15px;\n\tborder-bottom: 1px solid rgb(190,190,190);\n}\n\n.xkit-blacklist-clear {\n\theight: 0; line-height: 0;\n\tclear: both; display: none;\n}\n\n#whitelist-words,\n#blacklist-words {\n\twidth: 50%;\n\tfloat: left;\n\tbox-sizing: border-box;\n\theight: 100%;\n\tmin-height: 82px;\n}\n\n#whitelist-words {\n\tborder-left: 1px solid rgb(190,190,190);\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n}\n\n.blacklist-words-title {\n\tbackground: rgb(240,240,240);\n\ttext-align: center;\n\tfont-size: 13px;\n\tpadding: 5px;\n\tborder-bottom: 1px solid rgb(190,190,190);\n}\n\n.xkit-blacklisted-word {\n\tborder-bottom: 1px solid rgb(190,190,190);\n\tpadding: 0px 15px 0px 40px;\n\theight: 30px;\n\tline-height: 30px;\n\tcolor: rgb(100,100,100);\n\tfont-size: 12px;\n\tposition: relative;\n}\n\n.xkit-blacklisted-word:last-child {\n\tborder-bottom: 0;\n}\n\n.xkit-blacklisted-word-delete {\n\tmargin-right: 10px;\n\tmargin-left: 4px;\n\tcolor: #AD074A;\n\tcursor: pointer;\n\tposition: absolute;\n\theight: 30px; line-height: 30px;\n\tleft: 15px; top: 0;\n}\n\n.xkit-blacklisted-word-delete:hover {\n\tcolor: #CC0857;\n}\n\n/* Workaround for chrome bug\n * things that are partially transparent and position: sticky;\n * get launched like 200 px to the left\n */\n.xblacklist_blacklisted_post .post_avatar.post-avatar--sticky .post_avatar_wrapper {\n\tposition: relative;\n\ttop: 0;\n}\n\n.xblacklist_excuse_container ~ * {\n\tdisplay: none;\n}\n\n.xblacklist_excuse_container > .post_tags {\n\tpadding-bottom: 1rem;\n}\n\n.xkit--react .xblacklist_blacklisted_post {\n opacity: 1;\n padding: 0 !important;\n}\n\n.xkit--react .xblacklist_excuse {\n padding: var(--post-header-vertical-padding) var(--post-padding);\n margin: 0;\n}\n\n.xkit--react .xblacklist_excuse_container {\n background-color: rgb(var(--white));\n color: rgb(var(--black));\n}\n\n.xkit--react .xkit-blacklist-post-type {\n display: none;\n}\n\n.xkit--react .xblacklist_open_post {\n height: 40px;\n line-height: 42px;\n margin: 0;\n top: var(--post-header-vertical-padding) !important;\n right: var(--post-padding) !important;\n}\n\n.xkit--react .xblacklist_open_post {\n\tcolor: rgba(var(--black), 0.8);\n\tbackground: rgba(var(--black), 0.05);\n\tborder-color: rgba(var(--black), 0.3);\n}\n\n.xkit--react .xblacklist_open_post:hover {\n\tcolor: rgb(var(--black));\n\tbackground: rgb(var(--white));\n\tborder-color: rgba(var(--black), 0.5);\n}\n\n.xkit--react .xblacklist_open_post:active {\n\tcolor: rgb(var(--black));\n\tbackground: rgba(var(--black), 0.25);\n\tborder-color: rgba(var(--black), 0.8);\n}\n","title":"Blacklist","description":"Clean your dash","developer":"new-xkit","version":"3.1.9","details":"This extension allows you to block posts based on the words you specify. If a post has the text you've written in the post itself or it's tags, it will be replaced by a warning, or won't be shown on your dashboard, depending on your settings.","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/bookmarker.json b/Extensions/dist/bookmarker.json new file mode 100644 index 000000000..ce3ff26e6 --- /dev/null +++ b/Extensions/dist/bookmarker.json @@ -0,0 +1 @@ +{"id":"bookmarker","script":"//* TITLE Bookmarker **//\n//* VERSION 2.3.9 **//\n//* DESCRIPTION Dashboard Time Machine **//\n//* DEVELOPER new-xkit **//\n//* DETAILS The Bookmarker extension allows you to bookmark posts and get back to them whenever you want to. Just click on the Bookmark icon on posts and the post will be added to your Bookmark List on your sidebar. **//\n//* FRAME false **//\n//* BETA false **//\n//* SLOW true **//\n\nXKit.extensions.bookmarker = new Object({\n\n\trunning: false,\n\tbookmarks: [],\n\tslow: true,\n\n\tpreferences: {\n\t\tsep0: {\n\t\t\ttext: \"Opening bookmarks\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\tnew_tab: {\n\t\t\ttext: \"Open my bookmarks in new tabs\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\tsep1: {\n\t\t\ttext: \"Displaying bookmarks\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\tdisplay_non_relative: {\n\t\t\ttext: \"Instead of relative time, use the following format:\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\tformat: {\n\t\t\ttext: \"Timestamp format (what is this?)\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"MMM Do, h:mm a\",\n\t\t\tvalue: \"MMM Do, h:mm a\"\n\t\t}\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (XKit.extensions.bookmarker.preferences.format.value === \"\") {\n\t\t\tXKit.extensions.bookmarker.preferences.format.value = \"MMM Do, h:mm a\";\n\t\t}\n\n\t\tif (XKit.interface.where().dashboard === true) {\n\t\t\tXKit.tools.init_css(\"bookmarker\");\n\t\t\tXKit.extensions.bookmarker.load_bookmarks();\n\t\t\tXKit.extensions.bookmarker.init();\n\t\t\tXKit.post_listener.add(\"bookmarker\", XKit.extensions.bookmarker.do);\n\t\t\tXKit.extensions.bookmarker.do();\n\t\t\tXKit.extensions.bookmarker.check_bookmark();\n\n\t\t\t// Check for new body layout.\n\t\t\tif ($(\"body\").hasClass(\"posts_v2\") === true) {\n\t\t\t\tXKit.tools.add_css(\"#xkit-bookmarker-not-found-inner { padding: 20px 20px 20px 60px; margin-bottom: 10px; }\", \"bookmarker_new_layout\");\n\t\t\t}\n\t\t}\n\t},\n\n\tcheck_bookmark: function() {\n\n\t\tvar str = document.location.href.toLowerCase().split(\"/\");\n\t\tif (str.length < 5) { return; }\n\t\tif (str[3] !== \"dashboard\") { return; }\n\t\tif (!str[5]) { return; }\n\n\t\tvar post_id = BigInt(str[5]) - BigInt(1);\n\n\t\tif ($(\"#xkit_bookmark_\" + post_id).length <= 0) { return; }\n\n\t\t$(\"#xkit_bookmark_\" + post_id).removeClass(\"no_push\");\n\t\t$(\"#xkit_bookmark_\" + post_id).addClass(\"selected\");\n\n\t\tif ($(\"#post_\" + post_id).length <= 0) {\n\n\t\t\t$(\"#posts\").prepend(\"
  • Bookmarked post not found.\" +\n\t\t\t\"
    This might be because the post has been deleted, or because of a temporary Tumblr error. Posts made around the same time as the bookmarked post is listed below.
    Delete this bookmark
  • \");\n\n\t\t} else {\n\n\t\t\t$(\"#posts\").prepend(\"
  • You are viewing a bookmark.
    \" +\n\t\t\t\"If you are done with it, you can click the button below to remove it.
    Delete this bookmark
    Return to my dashboard
  • \");\n\n\t\t}\n\n\t\t$(\"#xkit-delete-current-bookmark\").click(function() {\n\n\t\t\tXKit.extensions.bookmarker.remove_bookmark(post_id);\n\t\t\t$(\"#xkit-bookmarker-not-found-msg\").slideUp('fast', function() {\n\t\t\t\t$(this).remove();\n\t\t\t});\n\t\t\t// remove_bookmark(str_sub, jQ(this), true);\n\n\t\t});\n\n\t},\n\n\tinit: function() {\n\n\t\tvar m_html = \"
  • You currently have no posts bookmarked.
  • \";\n\n\t\tfor (var m_obj in XKit.extensions.bookmarker.bookmarks) {\n\n\t\t\tvar current_bookmark = XKit.extensions.bookmarker.bookmarks[m_obj];\n\t\t\tm_html = m_html + XKit.extensions.bookmarker.create_bookmark_div(current_bookmark);\n\n\t\t}\n\n\t\tm_html = '
      ' + m_html + '
    ' +\n\t\t\t'';\n\n\t\tif (document.location.href.indexOf(\"?bookmark=true\") !== -1) {\n\t\t\t$(\"#right_column\").prepend(m_html);\n\t\t\t$(\"#xbookmarks\").css(\"margin-top\", \"0\");\n\t\t\t$(\"#xbookmarker_small_links\").css(\"margin-bottom\", \"18px\");\n\t\t} else {\n\t\t\t$(\".controls_section:eq(1)\").before(m_html);\n\t\t}\n\n\t\t$(\"#xbookmarks\").prepend(\"
  • BOOKMARKS
  • \");\n\t\t$(\"#xbookmarks\").slideDown('fast');\n\t\t$(\"#xbookmarker_small_links\").slideDown('fast');\n\t\t$(\".xbookmark_to_slidedown\").slideDown('fast');\n\n\t\tif ($(\".xbookmark\").length > 0) {\n\t\t\t$('#xkit_bookmark_no_bookmarks').hide();\n\t\t} else {\n\t\t\t$('#xkit_bookmark_no_bookmarks').show();\n\t\t}\n\n\t\t$(\"#xbookmarker_help\").click(function() {\n\n\t\t\tXKit.window.show(\"Bookmarker Help\", \"Bookmarker lists your bookmarks on the sidebar.

    To rename or delete a bookmark, you can click them while holding the ALT key on your keyboard.

    To go back to a bookmarked post, just click on the bookmark. If the post you've bookmarked is deleted, you'll get the posts made around that time.\", \"info\", \"
    OK
    \");\n\n\t\t\treturn false;\n\t\t});\n\n\t\t$(\"#xbookmarker_delete_all\").click(function() {\n\n\t\t\tXKit.window.show(\"Delete all bookmarks\", \"You sure about this?\", \"question\", \"
    OK
    Cancel
    \");\n\n\t\t\t$(\"#xkit-bookmarker-delete-all-ok\").click(function() {\n\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.extensions.bookmarker.remove_all_bookmarks();\n\n\t\t\t});\n\n\t\t\treturn false;\n\t\t});\n\n\t\t$(document).on(\"click\", \".xkit_bookmarker_button\", function(event) {\n\n\t\t\tvar post_id = $(this).attr('data-xkit-bookmarker-post-id');\n\t\t\tif ($(this).hasClass(\"on\") === true) {\n\t\t\t\t$(this).removeClass(\"on\");\n\t\t\t\tXKit.extensions.bookmarker.remove_bookmark(post_id);\n\n\t\t\t} else {\n\t\t\t\t$(this).addClass(\"on\");\n\t\t\t\tXKit.extensions.bookmarker.add_bookmark(post_id);\n\t\t\t}\n\n\t\t});\n\n\n\t\t$(document).on(\"click\", \".xbookmark\", function(event) {\n\n\t\t\tvar post_id = $(this).attr('data-xkit-bookmark-post-id');\n\n\t\t\tvar m_object = XKit.extensions.bookmarker.retrieve_bookmark_object(post_id);\n\n\t\t\tif (event.altKey) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\t// Ask for the caption.\n\t\t\t\tXKit.window.show(\"Rename/Delete bookmark\", \"What would you like to rename this to? \", \"question\", \"
    OK
    Delete this bookmark
    Cancel
    \");\n\n\t\t\t\t$(\"#xkit-bookmarker-delete-ok\").click(function() {\n\n\t\t\t\t\tXKit.window.close();\n\t\t\t\t\tXKit.extensions.bookmarker.remove_bookmark(post_id);\n\n\t\t\t\t});\n\n\t\t\t\t$(\"#xkit-bookmarker-rename-ok\").click(function() {\n\n\t\t\t\t\tvar m_value = $(\"#xkit-bookmark-caption\").val();\n\t\t\t\t\tm_value = m_value.replace(/<(?:.|\\n)*?>/gm, '');\n\n\t\t\t\t\tif (jQuery.trim(m_value) === \"\") {\n\t\t\t\t\t\t// Use date.\n\t\t\t\t\t\tm_object.caption = \"\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Use user entered thingy.\n\t\t\t\t\t\tm_object.caption = m_value;\n\t\t\t\t\t}\n\n\t\t\t\t\t$(\"#xkit_bookmark_\" + post_id).find(\".bookmark-caption\").html(m_object.caption);\n\n\t\t\t\t\tXKit.window.close();\n\t\t\t\t\tXKit.extensions.bookmarker.save_bookmarks();\n\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\t// Go to the post!\n\t\t\t\tconst dashboard_page = BigInt(post_id) + BigInt(1);\n\t\t\t\tif (XKit.extensions.bookmarker.preferences.new_tab.value === true) {\n\t\t\t\t\twindow.open(\"/dashboard/100/\" + dashboard_page + \"/?bookmark=true\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.location.href = \"/dashboard/100/\" + dashboard_page + \"/?bookmark=true\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t});\n\n\t},\n\n\tretrieve_bookmark_object: function(post_id) {\n\n\t\tfor (var i = 0; i < XKit.extensions.bookmarker.bookmarks.length; i++) {\n\t\t\tif (XKit.extensions.bookmarker.bookmarks[i].id === post_id) {\n\t\t\t\treturn XKit.extensions.bookmarker.bookmarks[i];\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcreate_bookmark_div: function(current_bookmark) {\n\t\t// defined in moment.js\n\t\t/* globals moment */\n\n\t\tvar nowdate = new Date();\n\t\tvar nowdatem = moment(nowdate);\n\n\t\tif (current_bookmark.id === \"\" || typeof current_bookmark.id === \"undefined\") {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tvar bookmark_caption = current_bookmark.caption;\n\t\tif (bookmark_caption === \"\" || typeof bookmark_caption === \"undefined\") {\n\n\t\t\tvar dt = moment(current_bookmark.date);\n\n\t\t\tif (XKit.extensions.bookmarker.preferences.display_non_relative.value === true) {\n\t\t\t\tbookmark_caption = dt.format(XKit.extensions.bookmarker.preferences.format.value);\n\t\t\t} else {\n\t\t\t\tbookmark_caption = dt.from(nowdatem);\n\t\t\t}\n\n\t\t}\n\n\t\treturn\t'
  • ' +\n\t\t\t\t'' + bookmark_caption + '' +\n\t\t\t'
  • ';\n\n\t},\n\n\tadd_bookmark: function(post_id) {\n\n\t\tXKit.extensions.bookmarker.load_bookmarks();\n\n\t\tif (XKit.extensions.bookmarker.retrieve_bookmark_object(post_id) !== false) {\n\t\t\t// Already bookmarked.\n\t\t\treturn;\n\t\t}\n\n\t\tvar ts = Math.round((new Date()).getTime() / 1000);\n\t\tvar current_bookmark_date = (ts * 1000) - 2000;\n\n\t\tvar m_obj = {};\n\t\tm_obj.id = post_id;\n\t\tm_obj.date = current_bookmark_date;\n\t\tm_obj.caption = \"\";\n\n\t\tXKit.extensions.bookmarker.bookmarks.push(m_obj);\n\t\tXKit.extensions.bookmarker.save_bookmarks();\n\n\t\tsetTimeout(function() {\n\t\t\t$(\"#xbookmarks\").append(XKit.extensions.bookmarker.create_bookmark_div(m_obj));\n\t\t\t$(\".xbookmark_to_slidedown\").slideDown('fast');\n\t\t}, 250);\n\n\t\t$(\"#xbookmarks\").slideDown('fast');\n\t\t$(\"#xbookmarker_small_links\").slideDown('fast');\n\t\t$('#xkit_bookmark_no_bookmarks').hide();\n\t},\n\n\tremove_all_bookmarks: function() {\n\n\t\tXKit.extensions.bookmarker.load_bookmarks();\n\n\t\twhile (XKit.extensions.bookmarker.bookmarks.length > 0) {\n\t\t\tXKit.extensions.bookmarker.remove_bookmark(XKit.extensions.bookmarker.bookmarks[0].id);\n\t\t}\n\n\t\tXKit.extensions.bookmarker.save_bookmarks();\n\n\t},\n\n\tremove_bookmark: function(post_id, mass_mode) {\n\n\t\t// Reload everything.\n\t\tXKit.extensions.bookmarker.load_bookmarks();\n\n\t\tvar m_index = -1;\n\n\t\tfor (var i = 0; i < XKit.extensions.bookmarker.bookmarks.length; i++) {\n\t\t\tif (XKit.extensions.bookmarker.bookmarks[i].id == post_id) {\n\t\t\t\tm_index = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (m_index === -1) {\n\t\t\t// Not found, don't bother trying to remove it.\n\t\t\treturn;\n\t\t}\n\n\n\t\tXKit.extensions.bookmarker.bookmarks.splice(m_index, 1);\n\n\t\tif (mass_mode === true) {\n\t\t\treturn;\n\t\t}\n\n\t\t$(\"#post_\" + post_id).find(\".xbookmarker_post_icon\").removeClass(\"on\");\n\n\t\tXKit.extensions.bookmarker.save_bookmarks();\n\n\t\t$(\"#xkit_bookmark_\" + post_id).slideUp('fast', function() {\n\n\t\t\t$(this).remove();\n\n\t\t\tif ($(\".xbookmark\").length <= 0) {\n\t\t\t\t$('#xkit_bookmark_no_bookmarks').show();\n\t\t\t} else {\n\t\t\t\t$('#xkit_bookmark_no_bookmarks').hide();\n\t\t\t}\n\t\t});\n\n\t},\n\n\tload_bookmarks: function() {\n\n\t\tvar m_bookmarks = XKit.storage.get(\"bookmarker\", \"my_bookmarks\", \"\");\n\t\tif (m_bookmarks === \"\") {\n\t\t\tm_bookmarks = XKit.storage.get(\"bookmarks\", \"my_bookmarks\", \"\");\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tXKit.extensions.bookmarker.bookmarks = JSON.parse(m_bookmarks);\n\t\t\t\tif (XKit.extensions.bookmarker.bookmarks.length === 0) {\n\t\t\t\t\tm_bookmarks = XKit.storage.get(\"bookmarks\", \"my_bookmarks\", \"\");\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tm_bookmarks = XKit.storage.get(\"bookmarks\", \"my_bookmarks\", \"\");\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tXKit.extensions.bookmarker.bookmarks = JSON.parse(m_bookmarks);\n\t\t} catch (e) {\n\t\t\tXKit.extensions.bookmarker.bookmarks = [];\n\t\t\tXKit.extensions.bookmarker.save_bookmarks();\n\t\t}\n\n\t},\n\n\tsave_bookmarks: function() {\n\n\t\tXKit.storage.set(\"bookmarks\", \"my_bookmarks\", JSON.stringify(XKit.extensions.bookmarker.bookmarks));\n\t\tXKit.storage.set(\"bookmarker\", \"my_bookmarks\", JSON.stringify(XKit.extensions.bookmarker.bookmarks));\n\n\t},\n\n\tdo: function() {\n\n\t\t// Create a temp array to look up so to not waste CPU.\n\t\tvar m_array = [];\n\t\tfor (var i = 0; i < XKit.extensions.bookmarker.bookmarks.length; i++) {\n\t\t\tm_array.push(XKit.extensions.bookmarker.bookmarks[i].id);\n\t\t}\n\n\t\t$(\".posts .post\").not(\".note\").not(\".xbookmarker_done\").each(function() {\n\n\t\t\tvar post_id = $(this).attr('data-post-id');\n\t\t\t$(this).addClass(\"xbookmarker_done\");\n\n\t\t\tvar m_class = \"xkit_bookmarker_button\";\n\t\t\tif (m_array.indexOf(post_id) !== -1) {\n\t\t\t\tm_class = \"xkit_bookmarker_button on\";\n\t\t\t}\n\n\t\t\tvar m_html = \"\";\n\t\t\tif ($(this).find(\".post_controls_inner\").length > 0) {\n\t\t\t\tm_html = \"\";\n\t\t\t\t$(this).find(\".post_controls_inner\").prepend(m_html);\n\t\t\t} else {\n\t\t\t\t$(this).find(\".post_controls\").prepend(m_html);\n\t\t\t}\n\n\t\t});\n\n\t},\n\n\tcpanel: function() {\n\n\t\t$(\"#xkit-bookmarks-format-help\").click(XKit.tools.show_timestamps_help);\n\n\t},\n\n\tdestroy: function() {\n\t\t$(\"#xbookmarks\").remove();\n\t\t$(\"#xbookmarker_small_links\").remove();\n\t\t$(\".xbookmarker_post_icon\").remove();\n\t\t$(\".xbookmarker_done\").removeClass(\"xbookmarker_done\");\n\t\tXKit.tools.remove_css(\"bookmarker\");\n\t\tXKit.tools.remove_css(\"bookmarker_new_layout\");\n\t\tXKit.post_listener.remove(\"bookmarker\");\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","css":".xkit_bookmarker_button.xkit_new_dashboard:after,\n.xkit_bookmarker_button {\n\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0U0NTdGNkYwMjA1MTFFM0IwRTREQUE2OUI0ODg5QzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0U0NTdGNzAwMjA1MTFFM0IwRTREQUE2OUI0ODg5QzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDRTQ1N0Y2RDAyMDUxMUUzQjBFNERBQTY5QjQ4ODlDMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDRTQ1N0Y2RTAyMDUxMUUzQjBFNERBQTY5QjQ4ODlDMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvVUlZwAAAB1SURBVHjaYvz//z8DOmBkZMQUxAKAehkx9I4aOGrgqIGjBmIzECSIgUHCaPg8EE8F4u/I4lj1EmHgWSBWgdqfDsSvKDFwDRCronnKG4jfkmPgMiDmxxF81kB8gxQDu4GYl0CcaGHTiyuWWYHUbyJiGUMMIMAAPAwXfOh20kkAAAAASUVORK5CYII=') !important;\n\tbackground-repeat: no-repeat !important;\n\tbackground-size: auto auto !important;\n\twidth: 20px !important; height: 20px;\n\tbackground-size: auto auto !important;\n\tbackground-position: 50% 50%;\n}\n\n.fake_post {\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tbox-sizing: border-box;\n}\n\n.xkit_bookmarker_button.xkit_new_dashboard:after {\n\tmargin-top: -9px;\n}\n\n.xkit_bookmarker_button.on.xkit_new_dashboard:after,\n.xkit_bookmarker_button.on {\n\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzFBRDk0MjA2QjFDMTFFMjg1RjZFNjk2MUQ4OUJGMkUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzFBRDk0MjE2QjFDMTFFMjg1RjZFNjk2MUQ4OUJGMkUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozMUFEOTQxRTZCMUMxMUUyODVGNkU2OTYxRDg5QkYyRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozMUFEOTQxRjZCMUMxMUUyODVGNkU2OTYxRDg5QkYyRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjZmHoMAAACCSURBVHjaYvz//z8DOrigp4IpiAUYXLrDiC7GxEBlMGrgqIGjBo4sAy8A8TQg/kENA88BcSiwqMoG0gVA/JoSA9cCcQTQsDvQ8m8mkEoE4nfkGLgciJOBhtxGK1S3Aik/IL6JVReoxEbH53WVu4GYF5sckhotbOK4FLPiMwwfBggwAEBVjh/e0MDHAAAAAElFTkSuQmCC') !important;\n\topacity: 1;\n}\n\n.xkit_bookmarker_button.xkit_new_dashboard {\n\tbackground: none !important;\n}\n\n#xbookmarks {\n\tdisplay: none;\n}\n\n#xbookmarker_small_links {\n\tdisplay: none;\n}\n\n#xkit-bookmarker-not-found-msg {\n\tfont-size: 13px;\n\tbackground: white no-repeat 20px 20px url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAYCAYAAAAGXva8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTY0M0JDNzNCQjI1MTFFMjlCOTNGRkUzMUI2Njc5QjciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTY0M0JDNzRCQjI1MTFFMjlCOTNGRkUzMUI2Njc5QjciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1NjQzQkM3MUJCMjUxMUUyOUI5M0ZGRTMxQjY2NzlCNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NjQzQkM3MkJCMjUxMUUyOUI5M0ZGRTMxQjY2NzlCNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pvu6eCgAAAEmSURBVHjavJaNEYMgDIW5LqAbOIIj4AaO4AiOYDdxBEZgBEdgBEew4Q57NIY04E/uclcC9RPyeK3atk3lJsQC6T8sRd8vAI4BuOd4KxSiglwR1I+rnOe8VF68IWtUq0NdHhm7bNEOHRq3lx8vhEXABoHtpVCIAe1q4OqnoYR4LHMCIlFJoBPXO6LX0ylo6Fv8wDnUv7UwntG65gyUPDoCyrZADIXoU86DoQmn6rOg4c3j6+DQ/AEa6g5dqyoHisWjJYbv10lElRJP3B9DrJljYaE5g3TQSKDmnxIjUxgFijcsVHo8BXdbc1AncZeUkBgXcySUeLuB2QkLTfjy9APNvtwCKGsuCRvTJb0koDpho4eJu1P7vyudeja6/adpfWiXntN+BBgAbtAnhIisYMQAAAAASUVORK5CYII=');\n\n}\n\n#xkit-bookmarker-not-found-msg.no-error-on-xbookmark {\n\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAYCAYAAAAGXva8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUE5RjMzNDRCQjMwMTFFMjlCOTNGRkUzMUI2Njc5QjciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUE5RjMzNDVCQjMwMTFFMjlCOTNGRkUzMUI2Njc5QjciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1NjQzQkM3NUJCMjUxMUUyOUI5M0ZGRTMxQjY2NzlCNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NjQzQkM3NkJCMjUxMUUyOUI5M0ZGRTMxQjY2NzlCNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PszXewQAAACFSURBVHjaYvz//z8DLsDIyIhbkjBQAJr9EKu5tLIUaC4jTnNHLR21dNTSUUtHLR21dHhZykRBJb2BgQIX4cQgaRw4Hiofj0sNXnNJtPQ9zEIkNfpQcZpYCjJYH4c6DIupYel9XBYiqeUH4vPUshRkED8+ddgspsTS9cRaiGZxPz41AAEGACWHCZHYpYBjAAAAAElFTkSuQmCC') !important;\n}\n\n#xkit-bookmarker-not-found-inner {\n\tpadding-left: 50px;\n}\n\n#xkit-delete-current-bookmark {\n\tmargin-top: 15px;\n}\n\n.xbookmark a::after {\n\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzFBRDk0MUM2QjFDMTFFMjg1RjZFNjk2MUQ4OUJGMkUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzFBRDk0MUQ2QjFDMTFFMjg1RjZFNjk2MUQ4OUJGMkUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxQzcxMUJGRjZCMUIxMUUyODVGNkU2OTYxRDg5QkYyRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxQzcxMUMwMDZCMUIxMUUyODVGNkU2OTYxRDg5QkYyRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrxUh9EAAACFSURBVHjaYvz//z8DOuifsRRTEAsozIhmRBdjYqAyGDVw1MBRA0eWgReAeBoQ/6CGgeeAOBRYVGUD6QIgfk2JgWuBOAJo2B1o+TcTSCUC8TtyDFwOxMlAQ26jFapbgZQfEN8kxcAeIE4Hav6Io6Q+CqSCsOoEVQHouG/6ElZs4sRggAADAIbSWfB1IkAEAAAAAElFTkSuQmCC') !important;\n\tbackground-repeat: no-repeat !important;\n\tbackground-size: auto auto !important;\n\ttop: 5px !important; left: 10px !important;\n\tbackground-position: 0px 50% !important;\n\tfont-size: 0px !important;\n\tcontent: \"B\";\n}\n\n.xkit-bookmark-remover { font-size: 12px; margin-right: -3px; padding-left: 7px; padding-right: 7px; }\n.xkit-bookmark-remover:hover { color: white !important; opacity: 1 !important; }\n.xbookmark_to_slidedown { display: none; }\n\n#xkit_bookmark_no_bookmarks {\n\tcolor: rgba(255, 255, 255, 0.5) !important;\n\tpadding-left: 10px;\n\theight: 28px;\n}\n","title":"Bookmarker","description":"Dashboard Time Machine","developer":"new-xkit","version":"2.3.9","details":"The Bookmarker extension allows you to bookmark posts and get back to them whenever you want to. Just click on the Bookmark icon on posts and the post will be added to your Bookmark List on your sidebar.","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/classic_header.json b/Extensions/dist/classic_header.json new file mode 100644 index 000000000..8fb551db2 --- /dev/null +++ b/Extensions/dist/classic_header.json @@ -0,0 +1 @@ +{"id":"classic_header","script":"//* TITLE Header Options **//\n//* VERSION 3.0.0 **//\n//* DESCRIPTION Customize the header. **//\n//* DEVELOPER new-xkit **//\n//* DETAILS This extension adds your blogs on the top of the page, so you can easily switch between blogs. The blog limit on the header is five, but you can limit this to three blogs and turn off the blog title bubble from the settings. **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.classic_header = new Object({\n\n\trunning: false,\n\tslow: true,\n\n\tpreferences: {\n\t\t\"sep0\": {\n\t\t\ttext: \"Header Appearance\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"fixed_width\": {\n\t\t\ttext: \"Reduce the max width of the header to match the dashboard\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"fixed_position\": {\n\t\t\ttext: \"Fixed position header (un-stickify)\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"fix_color\": {\n\t\t\ttext: \"Make the tab notification bubbles red again\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"fix_logo\": {\n\t\t\ttext: \"Display the whole \\\"tumblr\\\" logo\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"hide_compose\": {\n\t\t\ttext: \"Hide the compose button\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"mobile_sticky\": {\n\t\t\ttext: \"Scrolling header (like desktop)\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tmobile_only: true\n\t\t},\n\t\t\"mobile_logout\": {\n\t\t\ttext: \"Add logout button to menu\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tmobile_only: true\n\t\t},\n\t\t\"sep1\": {\n\t\t\ttext: \"Blogs on the header\",\n\t\t\ttype: \"separator\",\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"show_avatars\": {\n\t\t\ttext: \"Show my blogs on the header\",\n\t\t\tdefault: true,\n\t\t\tvalue: true,\n\t\t\tdesktop_only: true\n\t\t},\n\t\tappearance: {\n\t\t\ttext: \"Avatar Appearance\",\n\t\t\tdefault: \"circle\",\n\t\t\tvalue: \"circle\",\n\t\t\ttype: \"combo\",\n\t\t\tvalues: [\n\t\t\t\t\"Circle (default)\", \"circle\",\n\t\t\t\t\"Rounded Box\", \"box\",\n\t\t\t\t\"Square\", \"square\"\n\t\t\t],\n\t\t\tdesktop_only: true\n\t\t},\n\t\tmaximum: {\n\t\t\ttext: \"Maximum blogs to show\",\n\t\t\tdefault: \"b3\",\n\t\t\tvalue: \"b3\",\n\t\t\ttype: \"combo\",\n\t\t\tvalues: [\n\t\t\t\t\"1 Blog\", \"b1\",\n\t\t\t\t\"2 Blogs\", \"b2\",\n\t\t\t\t\"3 Blogs\", \"b3\",\n\t\t\t\t\"4 Blogs\", \"b4\",\n\t\t\t\t\"5 Blogs\", \"b5\"\n\t\t\t],\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"show_bubble\": {\n\t\t\ttext: \"Show blog title bubble on hover\",\n\t\t\tdefault: true,\n\t\t\tvalue: true,\n\t\t\tdesktop_only: true\n\t\t}\n\t},\n\n\trun: async function() {\n\t\tthis.running = true;\n\n\t\tawait XKit.css_map.getCssMap();\n\n\t\tXKit.tools.init_css(\"classic_header\");\n\t\t$(\"#xoldeheader\").remove();\n\n\t\tif (XKit.extensions.classic_header.preferences.show_avatars.value) {\n\t\t\tXKit.extensions.classic_header.show_blogs();\n\t\t}\n\t\tif (XKit.extensions.classic_header.preferences.fixed_width.value === true) {\n\t\t\tlet containerWidth = $(\".l-container:not(.l-container--flex)\").css(\"width\");\n\t\t\tlet contentSidePad = $(\".l-content\").css(\"padding-left\");\n\t\t\tlet logoLeftPad = $(\".png-logo\").css(\"padding-left\");\n\n\t\t\tif (containerWidth && contentSidePad && logoLeftPad) {\n\n\t\t\t\tXKit.tools.add_css(`\n\t\t\t\t\t.l-header {\n\t\t\t\t\t\tmax-width: ${containerWidth} !important;\n\t\t\t\t\t\tpadding: 0 ${contentSidePad} !important;\n\t\t\t\t\t}\n\t\t\t\t\t.logo {\n\t\t\t\t\t\tmargin-left: -${logoLeftPad};\n\t\t\t\t\t}`,\n\t\t\t\t\"classic_header\");\n\n\t\t\t\tXKit.installed.when_running(\"tweaks\", function() {\n\t\t\t\t\tlet mainLeftMargin = $(\"#left_column\").css(\"margin-left\");\n\n\t\t\t\t\tif (mainLeftMargin && mainLeftMargin !== \"0px\") {\n\t\t\t\t\t\tXKit.tools.add_css(`\n\t\t\t\t\t\t\t.l-header {\n\t\t\t\t\t\t\t\tmax-width: calc(${containerWidth} - ${mainLeftMargin}) !important;\n\t\t\t\t\t\t\t\ttransform: translateX(calc(${mainLeftMargin} / 2));\n\t\t\t\t\t\t\t}`,\n\t\t\t\t\t\t\"classic_header\");\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (XKit.extensions.classic_header.preferences.fix_logo.value) {\n\t\t\tXKit.tools.add_css(`\n\t\t\t\t.logo .logo-anchor .png-logo {\n\t\t\t\t\tbackground:\n\t\t\t\t\t\turl('https://static.tumblr.com/u5hbev5/Jp3odtljk/tumblr.png')\n\t\t\t\t\t\t50%/145px\n\t\t\t\t\t\tno-repeat;\n\t\t\t\t\twidth: 145px;\n\t\t\t\t\topacity: 1 !important;\n\t\t\t\t}\n\t\t\t\t.logo .logo-anchor .preload-container {\n\t\t\t\t\topacity: 0 !important;\n\t\t\t\t}`,\n\t\t\t\"classic_header\");\n\t\t}\n\n\t\tif (XKit.extensions.classic_header.preferences.hide_compose.value) {\n\t\t\tXKit.tools.add_css(\".compose-button { display: none; }\", \"classic_header\");\n\t\t}\n\n\t\tif (XKit.extensions.classic_header.preferences.fixed_position.value) {\n\t\t\tXKit.tools.add_function(function() {\n\t\t\t\tvar Tumblr = window.Tumblr || window.top.Tumblr;\n\t\t\t\tTumblr.KeyCommands.scroll_offset = 14;\n\t\t\t}, true);\n\t\t\tXKit.tools.add_css(\" .l-header-container { position: absolute !important; box-shadow: none; }\" +\n\t\t\t\t\t\t\t\t\".post_avatar.post-avatar--sticky .post_avatar_wrapper { top: 14px; }\" +\n\t\t\t\t\t\t\t\t\"#xwidgets-drawer, #xwidgets-opener { transform: translate(0,-52px); z-index: 91 !important; }\",\n\t\t\t\t\t\t\t\t\"classic_header\");\n\t\t}\n\n\t\tif (XKit.extensions.classic_header.preferences.fix_color.value) {\n\t\t\tXKit.tools.add_css(\" .tab_notice_value { color: #ffffff !important; }\" +\n\t\t\t\t\t\t\t\t\".selected .tab_notice, .tab_notice { background: #bc3333 !important; }\",\n\t\t\t\t\t\t\t\t\"classic_header\");\n\t\t\t$(\".tab.iconic.selected\").addClass(\"was-selected\").removeClass(\"selected\");\n\t\t}\n\n\t\tif (XKit.extensions.classic_header.preferences.mobile_sticky.value) {\n\n\t\t\t// The nav menu is written terribly. Thanks @staff.\n\t\t\tXKit.tools.add_css(\" #container { position: absolute; top:44px; max-width: 800px; width: 100%; } .mobile-nav { position: fixed; top: 0; z-index: 99; left: 0; width: calc(100% + 1px); } .nav-menu .drawer, .nav-menu.active .sneeze-guard { height: calc(100vh - 44px); top:44px; }\", \"classic_header_mobile_sticky\");\n\n\t\t\t$('#footer').insertAfter($('#load_more_posts'));\n\n\t\t\tif ($('.mh_post_buttons').length > 0) {\n\t\t\t\t$('.mh_post_buttons').insertBefore($('#content'));\n\t\t\t}\n\n\t\t}\n\n\t\tif (XKit.extensions.classic_header.preferences.mobile_logout.value) {\n\t\t\tvar m_html = 'Log Out';\n\t\t\t$('.nav-site-sections').append(m_html);\n\t\t}\n\n\t},\n\n\tshow_blogs: function() {\n\n\t\tif (document.location.href.indexOf(\"/following\") !== -1) {\n\t\t\treturn;\n\t\t}\n\t\tvar m_html = \"\";\n\t\tvar m_counter = 0;\n\t\tvar max_count = 6;\n\n\t\tif (XKit.extensions.classic_header.preferences.maximum.value !== \"\") {\n\t\t\tmax_count = parseInt(XKit.extensions.classic_header.preferences.maximum.value.substring(1)) + 1;\n\t\t}\n\n\t\tif (XKit.extensions.classic_header.preferences.appearance.value === \"box\") {\n\t\t\tXKit.tools.add_css(\".xoldeheader-item { border-radius: 7px !important; }\", \"classic_header\");\n\t\t} else if (XKit.extensions.classic_header.preferences.appearance.value === \"square\") {\n\t\t\tXKit.tools.add_css(\".xoldeheader-item { border-radius: 0px !important; }\", \"classic_header\");\n\t\t}\n\n\t\ttry {\n\t\t\tvar tab_blogs = $(\".tab_blog\");\n\t\t\tif (tab_blogs.length > 0) {\n\t\t\t\ttab_blogs.each(function(index) {\n\t\t\t\t\tvar tab_blog = $(this);\n\t\t\t\t\tif (tab_blog.hasClass('tab_dashboard')) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tm_counter ++;\n\n\t\t\t\t\tif (m_counter >= max_count) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar raw_id = tab_blog.attr('id');\n\t\t\t\t\t// Id has the form tab_blog_{blog-name}\n\t\t\t\t\tvar blog_id = raw_id.substring('tab_blog_'.length, raw_id.length);\n\t\t\t\t\tvar blog_icon = tab_blog.find('.blog_icon').css('background-image');\n\t\t\t\t\tif (!blog_icon || blog_icon === \"none\") {\n\t\t\t\t\t\tblog_icon = \"no-repeat url(\\\"http://assets.tumblr.com/images/lock_avatar.png\\\") 50% / 8px\";\n\t\t\t\t\t}\n\n\t\t\t\t\tvar blog_name = tab_blog.find('.blog_name').text();\n\t\t\t\t\tvar is_private = tab_blog.find('.blog_icon').hasClass('private');\n\n\t\t\t\t\tif (is_private) {\n\t\t\t\t\t\tblog_name += ' [private]';\n\t\t\t\t\t}\n\n\t\t\t\t\tm_html = m_html + '
    ' +\n\t\t\t\t\t\t' ' +\n\t\t\t\t\t\t'
    ';\n\t\t\t\t});\n\t\t\t\tXKit.storage.set(\"classic_header\", \"header_html\", m_html);\n\t\t\t} else {\n\t\t\t\tif (XKit.storage.get(\"classic_header\", \"header_html\", \"\") === \"\") {\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\tm_html = XKit.storage.get(\"classic_header\", \"header_html\", \"\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet target;\n\t\t\tif (XKit.page.react) {\n\t\t\t\ttarget = $(XKit.css_map.keyToCss('menuRight'));\n\t\t\t} else {\n\t\t\t\ttarget = $('#user_tools');\n\t\t\t}\n\t\t\ttarget.prepend('
    ' + m_html + '
    ');\n\n\t\t\tif (XKit.extensions.classic_header.preferences.show_bubble.value === true) {\n\t\t\t\t$(\".xoldeheader-item\").tipTip({maxWidth: \"auto\", delay: 10, edgeOffset: 5 });\n\t\t\t}\n\n\t\t\tif (document.location.href.indexOf('/blog/') !== -1) {\n\n\t\t\t\tvar user_url = document.location.href.substring(document.location.href.indexOf('/blog/') + 6);\n\t\t\t\tuser_url = user_url.replace(\"#\", \"\");\n\t\t\t\tif (user_url.indexOf(\"/\") !== -1) {\n\t\t\t\t\tuser_url = user_url.substring(0, user_url.indexOf(\"/\"));\n\t\t\t\t}\n\n\t\t\t\t$(\"#xoldeheader-item-\" + user_url).addClass(\"selected\");\n\t\t\t\t$(\"#xoldeheader-item-\" + user_url).parent().addClass(\"selected\");\n\t\t\t\t$(\"#home_button\").removeClass(\"selected\");\n\n\t\t\t}\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e.message);\n\t\t}\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.tools.add_function(function() {\n\t\t\tvar Tumblr = window.Tumblr || window.top.Tumblr;\n\t\t\tTumblr.KeyCommands.scroll_offset = 69;\n\t\t}, true);\n\t\tXKit.tools.remove_css(\"classic_header\");\n\t\tXKit.tools.remove_css(\"classic_header_mobile_sticky\");\n\t\t$(\".nav-item-goodbye\").remove();\n\t\t$(\"#xoldeheader\").remove();\n\t\t$(\".tab.iconic.was-selected\").addClass(\"selected\").removeClass(\"was-selected\");\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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","css":"#xoldeheader {\n\tdisplay: inline-block;\n}\n\n.xoldeheader-item-container {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 9px;\n\tmargin-left: 9px;\n}\n\n.xoldeheader-item-container.selected .selection_nipple {\n\tdisplay: block; bottom: 0;\n}\n\n.xoldeheader-item {\n\tdisplay: inline-block; width: 26px; height: 26px; margin-top: 0px; margin-left: 0px;\n\tmargin-right: 0px; text-decoration: none; background-size: 26px 26px !important; border-radius: 40px;\n\topacity: 0.45;\n}\n\n.xoldeheader-item:hover {\n\topacity: 0.75;\n}\n\n.xoldeheader-item.selected {\n\topacity: 1 !important; box-shadow: 0px 1px 3px rgba(0,0,0,0.42); margin-bottom: 6px;\n}\n","title":"Header Options","description":"Customize the header.","developer":"new-xkit","version":"3.0.0","details":"This extension adds your blogs on the top of the page, so you can easily switch between blogs. The blog limit on the header is five, but you can limit this to three blogs and turn off the blog title bubble from the settings.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/classic_tags.json b/Extensions/dist/classic_tags.json new file mode 100644 index 000000000..b8b86b14d --- /dev/null +++ b/Extensions/dist/classic_tags.json @@ -0,0 +1 @@ +{"id":"classic_tags","script":"//* TITLE Tag Tracking+ **//\n//* VERSION 1.6.12 **//\n//* DESCRIPTION Shows your tracked tags on your sidebar **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.classic_tags = new Object({\n\n\trunning: false,\n\tslow: true,\n\tapiKey: XKit.api_key,\n\tmax_posts_per_tag: 10,\n\ttagcounts: {},\n\tcount_update_handle: null,\n\n\tpreferences: {\n\t\t\"sep-1\": {\n\t\t\ttext: \"Tag Search\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"show_new_notification\": {\n\t\t\ttext: \"Show a [new] indicator in the tag search bar\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"sep-2\": {\n\t\t\ttext: \"Tags in Sidebar\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"show_tags_on_sidebar\": {\n\t\t\ttext: \"Show Tags on sidebar\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"only_new_tags\": {\n\t\t\ttext: \"Only show tags with new posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"prepend_sidebar\": {\n\t\t text: \"Put tags at top of sidebar\",\n\t\t default: false,\n\t\t value: false\n\t\t},\n\t\t\"alphabetical_tags\": {\n\t\t\ttext: \"Sort tags alphabetically\",\n\t\t default: false,\n\t\t value: false\n\t\t},\n\t\t\"sep-3\": {\n\t\t\ttext: \"Settings\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"open_in_new_tab\": {\n\t\t\ttext: \"Open the tag results in a new window\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"turn_off_warning\": {\n\t\t\ttext: \"Turn off 'Too Many Tracked Tags' warning\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\ttypeahead_dropdown: null,\n\ttag_text: null,\n\ttags: [],\n\tplaceholder: null,\n\tsearch_input: null,\n\n\tobserver: new MutationObserver(function(mutations) {\n\t\tconst {classic_tags} = XKit.extensions;\n\t\tconst new_tab = classic_tags.preferences.open_in_new_tab.value;\n\n\t\tmutations.forEach(({addedNodes})=> {\n\t\t\tif (!addedNodes) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taddedNodes.forEach(addedNode => {\n\t\t\t\tconst container = $(addedNode).filter(classic_tags.typeahead_dropdown);\n\n\t\t\t\tif (container.length === 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst $tags = container.find(\"a\");\n\n\t\t\t\t$tags.each(function() {\n\t\t\t\t\tconst $tag = $(this);\n\n\t\t\t\t\t$tag.attr(\"target\", new_tab ? \"_blank\" : \"\");\n\n\t\t\t\t\tconst $name = $tag.find(classic_tags.tag_text);\n\t\t\t\t\tconst count = classic_tags.tagcounts[$name.text()];\n\t\t\t\t\tif (count) {\n\t\t\t\t\t\t$name.text(`${$name.text()} (${count})`);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}),\n\n\tget_post_timestamp: function(blog_name, post_id) {\n\t\tvar self = this;\n\t\tvar api_url = \"https://api.tumblr.com/v2/blog/\" + blog_name + \"/posts\" + \"?api_key=\" + self.apiKey + \"&id=\" + post_id;\n\t\tvar promise = $.Deferred();\n\n\t\tfunction fail() {\n\t\t\tconsole.log(\"XKit TagTracker+ Error: Unable to fetch post timestamp for \" + post_id);\n\t\t\tpromise.reject();\n\t\t}\n\n\t\ttry {\n\t\t\tGM_xmlhttpRequest({\n\t\t\t\tmethod: \"GET\",\n\t\t\t\turl: api_url,\n\t\t\t\tonerror: fail,\n\t\t\t\tonload: function(response) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar data = JSON.parse(response.responseText);\n\t\t\t\t\t\tvar post = data.response.posts[0];\n\t\t\t\t\t\tpromise.resolve(post.timestamp);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tfail();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tfail();\n\t\t}\n\n\t\treturn promise;\n\t},\n\n\tget_unread_post_count_for_tag: function(tag_name) {\n\t\tvar self = this;\n\t\tvar api_url = \"https://api.tumblr.com/v2/tagged?limit=\" + self.max_posts_per_tag + \"&tag=\" + tag_name + \"&api_key=\" + self.apiKey;\n\t\tvar promise = $.Deferred();\n\n\t\tfunction fail() {\n\t\t\tconsole.log(\"XKit TagTracker+ Error: Unable to fetch unread tag counts for \" + tag_name);\n\t\t\tpromise.reject();\n\t\t}\n\n\t\ttry {\n\t\t\tGM_xmlhttpRequest({\n\t\t\t\tmethod: \"GET\",\n\t\t\t\turl: api_url,\n\t\t\t\tonerror: fail,\n\t\t\t\tonload: function(response) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar data = JSON.parse(response.responseText);\n\t\t\t\t\t\tvar newest_post_seen = XKit.storage.get(\"classic_tags\", \"lastseen#\" + tag_name);\n\t\t\t\t\t\tif (!newest_post_seen) {\n\t\t\t\t\t\t\tpromise.resolve(data.response.length);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar newer_posts_count = data.response.map(function(post) {\n\t\t\t\t\t\t\treturn post.timestamp;\n\t\t\t\t\t\t}).filter(function(timestamp) {\n\t\t\t\t\t\t\treturn timestamp > newest_post_seen;\n\t\t\t\t\t\t}).length;\n\n\t\t\t\t\t\tpromise.resolve(newer_posts_count);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tfail();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tfail();\n\t\t}\n\n\t\treturn promise.then(function(count) {\n\t\t\tif (count === self.max_posts_per_tag) { count += \"+\"; }\n\t\t\tself.tagcounts[tag_name] = count;\n\t\t\treturn count;\n\t\t});\n\t},\n\n\tupdate_tag_timestamp: async function() {\n\t\ttry {\n\t\t\tconst current_tag = decodeURIComponent(location.pathname.split('/')[2].replace(/\\+/g, ' '));\n\t\t\tconst newest_post = $(\"[data-id]\").first();\n\n\t\t\tif (newest_post != null) {\n\t\t\t\tconst post = await XKit.interface.react.post(newest_post);\n\n\t\t\t\treturn this.get_post_timestamp(post.owner, post.id).then(function(timestamp) {\n\t\t\t\t\tXKit.storage.set(\"classic_tags\", \"lastseen#\" + current_tag, timestamp);\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.log(\"XKit TagTracker+ Error: Couldn't find newest post timestamp on /tagged\");\n\t\t\treturn $.Deferred().resolve();\n\t\t}\n\t},\n\n\tupdate_tag_counts: function(next_update) {\n\t\tvar self = this;\n\t\tvar new_post_count_promises = [];\n\n\t\tfunction fetch_count(tag_name) {\n\t\t\tvar promise = self.get_unread_post_count_for_tag(tag_name);\n\t\t\tnew_post_count_promises.push(promise);\n\t\t\treturn promise;\n\t\t}\n\n\t\tif (self.preferences.show_tags_on_sidebar.value) {\n\t\t\tvar list = $(\"#xtags\");\n\t\t\tvar list_hidden = list.hasClass(\"hidden\");\n\n\t\t\t$(\".xtag\").each(function() {\n\t\t\t\tvar li = $(this);\n\t\t\t\tvar anchor = li.find(\".result_link\");\n\t\t\t\tvar tag_name = anchor.attr(\"data-tag-result\");\n\n\t\t\t\tif (parseInt(self.tagcounts[tag_name], 10) === self.max_posts_per_tag) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tfetch_count(tag_name).then(function(count) {\n\t\t\t\t\tif (!count) { return; }\n\n\t\t\t\t\tif (list_hidden) {\n\t\t\t\t\t\tlist.removeClass(\"hidden\");\n\t\t\t\t\t\tlist_hidden = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tli.removeClass(\"hidden\");\n\t\t\t\t\tvar existing_count = anchor.find(\".count\");\n\t\t\t\t\tif (existing_count.length) {\n\t\t\t\t\t\texisting_count.text(count);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tanchor.find(\".result_title\").after(`${count}`);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tself.tags.tags.forEach(tag => {\n\t\t\t\tvar count = self.tagcounts[tag.name];\n\n\t\t\t\tif (!count || parseInt(count, 10) < self.max_posts_per_tag) {\n\t\t\t\t\tfetch_count(tag.name);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (self.preferences.show_new_notification.value) {\n\t\t\t$.when.apply($, new_post_count_promises).then(function() {\n\t\t\t\tvar any_new_posts = Array.prototype.some.call(arguments, function(count) { return !!count; });\n\t\t\t\tself.search_input.attr(\"placeholder\", `${self.placeholder}${(any_new_posts ? \" [New]\" : \"\")}`);\n\t\t\t});\n\t\t}\n\n\t\tself.count_update_handle = setTimeout(self.update_tag_counts.bind(self, next_update * 1.5), next_update);\n\t},\n\n\trun: function() {\n\t\tXKit.tools.init_css(\"classic_tags\");\n\n\t\tvar where = XKit.interface.where();\n\n\t\tif (!where.dashboard && !where.tagged) {\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.css_map.getCssMap().then(() => {\n\t\t\tthis.typeahead_dropdown = XKit.css_map.keyToCss(\"typeaheadDropdown\");\n\t\t\tthis.tag_text = XKit.css_map.keyToCss(\"tagText\");\n\n\t\t\tif (where.tagged) {\n\t\t\t\tthis.update_tag_timestamp().then(() => this.show());\n\t\t\t} else {\n\t\t\t\tthis.show();\n\t\t\t}\n\t\t}).catch(e => console.error(\"Can't run Classic Tags:\" + e.message));\n\t},\n\n\tshow: async function() {\n\t\tconst where = XKit.interface.where();\n\t\tif (!where.dashboard && !where.tagged) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst $container = $(XKit.css_map.descendantSelector(\"formContainer\", \"targetWrapper\"));\n\t\tconst $sidebar = $(XKit.css_map.keyToCss(\"sidebar\")).find(\"aside\");\n\n\t\tthis.search_input = $container.find(\"input[name='q']\");\n\t\tthis.placeholder = this.search_input.attr(\"placeholder\");\n\n\t\tthis.tags = await XKit.tools.async_add_function(async () => {\n\t\t\tconst result = await window.tumblr.apiFetch(\"/v2/user/followed_tags\", { method: \"GET\", queryParams: { limit: 20 } });\n\t\t\tconst tag_expression = new RegExp(/^#?(.+)/);\n\n\t\t\treturn {\n\t\t\t\ttags: result.response.timeline.elements.map(tag => {\n\t\t\t\t\tconst match = tag.tagName.match(tag_expression);\n\t\t\t\t\tconst tag_name = match != null ? match[1] : tag.tagName;\n\n\t\t\t\t\treturn ({\n\t\t\t\t\t\tname: tag_name,\n\t\t\t\t\t\tlink: tag.links.tap.href\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\tmore: result.response.timeline.links.next != null\n\t\t\t};\n\t\t});\n\n\t\tvar extra_classes = \"\";\n\t\tvar m_html = \"\";\n\n\t\tif (this.preferences.alphabetical_tags.value) {\n\t\t\tthis.tags.tags.sort((tagA, tagB) => (tagA.name > tagB.name) ? 1 : -1);\n\t\t}\n\n\t\tthis.tags.tags.forEach(tag => {\n\n\t\t\tif (location.href === tag.link) {\n\t\t\t\textra_classes = \"selected\";\n\t\t\t} else {\n\t\t\t\textra_classes = \"\";\n\t\t\t}\n\n\t\t\tif (this.preferences.only_new_tags.value) {\n\t\t\t\textra_classes += \" hidden\";\n\t\t\t}\n\n\t\t\tconst svg = ``;\n\n\t\t\tm_html += `\n\t\t\t\t\n\t\t\t`;\n\n\t\t});\n\n\t\tif (m_html !== \"\" && this.preferences.show_tags_on_sidebar.value) {\n\t\t\tif (this.tags.more === true && this.preferences.turn_off_warning.value !== true) {\n\t\t\t\tm_html += \"
    Too Many Tracked Tags:
    Only 20 tracked tags will be listed here.
    \";\n\t\t\t}\n\n\t\t\tconst extra_class = this.preferences.only_new_tags.value ? \"hidden\" : \"\";\n\t\t\tm_html = `\n\t\t\t\t
    \n\t\t\t\t\t
    Tracked Tags
    \n\t\t\t\t\t${m_html}\n\t\t\t\t
    \n\t\t\t`;\n\n\t\t\tif (this.preferences.prepend_sidebar.value === true) {\n\t\t\t\t$sidebar.prepend(m_html);\n\t\t\t} else {\n\t\t\t\t$sidebar.append(m_html);\n\t\t\t}\n\t\t}\n\n\t\tvar target = $container[0];\n\t\tthis.observer.observe(target, {\n\t\t\tsubtree: true,\n\t\t\tchildList: true\n\t\t});\n\n\t\tthis.update_tag_counts(2 * 60 * 1000); //start at 2 minutes\n\t},\n\n\tdestroy: function() {\n\t\tXKit.tools.remove_css(\"classic_tags\");\n\t\t$(\"#xtags\").remove();\n\t\tXKit.extensions.classic_tags.search_input.attr(\"placeholder\", XKit.extensions.classic_tags.placeholder);\n\t\tXKit.extensions.classic_tags.observer.disconnect();\n\t\tclearTimeout(XKit.extensions.classic_tags.count_update_handle);\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRUZGRjZFNTM4QzYxMUUzQTFDQUFDOThEMTlDRUY3OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRUZGRjZFNDM4QzYxMUUzQTFDQUFDOThEMTlDRUY3OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZCN0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+QJeL+wAAAlRJREFUeNrsVktPE1EU/qaPQAoSCXsMGEiMiQuE0vLQKo8YN/4BQdCVLjQhcevCPX/BDStdsCFBbICIKZRCeDYh1No2PIohGlEaZopQ6r3TUefe3hmnJrPS05Nmbufc7+v5zj1nRpooz8NOc8Bm+0/wR3NJTpsJYDeBxIrUc4DvX3B2DMkN5KiEzjIcJRAdxGkGgQSNSb/E5hMaY8WkYA3TBz2fDUNnfTjfjsvD9Poojjm/tSKTDPResPwJ9l4hE2VCW4P4OKLhVjSgLQxur9Dph3HVNp9h4zEWbkPZ1alZha405BTC135yzIPfXuQOyQW9Fywnq9dEvDNWUDe6diAnMR+gS089/LPgEHifqmVqcHOLfp98w+4IqonozQJZSXnfNsJzEb5prR6RbuMiT9cxBDeSlkpHOGYuoaIR3gm6JDkZcThIo+nd6gAoQyAOOYHILU2r1klwUAXnT9HXJascZHMghmwKkV6NwzspOkVcTdb7cbhewiS7HsNxGit3VY4L8E4VFfndldIeOJ1rgh9DV+GshE9FPz1EuNN42HUsm6GHmgxu5JHLaKectIse0/Xr7FvSXRS8OkBBm8e05UofE8ZnYD5hio/Z2n3IMbS8huuctlQ+cBmwe/whM4JwRxH6e3jf0AxoKvegJPg/8fcSRR9BSdJGI+WlZA+Q3RJoyBOYNL2eIP6cwrWMw+lRyR6K0QUEhdY3sgW1b7df4GAOdUO/0ZUUjJQQT1OTDPbHsD9KLz4F6TNu4ymyO6bTdPGOvW92pRX5HyWw/b3IbS/BDwEGAPg3rFrD0wEGAAAAAElFTkSuQmCC","css":".xtag {\n\tborder-top: 1px solid rgba(var(--white-on-dark), 0.07);\n\tposition: relative;\n\tpadding: 0;\n}\n\n.xtag a {\n\ttext-decoration: none;\n}\n\n.xtag.hidden {\n\tdisplay: none !important;\n\tvisibility: hidden !important;\n}\n\n.xtag.selected, .xtag:hover {\n\tbackground-color: rgba(var(--white-on-dark), 0.07);\n}\n\n.xtag .hide_overflow {\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n\n.xtag .result_title {\n\twidth: 88% !important;\n\tcolor: rgba(var(--white-on-dark), 0.65);\n\tpadding-left: 3px;\n\tfont-weight: 700;\n\tposition: absolute;\n\tline-height: 30px;\n}\n\n.xtag .result_icon {\n\tdisplay: inline-block;\n\theight: 18px;\n\tpadding: 6px 6px 6px 13px;\n}\n\n.xtag a .count {\n\ttop: 8px;\n\tposition: absolute;\n\tright: 10px;\n\tcolor: rgba(var(--white-on-dark), 0.65);\n\tfont-weight: 400;\n}\n\n.result_sub_title {\n\tfont-weight: 700 !important;\n\tpadding: 9px 0;\n}\n\n.classic-tags-too-much-tags-error {\n\tfont-size: 13px;\n\ttext-align: center;\n\tpadding: 10px 10px;\n\tmargin-top: 3px;\n\tbackground: rgba(0, 0, 0, 0.06);\n\tcolor: rgba(var(--white-on-dark), 0.4);\n}\n","title":"Tag Tracking+","description":"Shows your tracked tags on your sidebar","developer":"new-xkit","version":"1.6.12","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/cleanfeed.json b/Extensions/dist/cleanfeed.json new file mode 100644 index 000000000..a26077392 --- /dev/null +++ b/Extensions/dist/cleanfeed.json @@ -0,0 +1 @@ +{"id":"cleanfeed","script":"//* TITLE CleanFeed **//\n//* VERSION 1.5.5 **//\n//* DESCRIPTION Browse safely in public **//\n//* DEVELOPER STUDIOXENIX **//\n//* DETAILS This extension, when enabled, hides photo posts until you hover over them. Useful to browse Tumblr in a workspace or in public, and not worry about NSFW stuff appearing. You can also set it to hide avatars and not show non-text posts at all. To activate or disable it, click on the CleanFeed button on your sidebar. It will remember it's on/off setting. **//\n//* FRAME false **//\n//* BETA false **//\n//* SLOW true **//\n\nXKit.extensions.cleanfeed = new Object({\n\n\trunning: false,\n\tslow: true,\n\tadded_css: false,\n\tadded_full_block_css: false,\n\n\timg_blank: \"data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEMUQxREZBOEJFNjgxMUUyQUNEN0YzQjYzNTI1Mzg4OCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEMUQxREZBOUJFNjgxMUUyQUNEN0YzQjYzNTI1Mzg4OCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkNERTg1MkZGQkU2NzExRTJBQ0Q3RjNCNjM1MjUzODg4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNERTg1MzAwQkU2NzExRTJBQ0Q3RjNCNjM1MjUzODg4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAAAsAAAAAAEAAQAAAgJEAQA7\",\n\timg_lock: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAMCAYAAAC0qUeeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0RFODUyRkRCRTY3MTFFMkFDRDdGM0I2MzUyNTM4ODgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0RFODUyRkVCRTY3MTFFMkFDRDdGM0I2MzUyNTM4ODgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDREU4NTJGQkJFNjcxMUUyQUNEN0YzQjYzNTI1Mzg4OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDREU4NTJGQ0JFNjcxMUUyQUNEN0YzQjYzNTI1Mzg4OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqIiqz8AAABKSURBVHjaYvj//z8DCANBPRD/x4Lr4WqgCvlxKARjfIr1oWL26IoZoRIMjIyMYAaQz8gABdjE3uNzAhJ+zwhlEAWGvWKSgg4gwAAexVkCfEIqQgAAAABJRU5ErkJggg==\",\n\timg_avatar: \"data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA/AAD/4QMraHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgTWFjaW50b3NoIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkQxRDFERkFDQkU2ODExRTJBQ0Q3RjNCNjM1MjUzODg4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkQxRDFERkFEQkU2ODExRTJBQ0Q3RjNCNjM1MjUzODg4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RDFEMURGQUFCRTY4MTFFMkFDRDdGM0I2MzUyNTM4ODgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RDFEMURGQUJCRTY4MTFFMkFDRDdGM0I2MzUyNTM4ODgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAGBAQEBAQGBAQGCAUFBQgKBwYG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\",\n\n\tpreferences: {\n\t\tsep1: {\n\t\t\ttext: \"Level of Blockage\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\tfull_block: {\n\t\t\ttext: \"Use Full Block: Completely hide non-text things (audio, video, photos) on the dash\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\tsep2: {\n\t\t\ttext: \"Avatars\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\thide_avatars: {\n\t\t\ttext: \"Hide avatars when I turn on CleanFeed\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\tsep3: {\n\t\t\ttext: \"Photosets\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\tshow_all_photoset_photos: {\n\t\t\ttext: \"Show all photos at once when I hover over a photoset photo\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\n\tstatus: \"false\",\n\tlbl_on: \"on\",\n\tlbl_off: \"off\",\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tif ($(\"ol#posts\").length > 0) {\n\t\t\tXKit.extensions.cleanfeed.init();\n\t\t}\n\t},\n\n\tinit: function() {\n\n\t\tXKit.tools.init_css(\"cleanfeed\");\n\n\t\tXKit.extensions.cleanfeed.status = XKit.storage.get(\"cleanfeed\", \"status\", \"false\");\n\t\tXKit.extensions.cleanfeed.mode = XKit.storage.get(\"cleanfeed\", \"mode\", \"normal\");\n\n\t\tvar normal_text = \"\";\n\t\tif (XKit.extensions.cleanfeed.mode === \"normal\") {\n\t\t\tnormal_text = \"Normal\";\n\t\t} else {\n\t\t\tnormal_text = \"Smart\";\n\t\t}\n\n\t\tXKit.interface.sidebar.add({\n\t\t\tid: \"xcleanfeed_sidebar\",\n\t\t\ttitle: \"CleanFeed\",\n\t\t\titems: [{\n\t\t\t\tid: \"xcleanfeed_button\",\n\t\t\t\ttext: \"Filtering\",\n\t\t\t\tcount: this.lbl_off\n\t\t\t}],\n\t\t\tsmall: [\n\t\t\t\t{ id: \"xkit-cleanfeed-mode\", text: `Mode: ${normal_text}` },\n\t\t\t\t{ id: \"xkit-cleanfeed-mode-change\", text: \"change/help\" }\n\t\t\t]\n\t\t});\n\n\t\tXKit.extensions.cleanfeed.update_button();\n\n\t\t$(\"#xkit-cleanfeed-mode-change\").click(function() {\n\n\t\t\tvar opt_1 = \"\";\n\t\t\tvar opt_2 = \"\";\n\n\t\t\tif (XKit.extensions.cleanfeed.mode === \"normal\") {\n\t\t\t\topt_1 = \"selected\";\n\t\t\t} else {\n\t\t\t\topt_2 = \"selected\";\n\t\t\t}\n\n\t\t\tvar m_html = \"
     Normal:Hide everything from everyone.
    \" +\n\t\t\t\t\t\"
     Smart:Only hide stuff from NSFW/Adult blogs.
    \" +\n\t\t\t\t\t\"
    \" +\n\t\t\t\t\t\t\"Important: Smart mode depends on the blog rating gathered from Tumblr servers. If you turn on Smart mode and a blog is not set as a NSFW/Adult blog, either by the blogger or Tumblr, then their posts will appear on your dashboard without any filtering. Turn on Normal mode for maximum protection against genitalia in public.\" +\n\t\t\t\t\t\"
    \";\n\n\t\t\tXKit.window.show(\"Change Mode\", \"Change the mode CleanFeed works on:\" + m_html, \"question\", \"
    OK
    Cancel
    \");\n\n\t\t\t$(\".xkit-cleanfeed-mode-toggle\").click(function() {\n\n\t\t\t\t$(\".xkit-cleanfeed-mode-toggle\").not(this).removeClass(\"selected\");\n\t\t\t\t$(this).addClass(\"selected\");\n\n\t\t\t});\n\n\t\t\t$(\"#xkit-cleanfeed-accept-message\").click(function() {\n\n\t\t\t\tvar mode = $(\".xkit-cleanfeed-mode-toggle.selected\").attr('data-mode');\n\t\t\t\tXKit.extensions.cleanfeed.change_mode(mode);\n\n\t\t\t\tXKit.window.close();\n\n\t\t\t});\n\n\t\t\treturn false;\n\t\t});\n\n\t\t$(\"#xcleanfeed_button\").click(function() {\n\n\t\t\tXKit.extensions.cleanfeed.toggle();\n\n\t\t\treturn false;\n\t\t});\n\n\t\tif (XKit.extensions.cleanfeed.preferences.full_block.value) {\n\t\t\tXKit.extensions.cleanfeed.added_full_block_css = true;\n\t\t\tXKit.tools.add_css(\" .post.is_video, .post.is_photo, .post.is_photoset, .post.is_audio { display: none !important; }\", \"cleanfeed_full_block\");\n\t\t}\n\n\t\tXKit.post_listener.add(\"cleanfeed\", XKit.extensions.cleanfeed.do);\n\t\tXKit.extensions.cleanfeed.do();\n\n\t\t$(document).keydown(XKit.extensions.cleanfeed.key_down);\n\n\t},\n\n\tchange_mode: function(mode) {\n\n\t\tvar mode_text = \"Normal\";\n\t\tif (mode === \"smart\") { mode_text = \"Smart\"; }\n\n\t\tXKit.storage.set(\"cleanfeed\", \"mode\", mode);\n\n\t\tXKit.extensions.cleanfeed.mode = mode;\n\n\t\t$(\"#xkit-cleanfeed-mode\").html(\"Mode: \" + mode_text);\n\n\t\tif (XKit.extensions.cleanfeed.status == \"true\") {\n\n\t\t\tXKit.extensions.cleanfeed.update_images(false);\n\t\t\tsetTimeout(function() { XKit.extensions.cleanfeed.update_images(true); }, 100);\n\n\t\t}\n\n\t},\n\n\tkey_down: function(e) {\n\n\t\tif (e.altKey) {\n\t\t\tif (e.which === 88) {\n\t\t\t\tXKit.extensions.cleanfeed.toggle();\n\t\t\t}\n\t\t}\n\n\t},\n\n\tupdate_button: function() {\n\n\t\tif (XKit.extensions.cleanfeed.status == \"true\") {\n\t\t\t$(\"#xcleanfeed_button .count\").html(XKit.extensions.cleanfeed.lbl_on);\n\t\t} else {\n\t\t\t$(\"#xcleanfeed_button .count\").html(XKit.extensions.cleanfeed.lbl_off);\n\t\t}\n\n\t},\n\n\tdo: function() {\n\n\t\tif (XKit.extensions.cleanfeed.status == \"true\") {\n\t\t\tXKit.extensions.cleanfeed.update_images(true);\n\t\t} else {\n\t\t\tXKit.extensions.cleanfeed.update_images(false);\n\t\t}\n\n\n\t},\n\n\tm_enter: function(e) {\n\n\t\tif (XKit.extensions.cleanfeed.status !== \"true\") { return; }\n\t\tXKit.extensions.cleanfeed.show_thumbnail(e.target);\n\n\t},\n\n\tm_leave: function(e) {\n\n\t\tif (XKit.extensions.cleanfeed.status !== \"true\") { return; }\n\t\tXKit.extensions.cleanfeed.hide_thumbnail(e.target);\n\n\t},\n\n\tm_ps_enter: function(e, open_all_mode) {\n\n\t\tif (XKit.extensions.cleanfeed.status !== \"true\") { return; }\n\n\t\tif (open_all_mode) {\n\t\t\tXKit.extensions.cleanfeed.show_photoset_picture(e);\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.extensions.cleanfeed.show_photoset_picture(e.target);\n\n\t\tif ($(e.target).parent().hasClass(\"photoset_photo\")) {\n\t\t\tif (XKit.extensions.cleanfeed.preferences.show_all_photoset_photos.value) {\n\t\t\t\tvar parent_post = $(e.target).parentsUntil('.post_content');\n\t\t\t\t$(parent_post).find(\".photoset_row img\").each(function() {\n\t\t\t\t\tXKit.extensions.cleanfeed.m_ps_enter($(this), true);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\n\tm_ps_leave: function(e, close_all_mode) {\n\n\t\tif (XKit.extensions.cleanfeed.status !== \"true\") { return; }\n\n\t\tif (close_all_mode) {\n\t\t\tXKit.extensions.cleanfeed.hide_photoset_picture(e);\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.extensions.cleanfeed.hide_photoset_picture(e.target);\n\n\t\tif ($(e.target).parent().hasClass(\"photoset_photo\")) {\n\t\t\tif (XKit.extensions.cleanfeed.preferences.show_all_photoset_photos.value) {\n\t\t\t\tvar parent_post = $(e.target).parentsUntil('.post_content');\n\t\t\t\t$(parent_post).find(\".photoset_row img\").each(function() {\n\t\t\t\t\tXKit.extensions.cleanfeed.m_ps_leave($(this), true);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t},\n\n\thide_thumbnail: function(j) {\n\n\t\t$(j).attr('src', XKit.extensions.cleanfeed.img_blank);\n\t\t$(j).css(\"background\", \"#d5e3f3 no-repeat 50% 50% url(\" + XKit.extensions.cleanfeed.img_lock + \")\");\n\t\t$(j).css(\"visibility\", \"visible\");\n\n\t},\n\n\tshow_thumbnail: function(j) {\n\n\t\t$(j).attr('src', $(j).attr('data-thumbnail'));\n\t\t$(j).css(\"background\", \"transparent\");\n\n\t},\n\n\thide_photoset_picture: function(j) {\n\n\t\t$(j).attr('src', XKit.extensions.cleanfeed.img_blank);\n\t\t$(j).css(\"background\", \"#d5e3f3 no-repeat 50% 50% url(\" + XKit.extensions.cleanfeed.img_lock + \")\");\n\t\t$(j).css(\"visibility\", \"visible\");\n\n\t},\n\n\tshow_photoset_picture: function(j) {\n\n\t\t$(j).attr('src', $(j).attr('data-xkit-old-src'));\n\t\t$(j).css(\"background\", \"transparent\");\n\n\t},\n\n\tsmart_update_images: function() {\n\n\t\t$(document).on(\"mouseenter\", \".xkit-cleanfeed-smart-checked-flagged .image_thumbnail\", XKit.extensions.cleanfeed.m_enter);\n\t\t$(document).on(\"mouseleave\", \".xkit-cleanfeed-smart-checked-flagged .image_thumbnail\", XKit.extensions.cleanfeed.m_leave);\n\n\t\t$(document).on(\"mouseenter\", \".xkit-cleanfeed-smart-checked-flagged .photoset_row img, .post.xkit-cleanfeed-smart-checked-flagged .image, .post.xkit-cleanfeed-smart-checked-flagged .panorama img\", XKit.extensions.cleanfeed.m_ps_enter);\n\t\t$(document).on(\"mouseleave\", \".xkit-cleanfeed-smart-checked-flagged .photoset_row img, .post.xkit-cleanfeed-smart-checked-flagged .image, .post.xkit-cleanfeed-smart-checked-flagged .panorama img\", XKit.extensions.cleanfeed.m_ps_leave);\n\n\t\tif (!XKit.extensions.cleanfeed.added_full_block_css && XKit.extensions.cleanfeed.preferences.full_block.value) {\n\t\t\tXKit.tools.add_css(\" .post.xkit-cleanfeed-smart-checked-flagged.video, .post.xkit-cleanfeed-smart-checked-flagged.photo, .post.xkit-cleanfeed-smart-checked-flagged.audio, .post.xkit-cleanfeed-smart-checked-flagged.is_video, .post.xkit-cleanfeed-smart-checked-flagged.is_photo, .post.xkit-cleanfeed-smart-checked-flagged.is_audio, .post.xkit-cleanfeed-smart-checked-flagged.is_photoset, { display: none !important; }\", \"cleanfeed_full_block\");\n\t\t\tXKit.extensions.cleanfeed.added_full_block_css = true;\n\t\t}\n\n\t\tif (!XKit.extensions.cleanfeed.added_css) {\n\t\t\tXKit.tools.add_css(\" .xkit-cleanfeed-smart-checked-flagged.post .inline_image { opacity: 0.15; } .xkit-cleanfeed-smart-checked-flagged.post .inline_image:hover { opacity: 1; } .xkit-cleanfeed-smart-checked-flagged .image_thumbnail, .xkit-cleanfeed-smart-checked-flagged .photoset_row img, .xkit-cleanfeed-smart-checked-flagged.post .image, .xkit-cleanfeed-smart-checked-flagged.post .panorama { visibility: hidden; } .post.xkit-cleanfeed-smart-checked-flagged.video, .post.xkit-cleanfeed-smart-checked-flagged.is_video { display: none !important; }\", \"cleanfeed_on\");\n\t\t\tXKit.extensions.cleanfeed.added_css = true;\n\t\t}\n\n\t\t$(\".posts .post\").not(\".xkit-cleanfeed-smart-checked\").each(function() {\n\n\t\t\tvar rating = $(this).attr('data-tumblelog-content-rating');\n\t\t\tvar is_nsfw = false;\n\t\t\tif (rating === \"nsfw\" || rating === \"adult\") { is_nsfw = true; }\n\n\t\t\t$(this).addClass(\"xkit-cleanfeed-smart-checked\");\n\n\t\t\tif (!is_nsfw) { return; }\n\n\t\t\t$(this).addClass(\"xkit-cleanfeed-smart-checked-flagged\");\n\n\t\t\tif (XKit.extensions.cleanfeed.preferences.hide_avatars.value) {\n\t\t\t\t$(this).find(\".post_avatar_link\").not(\".flat.lighter_blue\").each(function() {\n\t\t\t\t\t$(this).css(\"background-image\", \"url(\" + XKit.extensions.cleanfeed.img_avatar + \")\");\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t$(this).find(\".image_thumbnail\").each(function() {\n\n\t\t\t\tXKit.extensions.cleanfeed.hide_thumbnail(this);\n\n\t\t\t});\n\n\t\t\t$(this).find(\".photoset_row img, .post .image, .post .panorama img\").each(function() {\n\n\t\t\t\tXKit.extensions.cleanfeed.hide_photoset_picture(this);\n\n\t\t\t});\n\n\n\t\t});\n\n\t},\n\n\tupdate_images: function(hide) {\n\n\t\t$(\".photoset_row img, .post .image, .post .inline_image, .post .panorama img\").not(\".cleanfeed_done_saving\").each(function() {\n\n\t\t\t$(this).addClass(\"cleanfeed_done_saving\");\n\t\t\t$(this).attr('data-xkit-old-src', $(this).attr('src'));\n\n\t\t});\n\n\t\t$(\".post_avatar_link\").each(function() {\n\n\t\t\tif (typeof $(this).attr('data-user-avatar-url') === \"undefined\" || $(this).attr('data-user-avatar-url') === \"\") {\n\t\t\t\t$(this).attr('data-user-avatar-url', $(this).css('background-image'));\n\t\t\t}\n\n\t\t});\n\n\t\tif (XKit.extensions.cleanfeed.mode === \"smart\" && hide) {\n\n\t\t\tXKit.extensions.cleanfeed.smart_update_images();\n\t\t\treturn;\n\n\t\t}\n\n\t\tif (!hide) {\n\n\t\t\t$(\".posts .post\").removeClass(\"xkit-cleanfeed-smart-checked\").removeClass(\"xkit-cleanfeed-smart-checked-flagged\");\n\n\t\t}\n\n\t\tif (hide) {\n\n\t\t\tif (XKit.extensions.cleanfeed.preferences.hide_avatars.value) {\n\t\t\t\t$(\".post_avatar_link\").not(\".flat.lighter_blue\").each(function() {\n\t\t\t\t\t$(this).css(\"background-image\", \"url(\" + XKit.extensions.cleanfeed.img_avatar + \")\");\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!XKit.extensions.cleanfeed.added_css) {\n\t\t\t\tXKit.tools.add_css(\" .post .inline_image { opacity: 0.15; } .post .inline_image:hover { opacity: 1; } .image_thumbnail, .photoset_row img, .post .image, .post .panorama { visibility: hidden; } .post.video, .post.is_video { display: none !important; }\", \"cleanfeed_on\");\n\t\t\t\tXKit.extensions.cleanfeed.added_css = true;\n\t\t\t}\n\n\t\t\tif (!XKit.extensions.cleanfeed.added_full_block_css && XKit.extensions.cleanfeed.preferences.full_block.value) {\n\t\t\t\tXKit.tools.add_css(\" .post.video, .post.photo, .post.audio, .post.is_video, .post.is_photo, .post.is_audio, .post.is_photoset, { display: none !important; }\", \"cleanfeed_full_block\");\n\t\t\t\tXKit.extensions.cleanfeed.added_full_block_css = true;\n\t\t\t}\n\n\t\t\t$(document).on(\"mouseenter\", \".image_thumbnail\", XKit.extensions.cleanfeed.m_enter);\n\t\t\t$(document).on(\"mouseleave\", \".image_thumbnail\", XKit.extensions.cleanfeed.m_leave);\n\n\t\t\t$(document).on(\"mouseenter\", \".photoset_row img, .post .image, .post .panorama img\", XKit.extensions.cleanfeed.m_ps_enter);\n\t\t\t$(document).on(\"mouseleave\", \".photoset_row img, .post .image, .post .panorama img\", XKit.extensions.cleanfeed.m_ps_leave);\n\n\t\t} else {\n\n\t\t\tXKit.tools.remove_css(\"cleanfeed_full_block\");\n\t\t\tXKit.extensions.cleanfeed.added_full_block_css = false;\n\n\t\t\t$(\".post_avatar_link\").each(function() {\n\n\t\t\t\tvar m_url = $(this).find(\".post_avatar_image\").attr('src');\n\n\t\t\t\tif (typeof m_url === \"undefined\" || m_url === \"\") {\n\n\t\t\t\t\tm_url = $(this).attr('data-user-avatar-url');\n\n\t\t\t\t}\n\n\t\t\t\tif (m_url.indexOf('url(') !== -1) {\n\t\t\t\t\t$(this).css(\"background-image\", m_url);\n\t\t\t\t} else {\n\t\t\t\t\t$(this).css(\"background-image\", \"url(\" + m_url + \")\");\n\t\t\t\t}\n\n\n\n\t\t\t});\n\n\t\t\tXKit.tools.remove_css(\"cleanfeed_on\");\n\t\t\tXKit.extensions.cleanfeed.added_css = false;\n\n\t\t\t$(document).off(\"mouseenter\", \".image_thumbnail\", XKit.extensions.cleanfeed.m_enter);\n\t\t\t$(document).off(\"mouseleave\", \".image_thumbnail\", XKit.extensions.cleanfeed.m_leave);\n\t\t\t$(document).off(\"mouseenter\", \".photoset_row img, .post .image, .post .panorama img\", XKit.extensions.cleanfeed.m_ps_enter);\n\t\t\t$(document).off(\"mouseleave\", \".photoset_row img, .post .image, .post .panorama img\", XKit.extensions.cleanfeed.m_ps_leave);\n\n\t\t}\n\n\t\t$(\".image_thumbnail\").each(function() {\n\n\t\t\tif (hide) {\n\t\t\t\tXKit.extensions.cleanfeed.hide_thumbnail(this);\n\t\t\t} else {\n\t\t\t\tXKit.extensions.cleanfeed.show_thumbnail(this);\n\t\t\t}\n\n\t\t});\n\n\t\t$(\".photoset_row img, .post .image, .post .panorama img\").each(function() {\n\n\t\t\tif (hide) {\n\t\t\t\tXKit.extensions.cleanfeed.hide_photoset_picture(this);\n\t\t\t} else {\n\t\t\t\tXKit.extensions.cleanfeed.show_photoset_picture(this);\n\t\t\t}\n\n\t\t});\n\n\t},\n\n\ttoggle: function() {\n\n\t\tif (XKit.extensions.cleanfeed.status == \"true\") {\n\t\t\tXKit.extensions.cleanfeed.status = \"false\";\n\t\t\tXKit.extensions.cleanfeed.update_images(false);\n\t\t} else {\n\t\t\tXKit.extensions.cleanfeed.status = \"true\";\n\t\t\tXKit.extensions.cleanfeed.update_images(true);\n\t\t}\n\n\t\tXKit.extensions.cleanfeed.update_button();\n\t\tXKit.storage.set(\"cleanfeed\", \"status\", XKit.extensions.cleanfeed.status);\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.tools.remove_css(\"cleanfeed_on\");\n\t\tXKit.tools.remove_css(\"cleanfeed_full_block\");\n\t\tXKit.interface.sidebar.remove(\"xcleanfeed_sidebar\");\n\t\tXKit.extensions.cleanfeed.update_images(false);\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","css":"#xkit-cleanfeed-mode-warning {\n\tmargin-top: 10px;\n\tpadding-top: 10px;\n\tborder-top: 1px dotted rgb(200,200,200);\n\tfont-size: 12px;\n}\n\n#xkit-cleanfeed-mode {\n\tcursor: default !important;\n}\n","title":"CleanFeed","description":"Browse safely in public","developer":"STUDIOXENIX","version":"1.5.5","details":"This extension, when enabled, hides photo posts until you hover over them. Useful to browse Tumblr in a workspace or in public, and not worry about NSFW stuff appearing. You can also set it to hide avatars and not show non-text posts at all. To activate or disable it, click on the CleanFeed button on your sidebar. It will remember it's on/off setting.","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/convert_links.json b/Extensions/dist/convert_links.json new file mode 100644 index 000000000..b73d2e232 --- /dev/null +++ b/Extensions/dist/convert_links.json @@ -0,0 +1 @@ +{"id":"convert_links","script":"//* TITLE Convert Links **//\n//* VERSION 0.1 REV B **//\n//* DESCRIPTION Clickable links on asks **//\n//* DETAILS This extension allows you to turn the 'encrypted' links that people can send you using asks to clickable ones. **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.convert_links = new Object({\n\n\trunning: false,\n\n\tbutton_icon: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0YwNkY2N0QyNjEwMTFFM0E4QURBMkY5NDVFMjREMzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0YwNkY2N0UyNjEwMTFFM0E4QURBMkY5NDVFMjREMzgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRjA2RjY3QjI2MTAxMUUzQThBREEyRjk0NUUyNEQzOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozRjA2RjY3QzI2MTAxMUUzQThBREEyRjk0NUUyNEQzOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpwA9qcAAAEiSURBVHjaYmDADRSAuBmItwDxYyA+DcQVQMzBQAKIBuL/aPgdEF9B4j8CYnVCBp2GKt4PxHpA7IBFzTwkQ3NwGXQcyRXIIA7qVXUsLgbhRHSDYpEkv6PJPYeKg4AjEN/BYiAKQJZoJBAUMlgMuwCTVMZnCxpYDlXzF4uBLCAFLUQapogjzGA4kwlIaKBpMsBh2BoCrtYEGSaJJtiLxL4JxHugbCMChoHNWYLFyU5YIoYQ7gK57BwWW0CuMQZiRigmBoASPAMXHtt+ATE/EJtCs5AvlF0IxEdxRdxbAl74gcM1tlD5WciCqgQMe4PDMJzJKRuPYRfxGMSHKxAT8Rh4H4ulQsTEzDkC3l6JTRO+aAclmwxoDpGEugxUgvTj0gAQYAB9HpoNDcJdTAAAAABJRU5ErkJggg==\",\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (XKit.interface.where().inbox !== true) { return; }\n\n\t\t$(document).on('click', '.xkit-convert-links-button', XKit.extensions.convert_links.on_click);\n\t\tXKit.interface.create_control_button(\"xkit-convert-links-button\", this.button_icon, \"Convert Links\", \"\");\n\n\t\tXKit.post_listener.add(\"convert_links\", XKit.extensions.convert_links.do);\n\t\tXKit.extensions.convert_links.do();\n\n\t},\n\n\ton_click: function(e) {\n\n\t\tvar obj = e.target || e.srcElement;\n\t\tvar parent = $(obj).parentsUntil(\"#posts\");\n\n\t\tvar m_post = XKit.interface.find_post($(obj).attr('data-ask-id'));\n\n\t\tvar m_content = $(\".post_body\", \"
    \" + m_post.body + \"
    \").html();\n\t\tvar m_html = m_content.substring(m_content.indexOf(\"
    .]+[.]?)+|((?:[^\\s()<>]+|(?:([^\\s()<>]+)))))+(?:((?:[^\\s()<>]+|(?:([^\\s()<>]+))))|[^\\s`!()[]{};:'\".,<>?]))/gi, \"$1\");\n\n\t\t$(parent).find(\".post_body\").html(m_content + m_html);\n\n\t},\n\n\tdo: function() {\n\n\t\tvar posts = XKit.interface.get_posts(\"convert-links-done\");\n\n\t\t$(posts).each(function() {\n\n\t\t\t$(this).addClass(\"convert-links-done\");\n\n\t\t\tvar m_post = XKit.interface.post($(this));\n\t\t\tif (m_post.type !== \"note\") { return; }\n\n\t\t\tvar this_id = m_post.id;\n\t\t\tXKit.interface.add_control_button(this, \"xkit-convert-links-button\", \"data-ask-id=\\\"\" + this_id + \"\\\"\");\n\n\t\t});\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjU2ODI1RTIyNjE2MTFFM0E4QURBMkY5NDVFMjREMzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjU2ODI1RTMyNjE2MTFFM0E4QURBMkY5NDVFMjREMzgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRjA2RjY3RjI2MTAxMUUzQThBREEyRjk0NUUyNEQzOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozRjA2RjY4MDI2MTAxMUUzQThBREEyRjk0NUUyNEQzOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvM31wIAAAcQSURBVHjadFZrbBVF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","title":"Convert Links","description":"Clickable links on asks","developer":"STUDIOXENIX","version":"0.1 REV B","details":"This extension allows you to turn the 'encrypted' links that people can send you using asks to clickable ones.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/disable_gifs.json b/Extensions/dist/disable_gifs.json new file mode 100644 index 000000000..86ce9bb7b --- /dev/null +++ b/Extensions/dist/disable_gifs.json @@ -0,0 +1 @@ +{"id":"disable_gifs","script":"//* TITLE Disable Gifs **//\n//* VERSION 1.0.0 **//\n//* DESCRIPTION Stops GIFs on dashboard **//\n//* DETAILS This is a very early preview version of an extension that allows you to stop the GIFs from playing on your dashboard. If you still would like to view them, you can click on the Play button on the post. Please note that for now, this extension can't stop GIFs added to text posts. **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA false **//\n//* SLOW true **//\n\nXKit.extensions.disable_gifs = new Object({\n\n\trunning: false,\n\tbutton_icon: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RkRFQzJCQjcyQjRCMTFFMzk3NjJBMTk2OEYyM0IxREYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RkRFQzJCQjgyQjRCMTFFMzk3NjJBMTk2OEYyM0IxREYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpENTA1MTcyNjJBRUMxMUUzOTc2MkExOTY4RjIzQjFERiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGREVDMkJCNjJCNEIxMUUzOTc2MkExOTY4RjIzQjFERiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgYTp9MAAACOSURBVHjavJQNCsAgCEb3Dc/UMbb7n8YVFIlMa2ETjP6UZ2pg5iNKqAwAPnvMENB75xEopNaYgbIOtpJ5bzSkp9lQcpKGCfk1THh1WGnZTIA0lvNSi1lTC/c17GrATeW6zJuKO0nRdrsFZ2w5I6s1HLnd+tHqEFxGGXWyQbamW41W+3B7byLycwwlewQYAABheN9oKlBYAAAAAElFTkSuQmCC\",\n\ton_icon: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RkRFQzJCQkIyQjRCMTFFMzk3NjJBMTk2OEYyM0IxREYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RkRFQzJCQkMyQjRCMTFFMzk3NjJBMTk2OEYyM0IxREYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGREVDMkJCOTJCNEIxMUUzOTc2MkExOTY4RjIzQjFERiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGREVDMkJCQTJCNEIxMUUzOTc2MkExOTY4RjIzQjFERiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmuI/CcAAABySURBVHjaYvz//z8DtQALiMhZqkOyiVOirzCiizExUBGwELINHeDzBe1cRm5Y4TWM3AihnzdJjRCiXQbSBMRm+NQwkRhWJ/EZSE6YncQbZsSEDRLwp5bL/IEWb6I40RLjehZy8yHN8yYjNQtHqroMIMAAFUUpurj2PsEAAAAASUVORK5CYII=\",\n\tslow: true,\n\n\tpreferences: {\n\t\t\"hide_completely\": {\n\t\t\ttext: \"Completely hide posts with GIFs.\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (XKit.page.react) {\n\t\t\tXKit.post_listener.add('disable_gifs', this.react_do);\n\t\t\tthis.react_do();\n\n\t\t\tXKit.tools.add_css(`\n\t\t\t\tfigure:hover .xkit-paused-gif,\n\t\t\t\tfigure:hover .xkit-gif-label {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t\t.xkit-gif-label {\n\t\t\t\t\tcolor: white;\n\t\t\t\t\tbackground-color: black;\n\t\t\t\t\theight: 1em;\n\t\t\t\t\tline-height: 1em;\n\t\t\t\t\tpadding: 5px 7px;\n\t\t\t\t\tborder-radius: 20px;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\ttop: 5px;\n\t\t\t\t\tleft: 5px;\n\t\t\t\t\tz-index: 2;\n\t\t\t\t}\n\t\t\t`, 'disable_gifs');\n\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.tools.init_css(\"disable_gifs\");\n\t\tif ($(\"#posts\").length > 0) {\n\t\t\t$(document).on('click', '.disable_gifs_button', XKit.extensions.disable_gifs.on_click);\n\t\t\t//$(document).on('click','.xkit-disable-gifs-canvas-thumbnail', XKit.extensions.disable_gifs.toggle_enlarge);\n\n\t\t\tXKit.interface.create_control_button(\"disable_gifs_button\", this.button_icon, \"Play Gif\", \"\", this.on_icon);\n\t\t\tXKit.post_listener.add(\"disable_gifs\", XKit.extensions.disable_gifs.do);\n\t\t\tXKit.extensions.disable_gifs.do();\n\t\t}\n\n\t},\n\n\treact_do: function() {\n\t\tconst {react_draw} = XKit.extensions.disable_gifs;\n\n\t\t$('figure img[srcset*=\".gif\"]:not(.xkit-disabled-gif)').each(function() {\n\t\t\t$(this).addClass('xkit-disabled-gif');\n\n\t\t\tif (this.complete && this.currentSrc) {\n\t\t\t\treact_draw(this);\n\t\t\t} else {\n\t\t\t\tthis.onload = function() { react_draw(this); };\n\t\t\t}\n\t\t});\n\t},\n\n\treact_draw: function(gif) {\n\t\tconst image = new Image();\n\t\timage.src = gif.currentSrc;\n\t\timage.onload = () => {\n\t\t\tconst canvas = document.createElement('canvas');\n\t\t\tcanvas.width = image.naturalWidth;\n\t\t\tcanvas.height = image.naturalHeight;\n\t\t\tcanvas.className = gif.className;\n\t\t\tcanvas.classList.remove('xkit-disabled-gif');\n\t\t\tcanvas.classList.add('xkit-paused-gif');\n\t\t\tcanvas.style.zIndex = '1';\n\t\t\tcanvas.getContext('2d').drawImage(image, 0, 0);\n\n\t\t\tconst label = document.createElement('p');\n\t\t\tlabel.innerText = 'GIF';\n\t\t\tlabel.className = 'xkit-gif-label';\n\n\t\t\tgif.parentNode.appendChild(canvas);\n\t\t\tgif.parentNode.appendChild(label);\n\t\t};\n\t},\n\n\tredraw_canvases: function(obj) {\n\n\t\t$(obj).find(\".xkit-disable-gifs-canvas-container\").each(function() {\n\n\t\t\tvar image = new Image();\n\t\t\timage.src = $(this).attr('data-url');\n\n\t\t\tvar v_object = $(this).find(\".xkit-disable-gifs-canvas-thumbnail\");\n\n\t\t\timage.onload = (function() {\n\t\t\t\t$(v_object)[0].getContext(\"2d\").drawImage(image, 0, 0);\n\n\t\t\t\tif ($(v_object).hasClass(\"xkit-disable-gifs-for-photoset\")) {return; }\n\n\t\t\t\t$(v_object).click(function() {\n\n\t\t\t\t\t$(this).parentsUntil(\".post_media\").parent().find(\".image_thumbnail\").trigger('click');\n\n\t\t\t\t\t$(this).toggleClass(\"enlarged-canvas\");\n\t\t\t\t\tif ($(this).hasClass(\"enlarged-canvas\")) {\n\t\t\t\t\t\t$(this).css(\"width\", $(this).attr('data-width'));\n\t\t\t\t\t\t$(this).css(\"height\", $(this).attr('data-height'));\n\t\t\t\t\t\t$(this).parent().css(\"width\", $(this).attr('data-width'));\n\t\t\t\t\t\t$(this).parent().css(\"height\", $(this).attr('data-height'));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(this).css(\"width\", $(this).attr('data-width-thumb'));\n\t\t\t\t\t\t$(this).css(\"height\", $(this).attr('data-height-thumb'));\n\t\t\t\t\t\t$(this).parent().css(\"width\", $(this).attr('data-width-thumb'));\n\t\t\t\t\t\t$(this).parent().css(\"height\", $(this).attr('data-height-thumb'));\n\t\t\t\t\t}\n\n\t\t\t\t});\n\n\t\t\t});\n\n\n\n\t\t});\n\n\t},\n\n\treturn_as_jpg_photoset: function(url, width, height, post_id, obj, post_obj, row_container, box_container, img_id) {\n\n\t\tconsole.log(\"return_as_jpg_photoset for \" + url + \" | height = \" + height + \" | width = \" + width);\n\n\t\tif (parseInt(height) === 0) {\n\t\t\theight = $(row_container).height();\n\t\t}\n\n\t\tvar m_canvas_html = \"
    \";\n\n\t\t$(box_container).append(m_canvas_html);\n\n\t\t$(\"#xkit-disable-gifs-canvas-for-\" + post_id + \"___\" + img_id).attr(\"width\", width);\n\t\t$(\"#xkit-disable-gifs-canvas-for-\" + post_id + \"___\" + img_id).attr(\"height\", height);\n\n\t\tvar image = new Image();\n\t\timage.src = url;\n\n\t\timage.onload = (function() {\n\n\t\t\tconsole.log(\"return_as_jpg for \" + url + \" ---> Complete loading image.\");\n\n\t\t\t$(\"#xkit-disable-gifs-canvas-for-\" + post_id + \"___\" + img_id)[0].getContext(\"2d\").drawImage(image, 0, 0, width, height);\n\t\t\t//var image_src = $(\"#xkit-disable-gifs-canvas-for-\" + post_id)[0].toDataURL(\"image/jpg\");\n\n\t\t});\n\n\t},\n\n\treturn_as_jpg: function(url, width, height, post_id, obj, post_obj, photoset_mode) {\n\n\t\tconsole.log(\"return_as_jpg for \" + url);\n\n\t\tvar m_canvas_html = \"
    \";\n\n\t\tif ($(post_obj).find(\".photo_info\").length > 0) {\n\t\t\t$(post_obj).find(\".photo_info\").before(m_canvas_html);\n\t\t} else {\n\t\t\t$(post_obj).find(\".post_media\").append(m_canvas_html);\n\t\t}\n\t\t$(\"#xkit-disable-gifs-canvas-for-\" + post_id).attr(\"width\", width);\n\t\t$(\"#xkit-disable-gifs-canvas-for-\" + post_id).attr(\"height\", height);\n\n\t\t$(\"#xkit-disable-gifs-canvas-container-for-\" + post_id).css(\"width\", width + \"px\");\n\t\t$(\"#xkit-disable-gifs-canvas-container-for-\" + post_id).css(\"height\", height + \"px\");\n\n\t\tvar image = new Image();\n\t\timage.src = url;\n\n\t\timage.onload = (function() {\n\n\t\t\tconsole.log(\"return_as_jpg for \" + url + \" ---> Complete loading image.\");\n\n\t\t\t$(\"#xkit-disable-gifs-canvas-for-\" + post_id)[0].getContext(\"2d\").drawImage(image, 0, 0, width, height);\n\t\t\t//var image_src = $(\"#xkit-disable-gifs-canvas-for-\" + post_id)[0].toDataURL(\"image/jpg\");\n\n\t\t\tvar m_width = $(obj).attr('data-width');\n\t\t\tvar m_height = $(obj).attr('data-height');\n\n\t\t\t$(\"#xkit-disable-gifs-canvas-for-\" + post_id).attr('data-height', m_height);\n\t\t\t$(\"#xkit-disable-gifs-canvas-for-\" + post_id).attr('data-width', m_width);\n\n\t\t\t$(\"#xkit-disable-gifs-canvas-for-\" + post_id).attr('data-height-thumb', height);\n\t\t\t$(\"#xkit-disable-gifs-canvas-for-\" + post_id).attr('data-width-thumb', width);\n\n\t\t\tif (!photoset_mode) {\n\n\t\t\t\t$(\"#xkit-disable-gifs-canvas-for-\" + post_id).click(function() {\n\n\t\t\t\t\t$(this).parentsUntil(\".post_media\").parent().find(\".image_thumbnail\").trigger('click');\n\n\t\t\t\t\t$(this).toggleClass(\"enlarged-canvas\");\n\t\t\t\t\tif ($(this).hasClass(\"enlarged-canvas\")) {\n\t\t\t\t\t\t$(this).css(\"width\", $(this).attr('data-width'));\n\t\t\t\t\t\t$(this).css(\"height\", $(this).attr('data-height'));\n\t\t\t\t\t\t$(this).parent().css(\"width\", $(this).attr('data-width'));\n\t\t\t\t\t\t$(this).parent().css(\"height\", $(this).attr('data-height'));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(this).css(\"width\", $(this).attr('data-width-thumb'));\n\t\t\t\t\t\t$(this).css(\"height\", $(this).attr('data-height-thumb'));\n\t\t\t\t\t\t$(this).parent().css(\"width\", $(this).attr('data-width-thumb'));\n\t\t\t\t\t\t$(this).parent().css(\"height\", $(this).attr('data-height-thumb'));\n\t\t\t\t\t}\n\n\t\t\t\t});\n\n\t\t\t} else {\n\n\n\n\t\t\t}\n\n\t\t});\n\n\t},\n\n\tcheck_if_animated: function(obj) {\n\n\t\ttry {\n\n\t\t\tvar m_post = XKit.interface.post($(obj));\n\t\t\tif (m_post.animated === true) { return true; }\n\n\t\t\tif ($(obj).find(\".image_thumbnail\").length > 0) {\n\t\t\t\treturn ($(obj).find(\".image_thumbnail\").attr('src').indexOf(\".gif\") !== -1);\n\t\t\t} else {\n\t\t\t\tif ($(obj).find(\".image\").length > 0) {\n\t\t\t\t\treturn ($(obj).find(\".image\").attr('src').indexOf(\".gif\") !== -1);\n\t\t\t\t} else {\n\t\t\t\t\tif ($(obj).find(\".photoset_photo\").length > 0) {\n\t\t\t\t\t\t// do something here?\n\t\t\t\t\t\tif (typeof $(obj).find(\".photoset_photo\").attr('src') !== \"undefined\") {\n\t\t\t\t\t\t\treturn ($(obj).find(\".photoset_photo\").attr('src').indexOf(\".gif\") !== -1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn ($(obj).find(\".photoset_photo\").attr('href').indexOf(\".gif\") !== -1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t} catch (e) {\n\n\t\t\tconsole.log(\"[!!!!!!]check_if_animated --> \" + e.message);\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tdo: function() {\n\n\t\tvar posts = XKit.interface.get_posts(\"disable-gifs-checked\");\n\n\t\t$(posts).each(function() {\n\n\t\t\t$(this).addClass(\"disable-gifs-checked\");\n\n\t\t\tif ($(this).hasClass(\"xkit-dont-run-extensions\")) { return; }\n\n\t\t\tvar m_post = XKit.interface.post($(this));\n\t\t\t// if (m_post.animated !== true) { return; }\n\n\t\t\tif (XKit.extensions.disable_gifs.check_if_animated($(this)) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (XKit.extensions.disable_gifs.preferences.hide_completely.value === true) {\n\t\t\t\t$(this).addClass(\"xkit-disable-gifs-completely\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($(this).find(\".image_thumbnail\").length > 0) {\n\t\t\t\t$(this).find(\".image_thumbnail\").css(\"display\", \"none\");\n\t\t\t\tXKit.extensions.disable_gifs.return_as_jpg($(this).find(\".image_thumbnail\").attr('src'), $(this).find(\".image_thumbnail\").attr('width'), $(this).find(\".image_thumbnail\").attr('height'), m_post.id, $(this).find(\".image_thumbnail\"), this);\n\t\t\t} else {\n\t\t\t\tif ($(this).find(\".image\").length > 0) {\n\t\t\t\t\t$(this).find(\".image\").css(\"display\", \"none\");\n\t\t\t\t\tXKit.extensions.disable_gifs.return_as_jpg($(this).find(\".image\").attr('src'), $(this).find(\".image\").attr('width'), $(this).find(\".image\").attr('height'), m_post.id, $(this).find(\".image\"), this);\n\t\t\t\t} else {\n\t\t\t\t\tif ($(this).find(\".photoset_photo\").length > 0) {\n\t\t\t\t\t\t// do something here?\n\t\t\t\t\t\tvar img_id = 0;\n\t\t\t\t\t\tvar m_parent = $(this);\n\t\t\t\t\t\t$(this).find(\".photoset_photo\").each(function() {\n\t\t\t\t\t\t\t$(this).find(\"img\").css(\"display\", \"none\");\n\t\t\t\t\t\t\timg_id++;\n\t\t\t\t\t\t\tXKit.extensions.disable_gifs.return_as_jpg_photoset($(this).find(\"img\").attr('src'), $(this).find(\"img\").css('width').replace(\"px\", \"\"), $(this).find(\"img\").css('height').replace(\"px\", \"\"), m_post.id, $(this), m_parent, $(this).parent(), $(this), img_id, \"es\");\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar this_id = m_post.root_id;\n\t\t\tXKit.interface.add_control_button(this, \"disable_gifs_button\", \"data-root_id=\\\"\" + this_id + \"\\\"\");\n\n\t\t});\n\n\t},\n\n\ton_click: function(e) {\n\n\t\tvar obj = e.target || e.srcElement;\n\t\tvar parent = $(obj).parentsUntil(\"#posts\");\n\n\t\t$(parent).toggleClass(\"xkit-disable-gifs-playing\");\n\n\n\t\tif ($(parent).hasClass(\"xkit-disable-gifs-playing\")) {\n\t\t\tXKit.interface.completed_control_button(obj, true);\n\t\t\t$(parent).find(\".image, .image_thumbnail, .photoset_photo img\").css(\"display\", \"block\");\n\t\t\t$(parent).find(\".xkit-disable-gifs-canvas-container\").css(\"display\", \"none\");\n\t\t} else {\n\t\t\tXKit.interface.completed_control_button(obj, false);\n\t\t\t$(parent).find(\".image, .image_thumbnail, .photoset_photo img\").css(\"display\", \"none\");\n\t\t\t$(parent).find(\".xkit-disable-gifs-canvas-container\").css(\"display\", \"block\");\n\t\t}\n\n\t},\n\n\tdestroy: function() {\n\t\t$('.xkit-paused-gif, .xkit-gif-label').remove();\n\t\t$('.xkit-disabled-gif').removeClass('xkit-disabled-gif');\n\t\tXKit.tools.remove_css(\"disable_gifs\");\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNEVGRjI5NzNBQkYxMUUzOEU0MkZBNUQ5QjU5M0FBOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNEVGRjI5NjNBQkYxMUUzOEU0MkZBNUQ5QjU5M0FBOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZCN0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Uek0cwAAAPtJREFUeNpi/L6agaaAiYFh1IIBtoCFgXHUB+RYwBH4nxjNP9Yz0tgHjMT4AI8DN+A0gCPgPzXigJEaPmDErQiP1M9NjPgVkOYDdl+iAuTnZkZqBxER6kmw4OdWnErZvf/jsoAJJIqJ4BZg4wKNYxRwwqceCTGBCgtMBHGX138gQpQmSLJs1nsZBdzQ1GM1Cq8P0AIKVZbNaicxPsAeBz93MWK3AAn8OZ+O0ylkFhVIKv9cyPj7ZhZxFjCxEl20Q1X+3MuGzMVUgOYDASLNZ3f+RciLAliLCm5qFf1YjWL8eUCD1hUOK60tYKe1BWyjFhCo0ZhYhnYkAwQYAB9LJMlalcSTAAAAAElFTkSuQmCC","css":".xkit-disable-gifs-canvas-thumbnail {\n\tmax-width: 100%;\n\tposition: relative;\n}\n\n.post.post_full.is_photo { visibility: hidden !important; }\n.post.disable-gifs-checked.post_full.is_photo { visibility: visible !important; }\n\n.post.disable-gifs-checked.post_full.is_photo.xkit-disable-gifs-completely { display: none !important; }\n\n.xkit-disable-gifs-completely { display: none !important; }\n\n.xkit-disable-gifs-canvas-container {\n\tposition: relative;\n}\n\n.xkit-disable-gifs-canvas-thumbnail.enlarged-canvas {\n\twidth: 100%;\n}\n\n.xkit-disable-gifs-indicator {\n\tposition: absolute;\n\ttop: 50%; left: 50%;\n\tmargin-left: -19px;\n\tmargin-top: -19px;\n\tz-index: 10;\n\tpointer-events: none;\n}\n","title":"Disable Gifs","description":"Stops GIFs on dashboard","developer":"new-xkit","version":"1.0.0","details":"This is a very early preview version of an extension that allows you to stop the GIFs from playing on your dashboard. If you still would like to view them, you can click on the Play button on the post. Please note that for now, this extension can't stop GIFs added to text posts.","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/disable_search.json b/Extensions/dist/disable_search.json new file mode 100644 index 000000000..ef5d67ff5 --- /dev/null +++ b/Extensions/dist/disable_search.json @@ -0,0 +1 @@ +{"id":"disable_search","script":"//* TITLE Classic Search **//\n//* VERSION 2.0.2 **//\n//* DESCRIPTION Get the old search back **//\n//* DETAILS This is a very simple extension that simply redirects your search requests to the old Tumblr tag search pages. Note that features of the new search page, such as multiple tag search will not work when this extension is enabled. **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.disable_search = {\n\n\trunning: false,\n\n\tpreferences: {\n\t\t\"sep0\": {\n\t\t\ttext: \"Search Results\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"open_in_new_tab\": {\n\t\t\ttext: \"Open search results in a new tab\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\n\n\trun: function() {\n\n\t\tthis.running = true;\n\n\t\tif (!XKit.interface.is_tumblr_page()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (XKit.page.react) {\n\t\t\tconst $search = $('form[role=\"search\"][action=\"/search\"]');\n\t\t\tconst $input = $search.find('input');\n\t\t\tconst $tagged = $search.clone();\n\n\t\t\t$search.hide();\n\t\t\t$search.after($tagged);\n\n\t\t\t$input.before($input.clone());\n\n\t\t\t$tagged.addClass(\"xkit-classic-search\");\n\t\t\t$tagged.find('input').replaceWith($input);\n\t\t\t$tagged.on(\"keydown\", event => event.stopPropagation());\n\t\t\t$tagged.on(\"submit\", event => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\tconst query = event.target.querySelector('input').value;\n\t\t\t\tconst address = `//www.tumblr.com/tagged/${query}`;\n\n\t\t\t\tif (XKit.extensions.disable_search.preferences.open_in_new_tab.value) {\n\t\t\t\t\twindow.open(address);\n\t\t\t\t} else {\n\t\t\t\t\tlocation.assign(address);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn;\n\t\t}\n\n\t\t$('#search_form').on('submit', XKit.extensions.disable_search.do);\n\n\t\tvar search_result_click_handler = function(e) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tif (XKit.extensions.disable_search.preferences.open_in_new_tab.value) {\n\t\t\t\twindow.open(e.currentTarget.href);\n\t\t\t} else {\n\t\t\t\tdocument.location = e.currentTarget.href;\n\t\t\t}\n\t\t};\n\n\t\tvar mo = new MutationObserver(function(mutations) {\n\t\t\tmutations.forEach(function(mutation) {\n\t\t\t\tif (mutation.target.className === 'scrollable_container'\n\t\t\t\t\t&& mutation.addedNodes.length > 0) {\n\t\t\t\t\tfor (var i = 0; i < mutation.addedNodes.length; i++) {\n\t\t\t\t\t\tvar links_to_change = $(mutation.addedNodes[i]).find('.search_typeahead');\n\t\t\t\t\t\tfor (var j = 0; j < links_to_change.length; j++) {\n\t\t\t\t\t\t\t$(links_to_change[j]).off('click');\n\t\t\t\t\t\t\t$(links_to_change[j]).on('click', search_result_click_handler);\n\t\t\t\t\t\t\t$(links_to_change[j]).attr('href', $(links_to_change[j]).attr('href')\n\t\t\t\t\t\t\t\t.replace('/search/', '/tagged/'));\n\t\t\t\t\t\t\tif (XKit.extensions.disable_search.preferences.open_in_new_tab.value) {\n\t\t\t\t\t\t\t\t$(links_to_change[j]).attr('target', '_blank');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tmo.observe($('#search_results_container')[0], {childList: true, subtree: true});\n\n\t},\n\n\tdo: function(e) {\n\n\t\te.preventDefault(); //prevent form from submitting\n\t\tvar query = $(\"#search_query\").val();\n\t\tquery = encodeURIComponent(query).replace(/%20/g, '+').replace(/_/g, '-');\n\n\t\tvar url = \"http://www.tumblr.com/tagged/\" + query;\n\n\t\tif (XKit.extensions.disable_search.preferences.open_in_new_tab.value) {\n\t\t\twindow.open(url);\n\t\t} else {\n\t\t\tdocument.location = url;\n\t\t}\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\t$('#search_form').off('submit', XKit.extensions.disable_search.do);\n\t\t$('form[role=\"search\"][action=\"//www.tumblr.com/search\"]').show();\n\t\t$('.xkit-classic-search').remove();\n\t}\n\n};\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NTY1ODZDMDM4QzQxMUUzQTFDQUFDOThEMTlDRUY3OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NTY1ODZCRjM4QzQxMUUzQTFDQUFDOThEMTlDRUY3OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZCN0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MHc+egAAA7NJREFUeNpi/BrKQFPAxMAwagF+wEJYCTcDs7wDhPn34QGGr6RawIhbzj6ZxSuPSUEPWfDfg0t/tk36c3AukRYwfo3AFnByhmxZC5nkdXFp+/fw8q9p8f8enSfCgkhM0004avcwcPMT0Pr1449ml3+PzhCyIAqVz8XB0XaTUVQOGujXjvzZMeXv2ZUQLrOmO0tQDbOWDdyO7wUS/7/9wJuKmBmQEWtQH9z0X0uqfnbY/n9yjjWkgy1jGZD8/+4eUOTXrCxY/POzxs5FMwENMX6NQ3I+pzDnjDcQ9p9Dy3/NjWJxq2KLbkV20a/ZOX+OTGUN6GQNLIOI/CjW/PfmBm4fMDHAEbMJLEK+ffq9opBJ3gZi+u8NPT87fP/smgVks6VOYeQW/7O7D6gGaoRxMLIhaIiFkRE5eqHJ5s+57Qw/XrLYNoOi4fzOP5tKQSnn1hYGbgFGERlGMc3/jw4A1bDYhIMiRsPm7x7caZ2RiRURRPB0+e4pUJxRXgdkwc3jcDV/5sdAVQJF3j2FxwSyIRgZjYkDORHBaCawOJjLxAhXwyhrzsAlwPDm4f+3N0Bq4LpQDEGPAxY4+v/4OswgLTAXFHXMhh5wBewl69mLVzPKGYK4wjJQM75/QjYEDQExwnf/nkETA7OB228eyb8H5rA4JzCrmjNkrfp7YTezZRADJw/D9y//7h5h4JFkMXCH5pU7pxhwBxEw6bDD0b8rOxm+f4ZIsMZN/P/h0e8lVUATmfVc2OI6QTZ9//JrcQXDz88sIc0MXLwQlf8v70Y2BA2BPQIHPz/9ObCYxROUj4CG/o+Z9GdZ0b+7J5hULBmFpP//+Pzv0s7/7x6weFWwWARBo/3khv8fHqMYglZUfC9URxHg4GfLWsQkAxX89+Tm38NL/17eyfDjI1AKaBOzXQyziglC/ffPP6cm/n92BbcFxdroQpLa7FlzQcFNJPj+5ee05P/PrxJORdC09PLmjw6vv3fP4zcUwebkATqIUVofaypi/F5ugjMBKJkxW4cza9shC/69eujf9UN/r+5nS53BJKWK4o/ZWf+fXUcPjx9VloQDQVCKUUDy/48vDM9vIjmcjzVpCpOUCoodc3NR1IAsqLUlv0bn4GVNnMQkqYwQ+fH1Z5snWj5gIR/9/v57UfG/53cRAXjjKJoaJjy5nCj069vvJWX/X9wDmX5xz5/NPeiR/KPViwqtH3YeRgnl/w8vYitNmVmpYMGfn/+fXMNqFDikaNuyY2SmsQUsbDS1ACDAAHFXUgQGOTnxAAAAAElFTkSuQmCC","title":"Classic Search","description":"Get the old search back","developer":"new-xkit","version":"2.0.2","details":"This is a very simple extension that simply redirects your search requests to the old Tumblr tag search pages. Note that features of the new search page, such as multiple tag search will not work when this extension is enabled.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/dont_stretch_photosets.json b/Extensions/dist/dont_stretch_photosets.json new file mode 100644 index 000000000..0ba0f8285 --- /dev/null +++ b/Extensions/dist/dont_stretch_photosets.json @@ -0,0 +1 @@ +{"id":"dont_stretch_photosets","script":"//* TITLE Don't stretch photosets **//\n//* VERSION 1.0.1 **//\n//* DESCRIPTION Don't allow images in photosets to be stretched past their “natural” length. **//\n//* DEVELOPER 9999years **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.dont_stretch_photosets = new Object({\n\trunning: false,\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tXKit.tools.init_css(\"dont_stretch_photosets\");\n\t},\n\n\tdestroy: function() {\n\t\tXKit.tools.remove_css(\"dont_stretch_photosets\");\n\t\tthis.running = false;\n\t}\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","css":".post_full.is_photo .post_media_photo,\n.post_full.is_photoset .photoset .photoset_row,\n.post_full.is_photo .photoset .photoset_row,\n.post_full.is_photoset .photoset .photoset_row img {\n width: initial !important;\n height: initial !important;\n max-width: 100% !important;\n margin-left: auto !important;\n margin-right: auto !important;\n}\n","title":"Don't stretch photosets","description":"Don't allow images in photosets to be stretched past their “natural” length.","developer":"9999years","version":"1.0.1","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/drafts_plus.json b/Extensions/dist/drafts_plus.json new file mode 100644 index 000000000..a0c8ff356 --- /dev/null +++ b/Extensions/dist/drafts_plus.json @@ -0,0 +1 @@ +{"id":"drafts_plus","script":"//* TITLE Drafts+ **//\n//* VERSION 0.2.7 **//\n//* DESCRIPTION Enhancements for Drafts page **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.drafts_plus = new Object({\n\n\trunning: false,\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (XKit.interface.where().drafts !== true) {return; }\n\n\t\tXKit.tools.init_css(\"drafts_plus\");\n\n\t\tXKit.interface.sidebar.add({\n\t\t\tid: \"drafts_plus_sidebar\",\n\t\t\ttitle: \"Drafts Tools\",\n\t\t\titems: [\n\t\t\t\t{ id: \"drafts_plus_mass_edit_button\", text: \"Mass Edit Mode\" },\n\t\t\t\t{ id: \"xshrinkposts_button\", text: \"Shrink Posts\", count: \"off\" }\n\t\t\t]\n\t\t});\n\n\t\t$(\"#drafts_plus_mass_edit_button\").click(function() {\n\n\t\t\tif (!$(this).parent().hasClass(\"xkit-selected\")) {\n\n\t\t\t\t$(this).parent().addClass(\"xkit-selected\");\n\t\t\t\t$(this).parent().addClass(\"selected\");\n\t\t\t\tXKit.extensions.drafts_plus.start_mass_editor();\n\n\t\t\t} else {\n\n\t\t\t\t$(this).parent().removeClass(\"xkit-selected\");\n\t\t\t\t$(this).parent().removeClass(\"selected\");\n\t\t\t\tXKit.extensions.drafts_plus.stop_mass_editor();\n\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\n\t\t$(\"#xshrinkposts_button\").click(function() {\n\n\t\t\t$(this).toggleClass(\"xkit-queue-option-button-on\");\n\n\t\t\tif ($(this).hasClass(\"xkit-queue-option-button-on\")) {\n\n\t\t\t\t$(this).find(\".count\").html(\"on\");\n\n\t\t\t\tXKit.storage.set(\"shuffle_queue\", \"shrink_posts\", \"true\");\n\n\t\t\t\tXKit.tools.add_css(\" .post_header { display: none; } .post .post_content_inner, .post .post_media { height: 70px !important; overflow: hidden !important; } .post .post_content { pointer-events: none !important; height: 70px !important; overflow: hidden !important; border: 1px dashed rgb(200,200,200); } \", \"shuffle_queue_mini_posts\");\n\n\t\t\t} else {\n\n\t\t\t\t$(this).find(\".count\").html(\"off\");\n\n\t\t\t\tXKit.storage.set(\"shuffle_queue\", \"shrink_posts\", \"false\");\n\n\t\t\t\tXKit.tools.remove_css(\"shuffle_queue_mini_posts\");\n\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\n\t},\n\n\tstart_mass_editor: function() {\n\n\t\tXKit.tools.add_css(\" #posts { padding: 0 !important; margin: 0 !important; } .xtimestamp { display: none; } .post_controls { display: none; }\" +\n\t\t\t\t\" .post:not(.radar):last-child { display: block; } #left_column { min-height: 120%; } \" +\n\t\t\t\t\" .post_full.is_note .avatar, #new_post_hidden { display: none; } \" +\n\t\t\t\t\" #posts.posts>.post_container { margin-bottom: 0; } \" +\n\t\t\t\t\" .post .post_source, .post.is_video, .post.is_audio { display: none; } \" +\n\t\t\t\t\" .post .post_footer, .post .post_permalink { display: none !important; } \" +\n\t\t\t\t\" .post .tumblr_video_container, .post .tumblr_video_container * { max-width: 164px !important; max-height: 164px !important; } \" +\n\t\t\t\t\" .post .photoset_row { max-width: 164px; height: auto; } \" +\n\t\t\t\t\" .post .post_content img { max-height: 164px; max-width: 164px; height: auto; } \" +\n\t\t\t\t\" .post { -moz-user-select: none; user-select: none; -webkit-user-select: none; float: left !important; width: 200px !important; height: 200px !important; \" +\n\t\t\t\t\" opacity: 0.53; \" +\n\t\t\t\t\" display: inline-block !important; clear: none !important; overflow: hidden !important; \" +\n\t\t\t\t\" margin: 0px 4px 8px 4px !important; } \" +\n\t\t\t\t\" .fan_mail { display: none !important; } \" +\n\t\t\t\t\" #xkit_delete_selected:hover { background: rgba(255,255,255,0.12); cursor: pointer; } \" +\n\t\t\t\t\" #xkit_delete_selected.disabled { opacity: 0.5; cursor: default; \" +\n\t\t\t\t\" background: rgba(255,255,255,0.08) !important; top: 0 !important; } \" +\n\t\t\t\t\" #xkit_delete_selected:active { background: rgba(0,0,0,0.12); \" +\n\t\t\t\t\" box-shadow: inset 0px 1px 2px rgba(0,0,0,0.43); position: relative; top: 1px; } \" +\n\t\t\t\t\" #xkit_delete_selected { border: 1px solid rgba(0,0,0,0.32); border-radius: 6px; \" +\n\t\t\t\t\" box-shadow: inset 0px 1px 0px rgba(255,255,255,0.12), 0px 1px 0px rgba(255,255,255,0.12); \" +\n\t\t\t\t\" padding: 5px 15px; background: rgba(255,255,255,0.08); display: inline-block; margin-top: 5px;} \" +\n\t\t\t\t\" .post:not(.radar) * { pointer-events: none; cursor: default; } \" +\n\t\t\t\t\" .post.xpost-selected { opacity: 1; } \" +\n\t\t\t\t\" .post.xpost-working { animation: xpost-working-ani 1s infinite; \" +\n\t\t\t\t\" -webkit-animation: xpost-working-ani 1s infinite; \" +\n\t\t\t\t\" -webkit-animation: xpost-working-ani 1s infinite; } \" +\n\t\t\t\t\" @-moz-keyframes xpost-working-ani { from { opacity: 1; } 50% { opacity: 0.32; } to { opacity: 1; } } \" +\n\t\t\t\t\" @-webkit-keyframes xpost-working-ani { from { opacity: 1; } 50% { opacity: 0.32; } to { opacity: 1; } } \", \"drafts_plus_mass_editor\");\n\n\t\t$(\"#new_post_buttons\").attr(\"id\", \"new_post_hidden\");\n\n\t\tXKit.tools.add_function(function() {\n\n\t\t\ttry {\n\n\t\t\t\tif (typeof Tumblr === \"undefined\") {\n\t\t\t\t\twindow.top.Tumblr.AutoPaginator.stop();\n\t\t\t\t\twindow.top.Tumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t\t\t} else {\n\t\t\t\t\tTumblr.AutoPaginator.stop();\n\t\t\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t\t\t}\n\n\t\t\t} catch (e) {\n\n\t\t\t\tconsole.log(\"Drafts Plus ==2==> !!! \" + e.message);\n\n\t\t\t}\n\n\t\t}, true, \"\");\n\n\t\t$(window).scroll(XKit.extensions.drafts_plus.scrolled);\n\n\t\tXKit.extensions.drafts_plus.add_overlays();\n\t\tXKit.extensions.drafts_plus.load_posts();\n\n\t},\n\n\tscroller_working: false,\n\tcurrent_page: 1,\n\n\tadd_overlays: function() {\n\n\t\tconsole.log(\"drafts_plus -> Adding overlays...\");\n\n\t\t$(\".posts .post\").not(\".drafts-plus-overlay-done\").not(\".radar\").each(function() {\n\n\t\t\t$(this).addClass(\"drafts-plus-overlay-done\");\n\n\t\t\tvar m_html = \"
    \" +\n\t\t\t\t\t\t\"
    \" +\n\t\t\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\t\"
    \" +\n\t\t\t\t\t\"
    \";\n\n\t\t\t$(this).append(m_html);\n\n\t\t});\n\n\t\t$(\".xkit-drafts-plus-delete, .xkit-drafts-plus-edit, .xkit-drafts-plus-publish, .xkit-drafts-plus-queue\").unbind(\"click\");\n\n\t\t$(\".xkit-drafts-plus-queue\").bind(\"click\", function() {\n\n\t\t\tvar m_parent = $(this).parentsUntil('.post').parent();\n\n\t\t\t$(m_parent).addClass(\"xpost-working\");\n\n\t\t\tvar post_id = $(m_parent).attr('data-post-id');\n\n\t\t\tvar m_object = {};\n\n\t\t\tm_object.post_id = post_id;\n\t\t\tm_object.form_key = XKit.interface.form_key();\n\t\t\tm_object.queue = \"queue\";\n\n\t\t\tGM_xmlhttpRequest({\n\t\t\t\tmethod: \"POST\",\n\t\t\t\turl: \"http://www.tumblr.com/publish\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/x-www-form-urlencoded\"\n\t\t\t\t},\n\t\t\t\tdata: $.param({\"id\": m_object.post_id, \"form_key\" : m_object.form_key, \"queue\":\"queue\"}),\n\t\t\t\tjson: false,\n\t\t\t\tonerror: function(response) {\n\t\t\t\t\tXKit.window.show(\"Can't delete post.\", \"Drafts+ could not perform the requested action. There might be a problem with Tumblr servers, please try again later.\", \"error\", \"
    OK
    \");\n\t\t\t\t},\n\t\t\t\tonload: function(response) {\n\t\t\t\t\t$(m_parent).fadeOut('slow', function() { $(m_parent).parent().remove(); });\n\t\t\t\t}\n\t\t\t});\n\n\t\t});\n\n\t\t$(\".xkit-drafts-plus-edit\").bind(\"click\", function() {\n\n\t\t\tvar m_parent = $(this).parentsUntil('.post').parent();\n\n\t\t\tvar post_id = $(m_parent).attr('data-post-id');\n\n\t\t\twindow.open(\"http://www.tumblr.com/edit/\" + post_id);\n\n\t\t});\n\n\t\t$(\".xkit-drafts-plus-publish\").bind(\"click\", function() {\n\n\t\t\tvar m_parent = $(this).parentsUntil('.post').parent();\n\n\t\t\t$(m_parent).addClass(\"xpost-working\");\n\n\t\t\tvar post_id = $(m_parent).attr('data-post-id');\n\n\t\t\tvar m_object = {};\n\n\t\t\tm_object.post_id = post_id;\n\t\t\tm_object.form_key = XKit.interface.form_key();\n\t\t\tm_object.queue = \"queue\";\n\n\t\t\tGM_xmlhttpRequest({\n\t\t\t\tmethod: \"POST\",\n\t\t\t\turl: \"http://www.tumblr.com/publish\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/x-www-form-urlencoded\"\n\t\t\t\t},\n\t\t\t\tdata: $.param({\"id\": m_object.post_id, \"form_key\" : m_object.form_key}),\n\t\t\t\tjson: false,\n\t\t\t\tonerror: function(response) {\n\t\t\t\t\tXKit.window.show(\"Can't delete post.\", \"Drafts+ could not perform the requested. There might be a problem with Tumblr servers, please try again later.\", \"error\", \"
    OK
    \");\n\t\t\t\t},\n\t\t\t\tonload: function(response) {\n\t\t\t\t\t$(m_parent).fadeOut('slow', function() { $(m_parent).parent().remove(); });\n\t\t\t\t}\n\t\t\t});\n\n\t\t});\n\n\t\t$(\".xkit-drafts-plus-delete\").bind(\"click\", function() {\n\n\t\t\tvar m_parent = $(this).parentsUntil('.post').parent();\n\n\t\t\t$(m_parent).addClass(\"xpost-working\");\n\n\t\t\tvar post_id = $(m_parent).attr('data-post-id');\n\n\t\t\tvar m_object = {};\n\n\t\t\tvar m_array = document.location.href.split(\"/\");\n\t\t\tvar m_channel_id = m_array[4];\n\n\t\t\tm_object.post_id = post_id;\n\t\t\tm_object.form_key = XKit.interface.form_key();\n\t\t\tm_object.channel_id = m_channel_id;\n\n\t\t\tGM_xmlhttpRequest({\n\t\t\t\tmethod: \"POST\",\n\t\t\t\turl: \"http://www.tumblr.com/svc/post/delete\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/x-www-form-urlencoded\",\n\t\t\t\t\t\"X-tumblr-form-key\": XKit.interface.form_key(),\n\t\t\t\t},\n\t\t\t\tdata: $.param({\"post_id\": m_object.post_id, \"channel_id\" : m_object.channel_id }),\n\t\t\t\tjson: false,\n\t\t\t\tonerror: function(response) {\n\t\t\t\t\tXKit.window.show(\"Can't delete post.\", \"Drafts+ could not perform the requested. There might be a problem with Tumblr servers, please try again later.\", \"error\", \"
    OK
    \");\n\t\t\t\t},\n\t\t\t\tonload: function(response) {\n\t\t\t\t\t$(m_parent).fadeOut('slow', function() { $(m_parent).parent().remove(); });\n\t\t\t\t}\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\tscrolled: function() {\n\n\t\tif ($(window).scrollTop() + $(window).height() == $(document).height()) {\n\n\t\t\tXKit.extensions.drafts_plus.load_posts();\n\n\t\t}\n\n\t},\n\n\tload_posts: function() {\n\n\t\tfunction __trigger_load() {\n\n\t\t\ttry {\n\n\t\t\t\tif (typeof Tumblr === \"undefined\") {\n\t\t\t\t\twindow.top.Tumblr.Events.trigger(\"posts:load\");\n\t\t\t\t\twindow.top.Tumblr.AudioPlayer.update_all();\n\t\t\t\t\twindow.top.Tumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t\t\t} else {\n\t\t\t\t\tTumblr.Events.trigger(\"posts:load\");\n\t\t\t\t\tTumblr.AudioPlayer.update_all();\n\t\t\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t\t\t}\n\n\t\t\t} catch (e) {\n\n\t\t\t\tconsole.log(\"Drafts Plus ==2==> !!! \" + e.message);\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tif (XKit.extensions.drafts_plus.scroller_working === true) { return; }\n\n\t\tXKit.extensions.drafts_plus.scroller_working = true;\n\t\tXKit.extensions.drafts_plus.current_page++;\n\n\t\tvar last_id = $(\"#posts\").find(\"li.post_container\").last().find(\".post\").attr('data-post-id');\n\n\t\tvar m_url = document.location.href.replace(\"#\", \"\");\n\n\t\t// http://www.tumblr.com/blog/xenix/drafts/after/\n\n\t\tm_url = m_url + \"/after/\" + last_id;\n\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: m_url,\n\t\t\tonerror: function(response) {\n\t\t\t\tXKit.extensions.drafts_plus.scroller_working = false;\n\t\t\t\t$(\"#auto_pagination_loader_failure\").css(\"display\", \"block\");\n\t\t\t\t$(\"#auto_pagination_loader_loading\").css(\"display\", \"none\");\n\n\t\t\t},\n\t\t\tonload: function(response) {\n\t\t\t\tXKit.extensions.drafts_plus.scroller_working = false;\n\t\t\t\tvar new_posts = $(\"#posts\", response.responseText).html();\n\t\t\t\t// console.log(new_posts);\n\t\t\t\ttry {\n\t\t\t\t\t$(\"ol#posts\").append(new_posts);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.log(\"Drafts Plus ==3==> !!! \" + e.message);\n\t\t\t\t}\n\t\t\t\t$(\"#auto_pagination_loader_failure\").css(\"display\", \"none\");\n\t\t\t\t$(\"#auto_pagination_loader_loading\").css(\"display\", \"block\");\n\n\t\t\t\tXKit.extensions.drafts_plus.add_overlays();\n\t\t\t\ttry {\n\t\t\t\t\tXKit.tools.add_function(__trigger_load, true, \"\");\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.log(\"Drafts+: \" + e.message);\n\t\t\t\t}\n\n\t\t\t}\n\t\t});\n\n\t},\n\n\tstop_mass_editor: function() {\n\n\t\tXKit.tools.remove_css(\"drafts_plus_mass_editor\");\n\t\t$(\".posts .post\").removeClass(\"drafts-plus-overlay-done\");\n\t\t$(\".xkit-drafts-plus-overlay\").remove();\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.interface.sidebar.remove(\"drafts_plus_sidebar\");\n\t\tXKit.extensions.drafts_plus.stop_mass_editor();\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExOEE2REFBMEI0RDEyNThDRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2MjRFNUEwRTExOTYxMUUzODA1QkYzQThDQUE5QTlCQiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2MjRFNUEwRDExOTYxMUUzODA1QkYzQThDQUE5QTlCQiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY3N0YxMTc0MDcyMDY4MTE4QTZEQUEwQjREMTI1OENFIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4QTZEQUEwQjREMTI1OENFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LRi/0QAAAxRJREFUeNqcls1qFEEQx6tnZmc/xllnRrKJqEGJoqIJgooHwRcQBQ968AEEX0AQ8RQ1eNC7r+HFa0B9Cj0oQi5Cvtysm53+sKfno7une3azFsPQmXR+VfXvquog8g6AQmZILPiblevcGEhD+hcEmlEwzSug6q//g25D852McQcVHRm7GTTa0egkc1DbQRvQavhmxsxCp+Lx5AFMoU8XiukfSzoPn9A8A9ScqaqGIxBMyYPpLsWPKp1oZ2DGjow8mP7dOLYavczAWl7P61/whi0/5W9NOqY87SkVaVj3BZJcOpvOF87silQspSzzYcs4p2s+WJ7BTOlNHy/rO3IiFcR8zRcYsseZi271wYl5yRMkHqdAY6GSZ6c3uMGv662R0zm0Eh0TwGlB1x3Mopt1dbgu6YXoE4nmT0pqGZiNOtWoI480I07EWqFjrZPBGNSzTKWTiUTLDHDVyTndOWrsavFgHZ3S7Bg4mmdwEF/16vS5HKRFXRZ0UshSvAH2Lz5x5CCb15iiOCdi8abSx97yo/biBUdGPVf4YmcReIVWjvcgvkauPI6iyJGDd0565gAJOpX0VKg0bkej68+iOInj2LFfBnQ2PTsDo+r52R62/P0br8ITi0mS9Ho9RN4q+iCLg2wMVK00KdsVip5KS3GyBYFfe+Df+xAurSwsLHB9Wq2WU0xdZm9gO53W6VjQv2/D04/QP3l+MBhwuudlJYrIRuP1JEdYPt8nypgsHaRldX76Bu+/ooOJVHBra0v8X2TeiDY6L3mTnhfozl9Y34TPP+wTRh92TL+eqBxkxUnWpCfw5Se82US/R40lWErEtMuP1OjVBFYc/Akv7Z19CKdu9ft9rvja2pqqjC2DGp1pdNmxFLaT27vLD5zB5WNBwOlBEHS73aYMPDV8Vt6rlT6cWN3gIx/thHf3l++78ZnjQRCGIS/zTqfDqwUh1OzAoFd3E1+MXNjt3NmJbo6TVQgG7XY76XZ5yBzt+76KrilTlyinjx0YuqeH/srYjYbBuWF/FfeW2sLCToe/fWGc67rulKhV+yfAAHmTz1TEQ6ZcAAAAAElFTkSuQmCC","css":".xkit-drafts-plus-overlay {\n\tposition: absolute;\n\ttop: 0; left: 0;\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: none;\n\tbackground: rgba(0,0,0,0.75);\n\tz-index: 1000000;\n\tborder-radius: 4px;\n}\n\n.post:hover {\n\topacity: 1;\n}\n\n.post:hover .xkit-drafts-plus-overlay {\n\tdisplay: block;\n}\n\n.post.xpost-working:hover .xkit-drafts-plus-overlay { display: none; }\n\n.post:hover .xkit-drafts-plus-overlay .xkit-drafts-plus-overlay-inner {\n\n\twidth: 100%;\n\theight: 50px;\n\tposition: absolute;\n\ttop: 50%; margin-top: -25px;\n\ttext-align: center;\n\tz-index: 2000000;\n\n}\n\n.xkit-drafts-plus-delete,\n.xkit-drafts-plus-edit,\n.xkit-drafts-plus-queue,\n.xkit-drafts-plus-publish {\n\n\tdisplay: inline-block;\n\twidth: 36px; height: 36px;\n\tbackground: transparent 50% 50% no-repeat;\n\topacity: 0.6; margin-top: 8px;\n\tcursor: pointer;\n\tpointer-events: auto !important;\n\n}\n\n.xkit-drafts-plus-delete:hover,\n.xkit-drafts-plus-edit:hover,\n.xkit-drafts-plus-queue:hover,\n.xkit-drafts-plus-publish:hover {\n\n\tpointer-events: auto !important;\n\topacity: 1;\n\tcursor: pointer !important;\n\n}\n\n.xkit-drafts-plus-delete:active,\n.xkit-drafts-plus-edit:active,\n.xkit-drafts-plus-queue:active,\n.xkit-drafts-plus-publish:active {\n\n\tposition: relative; top: 1;\n\topacity: 0.7;\n\n}\n\n.xkit-drafts-plus-delete {\n\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RURENTI1NzMxMTdEMTFFMzgwNUJGM0E4Q0FBOUE5QkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RURENTI1NzQxMTdEMTFFMzgwNUJGM0E4Q0FBOUE5QkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFREQ1MjU3MTExN0QxMUUzODA1QkYzQThDQUE5QTlCQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFREQ1MjU3MjExN0QxMUUzODA1QkYzQThDQUE5QTlCQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqXEVHQAAADySURBVHjatFXNCsIwDF7d9CL4BAqexQfw/R/CbuJFNncR/JkexKk1hxRC3GyiLvCxZClfv6YlMc65qAvrRR1ZIlzXdCyjJXb/2CzRKvmlxltUo0UZIl59KTINEdMFB5bbsXhPfKshnrHcgsVzjWJaij7gSOI78St2+SrFY0DRUtMC896yEPEGcCXEpYD4DMhDxE9SDqniVNor/LEmXAmxHPNvZfhErFW8lBJbJbHVKp7ixXgbEv+C+cZSmJZGPwKcyNv17/UGGKD/AMSAGjesJYorbEa8Aw6IH+N3zUlDE0TajDLtaMqExLbpp+lqmL4EGAD0MlIJjK2cGwAAAABJRU5ErkJggg==);\n\n}\n\n.xkit-drafts-plus-edit {\n\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkUxRjlBOUUxMTkyMTFFMzgwNUJGM0E4Q0FBOUE5QkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkUxRjlBOUYxMTkyMTFFMzgwNUJGM0E4Q0FBOUE5QkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCRTFGOUE5QzExOTIxMUUzODA1QkYzQThDQUE5QTlCQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCRTFGOUE5RDExOTIxMUUzODA1QkYzQThDQUE5QTlCQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnG3Sl8AAAEZSURBVHjazJW9DgFBFEZNtOgURNReQu0dPALvQoJdGiHolWqtUiQKGiFBTSISMb7hTjIZs8z4iy85zd65Z+/ObmYZ5zz0jbAPiRmogCnwr1eE+E3EcDV+yxkUrsNSMQa64MjtMgZp6g2DnlIT8qIUd7h9BiBKk5ZAziD3pXhPFxIOj++BNdhpcl/U5UIZF+kCZMESHBQ5U/fYVsxoIimdKb1lda2L+JHUl5O6ikVT3VbqIhZ7uiXpXFnvkTT1ijhJtRNYGaRxMHlFnDd8y57y+CNTr424oUmr2p4ae+UhxJXDRE8fbMCQWGt1Y6+N+Fl+K9bPirTjkZmhvl3Qy2vy99IMEotjsE13dolY3wKRoK/ib/95d7kIMACjSoGtFeGvSwAAAABJRU5ErkJggg==);\n\n}\n\n.xkit-drafts-plus-queue {\n\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkUxRjlBQTIxMTkyMTFFMzgwNUJGM0E4Q0FBOUE5QkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkUxRjlBQTMxMTkyMTFFMzgwNUJGM0E4Q0FBOUE5QkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCRTFGOUFBMDExOTIxMUUzODA1QkYzQThDQUE5QTlCQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCRTFGOUFBMTExOTIxMUUzODA1QkYzQThDQUE5QTlCQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhfjeQkAAAFHSURBVHja1JW9SgNBFIUzQUFSiq1NqliIPoAYC7NvYOsbWNha+CAigggi+g7ZJv6AglZaaKzsBDEaUGMxfgN3Ydnc2ZkIKXLgK/buzOHuLPeMsdZWxqFqZUwqMzaQwB48QB8G0JVaS9bockeh0IBLG9aFrB3y0EzX4NPG6wOaIeMF6NvR9S57VWMDV5FGT9LlW652Lh5DxskIHbZgGX4L9UQz3lcMBkrtCKbhVnl3qBk/FxZ9S1cHudorzMGu50vuNeNid+4zt+XdljxvwiL8eIx7McaZjqEm3bsjuCk5+y/NuFuy4Q7qsBP4qY+Z31RuCNtQ9wzoElxDLRARbS0rTgObZmEmsOZMywoTmQ8+dXwDko10758j3QiFUFOCJVaukdWYdMtiM40wTX2xaQJX0zpswArMu18CL9CBE0i9t8TE3Xl/AgwAPYhxKV9JlNUAAAAASUVORK5CYII=);\n\n}\n\n.xkit-drafts-plus-publish {\n\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjI0RTVBMDUxMTk2MTFFMzgwNUJGM0E4Q0FBOUE5QkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjI0RTVBMDYxMTk2MTFFMzgwNUJGM0E4Q0FBOUE5QkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCRTFGOUFBNDExOTIxMUUzODA1QkYzQThDQUE5QTlCQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2MjRFNUEwNDExOTYxMUUzODA1QkYzQThDQUE5QTlCQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoXXOcoAAAFPSURBVHjaYvr//z8DLTATA40APoMZgdgNiGcB8XUg/gLEv4D4LlTMFaoGO8DhFQ0gPv6fMDgGVYthBjZDHYD483/iwScgticUxppAvAWIeUgITl4g3gjVizWMQeE1H4i5cRiwH4gv4JDjB+I5KGGO5Hw3Al5WAWJLAmrcsAVFGB7vVgLxHSA+DsTT8aiLxubiezhccR6ImZHUCQHxKxxqr2FzsQwOV6QA8V8k/jsgLsOhVpqYDAICfUB8Fov4AiA+gkWcDZ4SwIkZAkA5SolATgSHHh41oHhQRXfxPioUEfuwBcUqKhi8GpvBe4D4BB5N/wkEw1Eg3ovNYJCmJCD+RIZLP0JTz39cqQJUPPoB8WcSDP0E1XODUHl8EIjNgPgAEYaC1JgD8SGMJISU3LABFyAOBWIbIJaFevUJNA2vgBZM2NMmAYNpUjVRBAACDAAo7rO6+jOXMQAAAABJRU5ErkJggg==);\n\n}\n","title":"Drafts+","description":"Enhancements for Drafts page","developer":"STUDIOXENIX","version":"0.2.7","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/editable_reblogs.json b/Extensions/dist/editable_reblogs.json new file mode 100644 index 000000000..ef08644d2 --- /dev/null +++ b/Extensions/dist/editable_reblogs.json @@ -0,0 +1 @@ +{"id":"editable_reblogs","script":"//* TITLE Editable Reblogs **//\n//* VERSION 3.3.14 **//\n//* DESCRIPTION Restores ability to edit previous reblogs of a post **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.editable_reblogs = new Object({\n\n\trunning: false,\n\tstate: undefined,\n\tpost_types: {\n\t\tPUBLISH: 0,\n\t\tQUEUE: 1,\n\t\tDRAFT: 2,\n\t\tPRIVATE: 3,\n\t\tSCHEDULE: 4\n\t},\n\n\tselected_post_type: \"PUBLISH\",\n\tscheduled_date: \"Next Tuesday, 10am\",\n\tpost_date_metadata: null,\n\tpost_slug_metadata: null,\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tXKit.interface.post_window_listener.add(\"editable_reblogs\", this.post_window.bind(this));\n\t\tXKit.tools.init_css(\"editable_reblogs\");\n\t\tthis.create_post_button_click_handler = this.make_post.bind(this);\n\n\t\t// DOM nodes containing options disappear before a handler can be run\n\t\tvar record_post_settings_handler = this.record_post_settings.bind(this);\n\t\t$(\"body\").on(\"click\", record_post_settings_handler);\n\n\t\tvar post_setting_keyup_handlers = {};\n\t\t$.each({\"#customUrl_input\": \"post_slug_metadata\", \"#postDate_input\": \"post_date_metadata\"},\n\t\t\tfunction(selector, property) {\n\t\t\t\tpost_setting_keyup_handlers[selector] = function() {\n\t\t\t\t\tXKit.extensions.editable_reblogs[property] = $(this).val();\n\t\t\t\t};\n\n\t\t\t\t$('body').on(\"keyup\", selector, post_setting_keyup_handlers[selector]);\n\t\t\t}\n\t\t);\n\n\t\tthis.teardown_event_handlers = function() {\n\t\t\t$(\"body\").off(\"click\", \".create_post_button\", this.create_post_button_click_handler);\n\t\t\t$(\"body\").off(\"click\", record_post_settings_handler);\n\t\t\t$.each(post_setting_keyup_handlers, function(selector, handler) {\n\t\t\t\t$('body').off(\"keyup\", selector, handler);\n\t\t\t});\n\t\t};\n\t},\n\n\tpost_window: function() {\n\t\tthis.state = \"initial\";\n\t\t$(\"body\").off(\"click\", \".create_post_button\", this.create_post_button_click_handler);\n\n\t\tif (!this.reblog_tree_exists()) {\n\t\t\tXKit.interface.post_window.set_content_html(this.wrap_html_links(XKit.interface.post_window.get_content_html()));\n\t\t\treturn;\n\t\t}\n\n\t\t//also just let chat, link, and quote posts do what they do\n\t\tvar post_type = XKit.interface.post_window.post_type();\n\t\tif (post_type.chat || post_type.quote) {\n\t\t\treturn;\n\t\t}\n\t\tvar has_displayed_ER_warning = XKit.storage.get('editable_reblogs', 'has_displayed_ER_warning', '');\n\t\tif (!has_displayed_ER_warning) {\n\t\t\tXKit.window.show('Editable Reblogs Warning',\n\t\t\t\t\"WARNING: Editable Reblogs no longer preserves Tumblr's reblog \" +\n\t\t\t\t\"structure due to changes on Tumblr's side. Any posts reblogged \" +\n\t\t\t\t\"with Editable Reblogs will display the entire reblog tree as a \" +\n\t\t\t\t\"single blockquoted post.

    \" +\n\t\t\t\t\"The XKit team deeply apologizes for any inconvenience this causes, \" +\n\t\t\t\t\"and we're working to restore the original functionality, \" +\n\t\t\t\t\"but Tumblr's updates are in this case beyond our control.

    \" +\n\t\t\t\t\"As always, this extension can be disabled at any time from the XKit preferences panel.\",\n\t\t\t\t'error', '
    OK
    ');\n\t\t\t$(\".xkit-er-ack-blockquotes\").click(function() {\n\t\t\t\tXKit.storage.set('editable_reblogs', 'has_displayed_ER_warning', 'true');\n\t\t\t});\n\t\t}\n\t\t//disable on pages that don't include reblog_key and post_id in the URL\n\t\t//for now until we've refactored more effectively\n\t\tvar location_path = window.location.pathname;\n\t\tvar location_items = location_path.split(\"/\");\n\t\tlocation_items.shift();\n\n\t\tif (XKit.page.form_frame) {\n\t\t\tlocation_items = location_items.slice(2);\n\t\t}\n\n\t\tif (location_items[0] != \"reblog\" && location_items[0] != \"edit\") {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.initialize_selected_post_type();\n\t\tthis.scheduled_date = \"Next Tuesday, 10am\";\n\t\tthis.load_initial_metadata();\n\t\tvar element = this.add_edit_button();\n\t\t$(element).one('click', function() {\n\t\t\tthis.edit_the_reblogs();\n\t\t\t$(element).addClass('disabled');\n\t\t}.bind(this));\n\t},\n\n\tadd_edit_button: function() {\n\t\tvar post_margin = $(\".post-form .post-margin\");\n\t\tpost_margin.append(\n\t\t\t'
    '\n\t\t);\n\n\t\tif (!XKit.storage.get('editable_reblogs', 'has_dismissed_button_callout', '')) {\n\t\t\tpost_margin.append(\n\t\t\t\t'
    ' +\n\t\t\t\t '
    Editable Reblogs
    ' +\n\t\t\t\t '
    click this button to trim or edit this post
    ' +\n\t\t\t\t'
    '\n\t\t\t);\n\n\t\t\t$('.xkit-er-callout--container').delay(800).slideDown(800);\n\t\t\t$('.post-form .editor').one('keyup', function() {\n\t\t\t\t$('.xkit-er-callout--container').delay(2000).slideUp(800);\n\t\t\t});\n\n\t\t\t$(\".xkit-er-edit-button\").click(function() {\n\t\t\t\tXKit.storage.set('editable_reblogs', 'has_dismissed_button_callout', 'true');\n\t\t\t\t$('.xkit-er-callout--container').slideUp(800);\n\t\t\t});\n\t\t\t$('.xkit-er-callout--container').click(function() {\n\t\t\t\tXKit.storage.set('editable_reblogs', 'has_dismissed_button_callout', 'true');\n\t\t\t\t$('.xkit-er-callout--container').slideUp(800);\n\t\t\t});\n\t\t}\n\n\t\treturn $('.xkit-er-edit-button')[0];\n\t},\n\n\tedit_the_reblogs: function() {\n\t\ttry {\n\t\t\tvar save_button = $('.post-form--save-button [data-js-clickablesave]');\n\t\t\t// Prevent Tumblr's event handler from acting on the save button\n\t\t\tsave_button.removeAttr(\"data-js-clickablesave\");\n\t\t\t$(\"body\").on(\"click\", \".create_post_button\", this.create_post_button_click_handler);\n\t\t\tthis.process_reblog_content();\n\t\t\tthis.state = \"success\";\n\t\t} catch (e) {\n\t\t\tconsole.error(e);\n\n\t\t\tthis.get_post_save_button().attr(\"data-js-clickablesave\", \"\");\n\n\t\t\tif (!e.hide_popup) {\n\t\t\t\tvar github_url = XKit.tools.github_issue(\"Editable Reblogs \" + this.state + \" error\",\n\t\t\t\t\t{ state: this.state, \"ER Version\": XKit.installed.get(\"editable_reblogs\").version },\n\t\t\t\te);\n\n\t\t\t\tXKit.window.show('Editable Reblogs Error', 'ERROR: Editable Reblogs failed to proccess some part of your post safely. ' +\n\t\t\t\t\t'Therefore, it has been disabled to prevent unintentional side-effects that could potentially corrupt the post. ' +\n\t\t\t\t\t(!e.hide_url ? '

    You can report this issue on Github by clicking here' : ''),\n\t\t\t\t\t'error', '
    OK
    ');\n\t\t\t}\n\t\t}\n\t},\n\n\tload_initial_metadata: function() {\n\t\t//if this is an edit, we need to load the custom date and slug metadata if there is any\n\t\t//so we can maintain it if they don't change anything\n\t\tthis.state = \"metadata\";\n\t\tthis.post_date_metadata = \"\";\n\t\tthis.post_slug_metadata = \"\";\n\t\tvar location_path = window.location.pathname;\n\t\tvar location_items = location_path.split(\"/\");\n\t\tlocation_items.shift();\n\n\t\tif (XKit.page.form_frame) {\n\t\t\tlocation_items = location_items.slice(2);\n\t\t}\n\n\t\tif (location_items[0] != \"edit\") {\n\t\t\treturn;\n\t\t}\n\n\t\tvar post_fetch_request = {\n\t\t\tid: location_items[1],\n\t\t\tform_key: XKit.interface.form_key(),\n\t\t\tpost_type: false\n\t\t};\n\n\t\tXKit.interface.fetch(post_fetch_request, function(response) {\n\t\t\tthis.post_date_metadata = response.data.post.date;\n\t\t\tthis.post_slug_metadata = response.data.post.slug;\n\t\t\tif (response.data.post.is_private === 1) {\n\t\t\t\tthis.selected_post_type = \"PRIVATE\";\n\t\t\t}\n\t\t}.bind(this));\n\t},\n\n\tget_post_save_button: function() {\n\t\treturn $('.post-form--save-button button');\n\t},\n\n\twrap_html_links: function(html_text) {\n\t\tvar nodes = $($.parseHTML(html_text));\n\t\tnodes.find('a').wrap('');\n\t\tvar nodes_text = $('
    ').append(nodes.clone()).html();\n\t\treturn nodes_text;\n\t},\n\n\tprocess_reblog_content: function() {\n\t\tthis.state = 'processing reblog content';\n\n\t\tconst $reblog_items = $('.post-form .reblog-list-item');\n\t\tlet trail_data = [];\n\n\t\t$reblog_items.each(function() {\n\t\t\tconst $this = $(this);\n\t\t\ttrail_data.push({\n\t\t\t\turl: $this.find('.reblog-tumblelog-name').attr('href') || '',\n\t\t\t\tauthor: $this.find('.reblog-tumblelog-name').text() || '',\n\t\t\t\tcontent: $this.find('.reblog-content').html() || ''\n\t\t\t});\n\t\t});\n\n\t\tthis.state = 'processing trail data';\n\n\t\tlet converted_trail = '';\n\t\tlet old_content = '';\n\n\t\tconst reblog_title = $reblog_items.first().find('.reblog-title').text();\n\t\tif (reblog_title) {\n\t\t\tconverted_trail = `

    ${reblog_title}

    `;\n\t\t}\n\n\t\ttrail_data.forEach(({url, author, content}) => {\n\t\t\tconverted_trail = `

    ${author.trim()}\\u200B:

    \\n
    ${converted_trail}${content}
    `;\n\t\t});\n\n\t\ttry {\n\t\t\told_content = XKit.interface.post_window.get_content_html();\n\t\t} catch (e) {\n\t\t\tXKit.window.show('Invalid editor type', 'ERROR: Editable Reblogs cannot currently get content from your default editor type. ' +\n\t\t\t\t'To continue using editable reblogs, click here ' +\n\t\t\t\t'to edit your dashboard settings to use the rich text editor or HTML editor',\n\t\t\t\t'error', \"
    OK
    \");\n\t\t\tvar error = new Error(\"Editor Type\");\n\t\t\terror.hide_popup = true;\n\t\t\tthrow error;\n\t\t}\n\n\t\tconverted_trail += old_content;\n\n\t\tthis.state = \"mutation\";\n\n\t\tXKit.interface.post_window.set_content_html(converted_trail);\n\n\t\t$(\".btn-remove-trail .icon\").click();\n\t\t$(\".control-reblog-trail\").hide();\n\t},\n\n\treblog_tree_exists: function() {\n\t\t//if we don't have a reblog tree to edit, gtfo\n\t\t//this also applies to new posts\n\t\t//which saves us from worrying about things like photo replies\n\t\treturn $(\".post-form .reblog-list\").length !== 0;\n\t},\n\n\tinitialize_selected_post_type: function() {\n\t\tvar where = XKit.interface.where();\n\t\tif (where.dashboard) {\n\t\t\tthis.selected_post_type = \"PUBLISH\";\n\t\t} else if (where.drafts) {\n\t\t\tthis.selected_post_type = \"DRAFT\";\n\t\t} else if (where.queue) {\n\t\t\tthis.selected_post_type = \"QUEUE\";\n\t\t}\n\t},\n\n\trecord_post_settings: function(e) {\n\t\tvar post_dropdown_exists = $(e.target).parents(\".popover--save-post-dropdown\").length > 0;\n\t\tif (post_dropdown_exists) {\n\t\t\tvar clicked_li = e.target.tagName !== \"LI\" ? e.target.parentNode : e.target;\n\t\t\tfor (var i = 0; i < clicked_li.attributes.length; i++) {\n\t\t\t\t// looking for attribute like \"data-js-publish\" and \"data-js-draft\"\n\t\t\t\tvar attribute = clicked_li.attributes[i].name;\n\t\t\t\tif (attribute.startsWith(\"data-js-\") && !attribute.endsWith(\"preview\")) {\n\t\t\t\t\tvar type = attribute.substring(8).toUpperCase();\n\t\t\t\t\tthis.selected_post_type = type;\n\n\t\t\t\t\tif (type === \"SCHEDULE\") {\n\t\t\t\t\t\t$(\"[data-js-scheduletext]\").off(\"blur\");\n\t\t\t\t\t\t$(\"[data-js-scheduletext]\").on(\"blur\", this.update_scheduled_date.bind(this));\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tupdate_scheduled_date: function(e) {\n\t\tthis.scheduled_date = e.target.value;\n\t},\n\n\tmake_post: function(event) {\n\t\tif (!this.reblog_tree_exists() || this.state != \"success\") {\n\t\t\tXKit.interface.post_window.set_content_html(this.wrap_html_links(XKit.interface.post_window.get_content_html()));\n\t\t\tthis.get_post_save_button().attr(\"data-js-clickablesave\", '');\n\t\t\tthis.get_post_save_button().click();\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tvar post_types = this.post_types;\n\t\t\tswitch (post_types[this.selected_post_type]) {\n\t\t\t\tcase post_types.PUBLISH:\n\t\t\t\t\tthis.send_post_request(event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase post_types.QUEUE:\n\t\t\t\t\tthis.send_queue_request(event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase post_types.DRAFT:\n\t\t\t\t\tthis.send_draft_request(event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase post_types.PRIVATE:\n\t\t\t\t\tthis.send_private_request(event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase post_types.SCHEDULE:\n\t\t\t\t\tthis.send_schedule_request(event);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.state = \"finished\";\n\t\t} catch (e) {\n\t\t\tconsole.error(e);\n\n\t\t\tvar github_url = XKit.tools.github_issue(\"Editable Reblogs post error\",\n\t\t\t\t{ state: this.state, \"ER Version\": XKit.installed.get(\"editable_reblogs\").version },\n\t\t\te);\n\n\t\t\tXKit.window.show('Editable Reblogs Error',\n\t\t\t\t\"ERROR: Editable Reblogs failed to process some part of your post, and it wasn't posted. \" +\n\t\t\t\t\"Try removing images or media and trying again.\" +\n\t\t\t\t(!e.hide_url ? '

    You can report this issue on Github by clicking here' : ''),\n\t\t\t\t'error', '
    OK
    ');\n\t\t}\n\t},\n\n\tsend_post_request: function(e) {\n\t\te.preventDefault();\n\t\tvar request = this.build_svc_request();\n\t\trequest[\"post[state]\"] = \"0\";\n\t\tthis.send_request(request);\n\t},\n\n\tsend_queue_request: function(e) {\n\t\te.preventDefault();\n\t\tvar request = this.build_svc_request();\n\t\trequest[\"post[state]\"] = \"2\";\n\t\tthis.send_request(request);\n\t},\n\n\tsend_draft_request: function(e) {\n\t\te.preventDefault();\n\t\tvar request = this.build_svc_request();\n\t\trequest[\"post[state]\"] = \"1\";\n\t\tthis.send_request(request);\n\t},\n\n\tsend_private_request: function(e) {\n\t\te.preventDefault();\n\t\tvar request = this.build_svc_request();\n\t\trequest[\"post[state]\"] = \"private\";\n\t\tthis.send_request(request);\n\t},\n\n\tsend_schedule_request: function(e) {\n\t\te.preventDefault();\n\t\tvar request = this.build_svc_request();\n\t\trequest[\"post[state]\"] = \"on.2\";\n\t\trequest[\"post[publish_on]\"] = this.scheduled_date;\n\t\tthis.send_request(request);\n\t},\n\n\tbuild_svc_request: function() {\n\t\tvar post_type = XKit.interface.post_window.post_type();\n\t\tvar request = this.build_common_svc_request();\n\t\tif (post_type.text) {\n\t\t\trequest[\"post[type]\"] = \"regular\";\n\t\t\t//@TODO make title editable\n\t\t\trequest[\"post[one]\"] = $('.post-form--header .reblog-title').text();\n\t\t}\n\t\tif (post_type.photo) {\n\t\t\trequest[\"post[type]\"] = \"photo\";\n\t\t}\n\t\tif (post_type.video) {\n\t\t\trequest[\"post[type]\"] = \"video\";\n\t\t}\n\t\tif (post_type.note) {\n\t\t\trequest[\"post[type]\"] = \"note\";\n\t\t\trequest[\"post[three]\"] = request[\"post[two]\"];\n\t\t\trequest[\"post[two]\"] = \"\";\n\t\t}\n\t\tif (post_type.audio) {\n\t\t\trequest[\"post[type]\"] = \"audio\";\n\t\t}\n\t\tif (post_type.link) {\n\t\t\trequest[\"post[type]\"] = \"link\";\n\t\t\trequest[\"post[three]\"] = request[\"post[two]\"];\n\t\t\trequest[\"post[two]\"] = \"\";\n\t\t}\n\t\treturn request;\n\t},\n\n\tbuild_common_svc_request: function() {\n\t\tvar request = {};\n\t\tvar location_path = window.location.pathname;\n\t\tvar location_items = location_path.split(\"/\");\n\t\tlocation_items.shift();\n\n\t\tif (XKit.page.form_frame) {\n\t\t\tlocation_items = location_items.slice(2);\n\t\t}\n\n\t\trequest.form_key = XKit.interface.form_key();\n\t\trequest.channel_id = $('.post-form--header .tumblelog-select .caption').text();\n\t\trequest.detached = true; //?\n\t\trequest.reblog = location_items[0] === \"reblog\";\n\n\t\tif (location_items[0] === \"reblog\") {\n\t\t\trequest.reblog_id = location_items[1];\n\t\t}\n\t\tif (location_items[0] === \"edit\") {\n\t\t\trequest.post_id = location_items[1];\n\t\t}\n\n\t\trequest.reblog_key = location_items[2];\n\t\trequest.errors = false;\n\t\trequest.silent = false;\n\t\trequest.context_id = \"\";\n\t\tif (location_items[0] === \"reblog\") {\n\t\t\trequest.reblog_post_id = location_items[1];\n\t\t}\n\t\tif (location_items[0] === \"edit\") {\n\t\t\trequest.edit_post_id = location_items[1];\n\t\t}\n\n\t\trequest.remove_reblog_tree = true;\n\t\trequest[\"is_rich_text[one]\"] = \"0\";\n\t\trequest[\"is_rich_text[two]\"] = \"1\";\n\t\trequest[\"is_rich_text[three]\"] = \"0\";\n\t\trequest[\"post[slug]\"] = this.post_slug_metadata;\n\t\trequest[\"post[draft_status]\"] = \"\";\n\t\trequest[\"post[date]\"] = this.post_date_metadata;\n\n\t\trequest[\"post[tags]\"] = $.map($('.post-form--footer .tag-label'), function(element, index) {\n\t\t\treturn $(element).text();\n\t\t}).join(\",\");\n\n\t\tvar html_data = this.parse_html(XKit.interface.post_window.get_content_html());\n\t\trequest[\"post[two]\"] = this.wrap_html_links(html_data);\n\n\t\tif ($('.post-forms--social-buttons .social-button.twitter').hasClass('checked')) {\n\t\t\trequest.send_to_twitter = \"on\";\n\t\t}\n\t\tif ($('.post-forms--social-buttons .social-button.facebook').hasClass('checked')) {\n\t\t\trequest.send_to_fbog = \"on\";\n\t\t}\n\t\t//@TODO maybe we can do this in the future\n\t\trequest.custom_tweet = false;\n\n\t\treturn request;\n\t},\n\n\tparse_html: function(data) {\n\n\t\tvar text = XKit.interface.post_window.get_content_html();\n\n\t\tvar nodes = $('
    ').append(text);\n\t\tnodes.find('.tmblr-truncated').replaceWith('[[MORE]]');\n\t\tXKit.extensions.editable_reblogs.format_video_media(nodes);\n\n\t\t// tumblr_blog must be wrapped in single quotes,\n\t\t// not double, or the dash will nom the shit out of your post\n\t\t//********ALL DOM MANIPULATION ABOVE THIS LINE*********\n\t\ttext = nodes.html();\n\t\t// text = text.replace(/['\"]tumblr_blog['\"]/g, \"tumblr_blog tumblr_blog\");\n\n\t\t// also remove empty HTML if the user hasn't added anything\n\t\tif (text.indexOf(\"


    \", text.length - 11) !== -1) {\n\t\t\ttext = text.substring(0, text.length - 11);\n\t\t}\n\t\treturn text;\n\t},\n\n\tformat_video_media: function(nodes) {\n\t\t// parse items embedded in the current post\n\t\tvar embeds = nodes.find('.media-holder');\n\t\t$.each(embeds, function(index, value) {\n\t\t\tvar element = $(value);\n\t\t\telement.find('.media-killer').remove();\n\t\t\telement.find('.media-mover').remove();\n\t\t\telement.find('.thumbnail-preview').remove();\n\t\t\tvar figure = element.find('figure');\n\t\t\tif (!figure.find('iframe').length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfigure.removeClass('tmblr-embed-placeholder')\n\t\t\t\t\t.removeClass('embed-thumbnail-preview')\n\t\t\t\t\t.addClass('tmblr-embed')\n\t\t\t\t\t.removeAttr('data-embed-code')\n\t\t\t\t\t.unwrap();\n\t\t});\n\t\t// parse items embedded in earlier reblogs\n\t\tvar figures = nodes.find('figure.tmblr-embed');\n\t\t$.each(figures, function(index, value) {\n\t\t\tvar figure = $(value);\n\t\t\tvar iframe = figure.find('iframe');\n\t\t\tif (!iframe.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!iframe.is('[data-src]')) {\n\t\t\t\tvar src = iframe.attr('src');\n\t\t\t\tiframe.attr('data-src', src);\n\t\t\t}\n\t\t\tif (!figure.is('[data-orig-height]')) {\n\t\t\t\tvar height = iframe.attr('height');\n\t\t\t\tfigure.attr('data-orig-height', height);\n\t\t\t}\n\t\t\tif (!figure.is('[data-orig-width]')) {\n\t\t\t\tvar width = iframe.attr('width');\n\t\t\t\tfigure.attr('data-orig-width', width);\n\t\t\t}\n\t\t\tif (!figure.is('[data-url]')) {\n\t\t\t\tvar tumblrSource = iframe.attr('data-src');\n\t\t\t\tvar embedId = iframe.attr('id');\n\t\t\t\tvar segments = tumblrSource.split('/');\n\t\t\t\tvar url = segments[6].replace('#' + embedId, '');\n\t\t\t\tfigure.attr('data-url', url);\n\t\t\t}\n\t\t\tif (!figure.is('[data-provider]')) {\n\t\t\t\t//it doesn't seem to matter what this value is as long as it exists\n\t\t\t\tfigure.attr('data-provider', 'youtube');\n\t\t\t}\n\t\t});\n\t},\n\n\tsend_request: function(request) {\n\t\tXKit.interface.kitty.get(function(kitty_data) {\n\n\t\t\tXKit.tools.Nx_XHR({\n\t\t\t\tmethod: \"POST\",\n\t\t\t\turl: \"https://www.tumblr.com/svc/post/update\",\n\t\t\t\tdata: JSON.stringify(request),\n\t\t\t\tjson: true,\n\t\t\t\theaders: {\n\t\t\t\t\t\"X-tumblr-puppies\": kitty_data.kitten,\n\t\t\t\t\t\"X-tumblr-form-key\": XKit.interface.form_key(),\n\t\t\t\t},\n\n\t\t\t\tonerror: function(response) {\n\t\t\t\t\tXKit.interface.kitty.set(\"\");\n\n\t\t\t\t\tvar github_url = XKit.tools.github_issue(\"Editable Reblogs posting error\",\n\t\t\t\t\t\t{ \"ER Version\": XKit.installed.get(\"editable_reblogs\").version,\n\t\t\t\t\t\t user: request.channel_id, body: request[\"post[two]\"]}, {stack: response});\n\n\t\t\t\t\tXKit.window.show(\"Error\",\n\t\t\t\t\t\t\"Error: XER-SR.

    There was an error reblogging your post. Please try again shortly. \" +\n\t\t\t\t\t\t'

    ' +\n\t\t\t\t\t\t'You can report this issue on Github by clicking here',\n\t\t\t\t\t\t\"error\",\n\t\t\t\t\t\t'
    OK
    ');\n\n\t\t\t\t\tconsole.error(\"editable_reblogs.send_request:\\n\", response);\n\t\t\t\t},\n\n\t\t\t\tonload: function(response) {\n\t\t\t\t\tvar redirect_url = XKit.tools.getParameterByName(\"redirect_to\");\n\t\t\t\t\tXKit.tools.add_function(function() {\n\t\t\t\t\t\tTumblr.Events.trigger(\"postForms:saved\");\n\t\t\t\t\t\tvar redirect_url = add_tag; // eslint-disable-line no-shadow\n\t\t\t\t\t\tif (redirect_url !== \"\") {\n\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\twindow.location.replace(redirect_url);\n\t\t\t\t\t\t\t}, 500);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, true, redirect_url);\n\t\t\t\t}\n\t\t\t});\n\n\t\t});\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.tools.remove_css(\"editable_reblogs_remove_content_tree\");\n\t\tthis.teardown_event_handlers();\n\t\tXKit.interface.post_window_listener.remove(\"editable_reblogs\");\n\t}\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAA4VBMVEUAAAAAAQEBAgICBAQCBQYDBggEBwkHDRAHDhIIEBQIEBUJEhYKFhALFRoLFRsMGRUNGSAPIRgQHycYLzsYNScbNkMcNkQcN0UdOEYdOEceOkgfPUwfPU0gPk0gPk4gP08hQFAiQlMjTTgjTTkkTjktV20tWG4yYXoyYns4bIg7co9Bfp9Bj2lEhKZFhqdFh6lFh6pHiq1JjrJJj7NMlLpNlbtNlrtNlrxNl7pNl7tNmLpOmLlQpKpQpalRpqZRpqdRp6VSqaNSsoNTr5tTsJpTsZhTsZlUspdUsphWu4lWvIqrAtY3AAABFklEQVR42qXQa1OCQBiG4cdKOtn5bEmaZklaZi5v27kgi/3/PygY9l1g02Gm7m/wXMPsAippCpBlYCJLgGIxE6hPWQTfyooFA/W7txIQ+DZ4pCzeC4DyIJRkg/c80Ltodg14sf/ka7yfotLV4Inonmi0Pw9ua0DjPaBynoJ4/yI6gGn3Q7R6iWhoICeKqIqhuUbkLjmxaIgU+KGKAaD3BxV1Vr2Vhd5YpGfwA5UEKF3UrnnrQIuv+awYmL0f78n3p34hOqv1N3jXZwjyZ3AXvTXAFdcZIBlm4AZzy8l+u8kgFQZcAMlO22CQCgOOATQFPxpA5s3OyeWQaAbg/giqGOT2Kzg2qKNY3QajQwdZztEdg5L+D34AmZvHFbsM2NwAAAAASUVORK5CYII=\n","css":".post-form--header .reblog-title {\n\tmargin: 10px; color: #444;\n}\n\n.xkit-er-edit-button {\n display: block;\n position: relative;\n width: 28px;\n height: 28px;\n float: right;\n margin-right: 21px;\n margin-top: 21px;\n border: 3px solid #ddd;\n border-radius: 50%;\n color: #ddd;\n}\n\n.xkit-er-edit-button.icon_edit_pencil:before {\n\tfont-size: 25px;\n\tpadding-left: 1px;\n\tpadding-top: 1px;\n}\n\n.xkit-er-edit-button.icon_edit_pencil:not(.disabled):hover {\n\tborder-color: white;\n\tcolor: white;\n\tcursor: pointer;\n}\n\n.xkit-er-edit-button.disabled {\n border-color: #999;\n color: #999;\n}\n\n.xkit-er-callout--container {\n position: relative;\n left: -86px;\n width: 135px;\n background: white;\n display: none;\n top: -35px;\n float: right;\n line-height: 21px;\n -webkit-user-select: none;\n -moz-user-select: none;\n}\n\n.xkit-er-callout--header {\n\tdisplay: block;\n\tfont-size: 14px;\n\tfont-weight: bold;\n\tbackground: #2E7D32;\n\tpadding: 9px;\n\tcolor: white;\n}\n\n.xkit-er-callout--body {\n\tpadding: 9px;\n\tdisplay: block;\n\tfont-size: 13px;\n}\n\n.xkit-er-callout--container:before {\n\tdisplay: inline-block;\n\tposition: absolute;\n\tcontent: '';\n\tright: -20px;\n\ttop: 0px;\n\twidth: 0;\n\theight: 0;\n\tborder-top: 0px solid transparent;\n\tborder-bottom: 20px solid transparent;\n\tborder-left: 20px solid #2E7D32;\n}\n","title":"Editable Reblogs","description":"Restores ability to edit previous reblogs of a post","developer":"new-xkit","version":"3.3.14","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/estufars_sidebar_fix.json b/Extensions/dist/estufars_sidebar_fix.json new file mode 100644 index 000000000..cd9a54ed2 --- /dev/null +++ b/Extensions/dist/estufars_sidebar_fix.json @@ -0,0 +1 @@ +{"id":"estufars_sidebar_fix","script":"//* TITLE Old Sidebar **//\n//* VERSION 1.2.3 **//\n//* DESCRIPTION Get the sidebar back **//\n//* DEVELOPER estufar **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.estufars_sidebar_fix = new Object({\n\n\trunning: false,\n\n\tdone: false,\n\n\tpreferences: {\n\t\t\"dashonly\": {\n\t\t\ttext: \"Only run on the dashboard\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tvar version = XKit.tools.parse_version(XKit.version);\n\t\tif (XKit.browser().firefox && version.major === 7 && version.minor < 8) {\n\t\t\tconsole.warn(\"Refusing to run Old Sidebar on pre-58 Firefox due to pinned-target bug\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (XKit.extensions.estufars_sidebar_fix.preferences.dashonly.value) {\n\t\t\tif (document.location.href.indexOf('://www.tumblr.com/dashboard') === -1) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\tvar disallowedurls = [\n\t\t\t\t\"://www.tumblr.com/explore\",\n\t\t\t\t\"://www.tumblr.com/search\",\n\t\t\t\t\"://www.tumblr.com/following\",\n\t\t\t\t\"/reblog\",\n\t\t\t\t\"://www.tumblr.com/help\",\n\t\t\t\t\"://www.tumblr.com/support\",\n\t\t\t\t\"://www.tumblr.com/docs\",\n\t\t\t\t\"://www.tumblr.com/developers\",\n\t\t\t\t\"://www.tumblr.com/about\",\n\t\t\t\t\"://www.tumblr.com/themes\",\n\t\t\t\t\"://www.tumblr.com/policy\",\n\t\t\t\t\"://www.tumblr.com/jobs\",\n\t\t\t\t\"://www.tumblr.com/apps\",\n\t\t\t\t\"://www.tumblr.com/logo\",\n\t\t\t\t\"://www.tumblr.com/business\",\n\t\t\t\t\"://www.tumblr.com/buttons\",\n\t\t\t\t\"://www.tumblr.com/press\",\n\t\t\t\t\"://www.tumblr.com/security\"\n\t\t\t];\n\t\t\tfor (var i = 0; i < disallowedurls.length; i++) {\n\t\t\t\tif (document.location.href.indexOf(disallowedurls[i]) !== -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tXKit.tools.init_css(\"estufars_sidebar_fix\");\n\n\t\tfunction movesidebar() {\n\t\t\tvar popover = $(\".popover--account-popover\")[0];\n\t\t\tvar sidebar = document.getElementById(\"right_column\");\n\t\t\tpopover.childNodes[0].classList.add(\"estufars_sidebar_fix\");\n\t\t\tsidebar.insertBefore(popover.childNodes[0], sidebar.firstChild);\n\t\t\tvar account = document.getElementById(\"account_button\");\n\t\t\taccount.style.display = \"none\";\n\t\t\t// wait and then let tumblr know the menu is no longer active\n\t\t\twindow.setTimeout(function() {\n\t\t\t\tdocument.querySelector(\".tab_nav_account.active\").click();\n\t\t\t}, 250);\n\t\t}\n\n\t\tif (!$(\".popover--account-popover\").length) {\n\t\t\tvar observer = new MutationObserver(function(mutations) {\n\t\t\t\tmutations.forEach(function(mutation) {\n\t\t\t\t\tvar popover = $(\".popover--account-popover\")[0];\n\t\t\t\t\tif (mutation.addedNodes[0] == popover) {\n\t\t\t\t\t\tobserver.disconnect();\n\t\t\t\t\t\tmovesidebar();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t\tobserver.observe(document.body, {childList: true});\n\t\t\tvar account = document.getElementById(\"account_button\");\n\t\t\taccount.click();\n\t\t} else {\n\t\t\tmovesidebar();\n\t\t}\n\n\t\tthis.done = true;\n\t},\n\n\tdestroy: function() {\n\t\tXKit.tools.remove_css(\"estufars_sidebar_fix\");\n\t\tthis.running = false;\n\t\tif (!this.done) { return; }\n\t\tthis.done = false;\n\t\tvar account = document.getElementById(\"account_button\");\n\t\tvar sidebar = document.getElementsByClassName(\"estufars_sidebar_fix\")[0];\n\t\taccount.style.display = \"inline-block\";\n\t\tvar popover = $(\".popover--account-popover\")[0];\n\t\tpopover.insertBefore(sidebar, popover.firstChild);\n\t\taccount.click();\n\t\tpopover.style.opacity = \"0\";\n\t\tpopover.style.display = \"block\";\n\t\taccount.click();\n\t\twindow.setTimeout(function() {\n\t\t\tpopover.style.opacity = \"1\";\n\t\t}, 500);\n\t}\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAL8SURBVHjatFbJkRRBDFRqyg1wgPdGYAM81xTemIAp+9tYJzCA4LEfHAAPRClTqu6BYKY+9ERPH1WtIyWlhPefX+x/HgOwyBsYr7xANzy4aIh8E1qfG7gtkO/1r51Af7Aeh5lzWz629PWl5Sp3ozWm9OAeSCtKbe4sa3r/NCkGUgLoRy54mYPenitR0rHOTx/ePT68+RcsT19/fHn5JrnOP4TnrTmML9KXeUJ2oF6hD8cN6fN4fHirjdPNYRJn7STlxAJiWS4olzN3D5ermBAtx3UThYvcWOGTpoXc3aPNHlJlJ7in6fPnygIZ3VnDuG7pmHYr/qM1VZp4ylZmVCqli6nET3nrGw6klITIXBoq56RGWuO4OlMuYN5peTcGc1OiMJwfW4mXsDjL4D6a3b7GRhTcU/o8h13obwRUDJXoKEmMyzQiDtyBzSAzcplFsSLQVIFAi0qXFHUTXEdR35RPu6fZozQRY2NciLeFlATzhmlLAomNAFcd6PPRFTHvRRqsr2Du0FSik3JpkrzZ8MCd2M4gXzwaI4leNYfmofIxSFXTotiqA1Xt9IAuNAdjUeeRSQvyqPqI7UJ2xoD4o0m2v1883QHKpfPLe0GWzSPvOrdVfIUGKuJB5UV9yYMB38tSVz+gByKFjGVl02JWU+7Q9i6RvSALj1loQFnLr09N78yCR5e0Pca+VHEqyMyPo8y6DVdVoTFE9zRsBZnuDxYEuqMzdYsgBN6f/L5HdUlGMk2FhgY8FjTFsUtis5TbVldTH0sPsuSOIcP+qoMz9Wj42Cq0Ls7syW2ZVQhrxqj6Q+si+27XwSKIIeK21W4KjnJLKe9HR7pOrw2URoMdODigZyx0Fwq7Cvh2HZAsciICGHTORawxTUFcZH9F1WM/Pr/+vCH9+fUX6Tr9x8en7+e1uJpKC//jJFmXM3GGLeyaII/ht1tx5aQfA4omVmcMxOK+ooRuRT3I9ni6xttmtNE8IHuObdaEdEylmvgYkZLIQSk6BUqOqDFqKPktwACwoUhAKRqCTgAAAABJRU5ErkJggg==","css":".popover--account-popover {\n\tdisplay: none;\n}\n\n.right_column:after {\n\tbackground: none!important;\n}\n\n.right_column .popover_menu {\n\twidth: auto!important;\n\tbox-shadow: none!important;\n\tbackground: transparent!important;\n\tz-index: 0;\n\tposition: static;\n}\n\n.right_column .popover .popover_inner_list .selected:not(.popover_menu_sublist) {\n\tbackground-color: transparent!important;\n}\n\n.right_column .popover_inner {\n\tborder-radius: 0!important;\n\tbox-shadow: none!important;\n\tpadding: 0!important;\n\tbackground: transparent!important;\n}\n\n.right_column .popover_header {\n\tborder-radius: 0;\n\tbackground: transparent;\n\tcolor: rgba(255,255,255,.3);\n\tpadding: 0 10px;\n\tborder-bottom: 1px solid rgba(255,255,255,.13);\n\tfont-size: 12px;\n}\n\n.right_column .popover_header:not(:first-child) {\n\tpadding-top: 18px;\n}\n\n.right_column .popover_menu_item:hover {\n\tbackground-color: transparent;\n}\n\n.right_column .popover_menu_item_anchor:hover, .right_column .popover_menu_list .popover_menu_sublist .blog-sub-nav-item:hover, .right_column .blog-list-item:hover {\n\tbackground-color: #3c4b61!important;\n\tbackground-color: rgba(255,255,255,.05)!important;\n\tbox-shadow: none!important;\n}\n\n.right_column .blog-list-item:hover .blog-list-item-info-name {\n\tcolor: rgba(255,255,255,.5)!important;\n}\n\n.right_column .popover_menu_item a, .right_column .blog-sub-nav-item-label {\n\tcolor: rgba(255,255,255,.5)!important;\n\tpadding-left: 0;\n}\n\n.right_column .popover_item_suffix, .right_column .blog-sub-nav-item-data, .right_column .blog-list-item-info-title {\n\tcolor: rgba(255,255,255,.3)!important;\n}\n\n.right_column .popover .selected:not(.popover_menu_sublist) {\n\tbackground-color: rgba(255,255,255,.08)!important;\n\tbox-shadow: none!important;\n}\n\n.right_column .popover_menu_item_blog {\n\tpadding: 0;\n}\n\n.right_column .blog-list-item {\n\tpadding-left: 10px;\n}\n\n.right_column .blog-sub-nav-item {\n\tpadding: 0!important;\n}\n\n.right_column .popover_menu_item, .right_column .blog-sub-nav-item {\n\tborder-top: 1px solid rgba(255,255,255,.08);\n}\n\n.right_column .blog-sub-nav-item a {\n\tpadding: 10px!important;\n}\n\n.right_column .popover_menu_item {\n\tpadding: 0;\n}\n\n.right_column .popover_menu_item .popover_menu_item_anchor {\n\tdisplay: block;\n\tpadding: 10px;\n}\n\n.right_column .popover_menu_item_anchor_icon {\n\tpadding-right: 10px;\n}\n\n.right_column .popover_menu_item_anchor, .right_column .blog-sub-nav-item-label {\n\tfont-weight: bold;\n}\n\n.right_column .tx-scrollbar-track {\n\tdisplay: none;\n}\n\n/* icon styles are from tumblr, they weren't getting applied when the menu is relocated */\n\n.right_column .popover_menu_item_anchor_icon {\n\tfont-family: \"tumblr-icons\",\"Blank\";\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n\tfont-style: normal;\n\tfont-variant: normal;\n\tfont-weight: 400;\n\ttext-decoration: none;\n\ttext-transform: none;\n}\n\n.right_column .popover_menu_item_anchor_icon.like-icon::before {\n\tcontent: \"\\EA4F\";\n}\n\n.right_column .popover_menu_item_anchor_icon.following-icon::before {\n\tcontent: \"\\EA44\";\n}\n\n.right_column .popover_menu_item_anchor_icon.settings-icon::before {\n\tcontent: \"\\EA9B\";\n}\n\n.right_column .popover_menu_item_anchor_icon.help-icon::before {\n\tcontent: \"\\EA4B\";\n}\n\n.right_column .tx-scroll {\n\tborder-radius: 0!important;\n}\n\n.right_column .popover_menu_item_blog_details {\n\toverflow: hidden;\n}\n\n.right_column .popover_menu+#dashboard_controls_open_blog {\n\tdisplay: none;\n}\n","title":"Old Sidebar","description":"Get the sidebar back","developer":"estufar","version":"1.2.3","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/find_blogs.json b/Extensions/dist/find_blogs.json new file mode 100644 index 000000000..1e1d726df --- /dev/null +++ b/Extensions/dist/find_blogs.json @@ -0,0 +1 @@ +{"id":"find_blogs","script":"//* TITLE Find Blogs **//\n//* VERSION 1.2.4 **//\n//* DESCRIPTION Lets you find similar blogs **//\n//* DETAILS Requires User Menus+ to be installed. **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.find_blogs = new Object({\n\n\trunning: false,\n\n\tkey: \"vgXl8u0K1syFSAue6b9C7honIojHjC98i5WsBgSZ66HfqB0DKl\",\n\tform_key: \"\",\n\n\tpreferences: {\n\t\t\"strip_following\": {\n\t\t\ttext: \"Don't show the blogs I already follow\",\n\t\t\tslow: true,\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"run_on_iframe\": {\n\t\t\ttext: \"Show the button when I visit a blog\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t},\n\n\tis_in_iframe: false,\n\n\tframe_run: function() {\n\n\t\tXKit.extensions.find_blogs.is_in_iframe = true;\n\n\t\tif (XKit.extensions.find_blogs.preferences.run_on_iframe.value !== true) { return; }\n\n\t\tXKit.tools.init_css(\"find_blogs\");\n\n\t\tvar m_css = \"#iframe_controls { width: auto !important; } \" +\n\t\t\t\t\"#xkit_find_blogs_inblog_button:before {\" +\n\t\t\t\t\t\" background-size: auto; \" +\n\t\t\t\t\t\" background-position: 50% 50%; \" +\n\t\t\t\t\t\" background-repeat: no-repeat; \" +\n\t\t\t\t\t\" background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjEzRkZBMkU2Q0QzMTFFMzlDNTZCMzI0NDhERkFFOUQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjEzRkZBMkY2Q0QzMTFFMzlDNTZCMzI0NDhERkFFOUQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MTNGRkEyQzZDRDMxMUUzOUM1NkIzMjQ0OERGQUU5RCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2MTNGRkEyRDZDRDMxMUUzOUM1NkIzMjQ0OERGQUU5RCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Plk4OxcAAACiSURBVHjanJKBDYAgDATRBXQDR3AERnAERmEUR3AURnAERqgleeKHFKM2aWjyuVKeDiLifgWDWnvNQ/PUzKj9I6hnkH7sJoibBLeEZoIMbbPAA2IwGtemyQLLm+TBh9TqI875l6s0qjf0FdppgRuZ40lb6pgasfcdO9mfCBBquvYWIDRAMS3Sl9zwm5XDOxle3NtdJbhMNLkvSw6zplJfAgwAwJVCqHZNx0YAAAAASUVORK5CYII=); \" +\n\t\t\t\t\"}\";\n\n\t\tXKit.tools.add_css(m_css, \"profiler_in_blog\");\n\n\t\tvar m_html = \"Find Blogs\";\n\n\t\t$(\".btn.dashboard\").before(m_html);\n\n\t\t$(\"#xkit_find_blogs_inblog_button\").click(function() {\n\n\t\t\tvar blog_url = $(\"#tumblelog_name\").attr('data-tumblelog-name');\n\n\t\t\tXKit.iframe.full();\n\n\t\t\tXKit.extensions.find_blogs.show(blog_url);\n\n\n\t\t});\n\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (XKit.interface.where().queue === true) { return; }\n\n\t\tXKit.tools.init_css(\"find_blogs\");\n\t\tXKit.extensions.find_blogs.form_key = XKit.interface.form_key();\n\n\t\tif (XKit.interface.where().queue === true) { return; }\n\n\n\t\tif (typeof XKit.extensions.show_more === \"undefined\") {\n\t\t\tXKit.extensions.find_blogs.show_ump_error();\n\t\t}\n\n\t\tXKit.installed.when_running(\"show_more\", function() {\n\t\t\tif (XKit.extensions.show_more.preferences.use_classic_menu.value === true) {\n\t\t\t\tXKit.extensions.show_more.add_custom_menu(\"find_blogs\", function(data) {\n\t\t\t\t\tvar user_url = data.name;\n\n\t\t\t\t\t$(document).off(\"click\", \".xkit-find_blogs-button-\" + user_url, XKit.extensions.find_blogs.menu_clicked);\n\t\t\t\t\t$(document).on(\"click\", \".xkit-find_blogs-button-\" + user_url, XKit.extensions.find_blogs.menu_clicked);\n\n\t\t\t\t\treturn \"
    Find Blogs
    \";\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tXKit.extensions.show_more.add_custom_menu(\"find_blogs\", function(data) {\n\t\t\t\t\tvar user_url = data.name;\n\n\t\t\t\t\t$(document).off(\"click\", \".xkit-find_blogs-button-\" + user_url, XKit.extensions.find_blogs.menu_clicked);\n\t\t\t\t\t$(document).on(\"click\", \".xkit-find_blogs-button-\" + user_url, XKit.extensions.find_blogs.menu_clicked);\n\n\t\t\t\t\treturn \"
  • \" +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\t\"Find Blogs\" +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\"
  • \";\n\t\t\t\t});\n\t\t\t}\n\t\t}, function() {\n\t\t\tXKit.extensions.find_blogs.show_ump_error();\n\t\t});\n\n\t\tif (XKit.interface.where().user_url === \"\") { return; }\n\n\t\tXKit.interface.sidebar.add({\n\t\t\tid: \"find_blogs_sidebar\",\n\t\t\ttitle: \"Find Blogs\",\n\t\t\titems: [{\n\t\t\t\tid: \"find_blogs_button\",\n\t\t\t\ttext: `Similar to ${XKit.interface.where().user_url}`,\n\t\t\t\tcarrot: true\n\t\t\t}]\n\t\t});\n\n\t\t$(\"#find_blogs_button\").click(function() {\n\n\t\t\tXKit.extensions.find_blogs.show(XKit.interface.where().user_url);\n\n\t\t});\n\n\t},\n\n\tmenu_clicked: function(e) {\n\n\t\tvar m_object = $(e.target);\n\n\t\tif (!m_object.hasClass(\"xkit-find_blogs\")) {\n\n\t\t\twhile (!m_object.hasClass(\"xkit-find_blogs\")) {\n\t\t\t\tm_object = m_object.parent();\n\t\t\t}\n\n\t\t}\n\n\t\t$(\".tumblelog_popover_glass\").trigger('click');\n\t\tsetTimeout(function() { $(\".tumblelog_popover_glass\").trigger('click'); }, 10);\n\t\t$(\".popover\").hide();\n\t\tXKit.extensions.show_more.hide_classic_menu();\n\n\t\tvar user_url = $(m_object).attr('data-url');\n\n\t\tXKit.extensions.find_blogs.show(user_url);\n\n\t},\n\n\twindow_id: -1,\n\n\tshow: function(url) {\n\n\t\tvar m_window_id = XKit.tools.random_string();\n\t\tXKit.extensions.find_blogs.window_id = m_window_id;\n\n\t\t$(\"body\").append(\"
     
    I'm thinking, please wait...
    \" + XKit.progress.add(\"find-blogs-progress\") + \"
    I'm gathering information about this blog..
    \");\n\n\t\tvar people = [];\n\n\t\t$(\"#xkit-find-blogs-background\").click(function() {\n\n\t\t\t$(\"#xkit-find-blogs-background\").fadeOut('slow', function() { $(this).remove(); });\n\t\t\t$(\"#xkit-find-blogs-window\").fadeOut('fast', function() { $(this).remove(); });\n\t\t\tXKit.extensions.find_blogs.window_id = -1;\n\n\t\t\tif (XKit.extensions.find_blogs.is_in_iframe === true) {\n\t\t\t\tXKit.iframe.restore();\n\t\t\t}\n\n\t\t});\n\n\t\tXKit.extensions.find_blogs.fetch(url, 0, m_window_id, people);\n\n\t},\n\n\tis_in_array: function(arr, username) {\n\n\t\tfor (var i = 0; i < arr.length; i++) {\n\t\t\tif (arr[i].url === username) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\n\t},\n\n\tcheck_if_following: function(m_url, callback) {\n\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"http://www.tumblr.com/svc/tumblelog_popover/\" + m_url + \"?is_user_mention=false&form_key=\" + XKit.extensions.find_blogs.form_key,\n\t\t\tjson: false,\n\t\t\tonerror: function(response) {\n\t\t\t\tcallback(false, m_url);\n\t\t\t},\n\t\t\tonload: function(response) {\n\t\t\t\ttry {\n\t\t\t\t\tvar data = JSON.parse(response.responseText);\n\t\t\t\t\tif (data.following === true) {\n\t\t\t\t\t\treturn callback(true, m_url);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn callback(false, m_url);\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn callback(false, m_url);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t},\n\n\n\tcalculate: function(m_url, m_window_id, people) {\n\n\t\tif (XKit.extensions.find_blogs.window_id !== m_window_id) {return; }\n\n\t\tvar container = [];\n\n\t\twhile (people.length > 0) {\n\n\t\t\tvar current = people.pop();\n\n\t\t\tif (current === m_url) { continue; }\n\n\t\t\tvar m_index = XKit.extensions.find_blogs.is_in_array(container, current);\n\n\t\t\tif (m_index !== -1) {\n\t\t\t\tcontainer[m_index].count++;\n\t\t\t} else {\n\t\t\t\tvar m_object = {};\n\t\t\t\tm_object.url = current;\n\t\t\t\tm_object.count = 1;\n\t\t\t\tcontainer.push(m_object);\n\t\t\t}\n\n\t\t}\n\n\t\tconsole.log(\"old container length = \" + container.length);\n\n\t\tfor (var i = 0; i < container.length; i++) {\n\t\t\tif (container[i].count <= 2) {\n\t\t\t\tif (container.length >= 100) {\n\t\t\t\t\tcontainer.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconsole.log(\"new container length = \" + container.length);\n\n\t\tcontainer.sort(function(first, second) { return second.count - first.count; } );\n\n\t\ttry {\n\n\t\t\tvar compiled_array = [];\n\n\t\t\tfor (var obj in container) {\n\t\t\t\tconsole.log(container[obj].url + \": \" + container[obj].count);\n\t\t\t\tcompiled_array.push(container[obj].url);\n\t\t\t}\n\n\t\t\t$(\"#xkit-find-blogs-text\").html(\"Thinking even more...\");\n\t\t\tXKit.extensions.find_blogs.already_following = 0;\n\n\t\t\tif (XKit.extensions.find_blogs.preferences.strip_following.value === true) {\n\t\t\t\tXKit.extensions.find_blogs.strip_following(m_url, compiled_array, 0, [], m_window_id);\n\t\t\t} else {\n\t\t\t\tXKit.extensions.find_blogs.show_results(m_url, compiled_array, m_window_id);\n\t\t\t}\n\n\t\t} catch (e) {\n\t\t\tconsole.log(e);\n\t\t}\n\n\t},\n\n\talready_following: 0,\n\n\tstrip_following: function(m_url, m_array, index, adjusted_array, m_window_id) {\n\n\t\tif (XKit.extensions.find_blogs.window_id !== m_window_id) { return; }\n\n\t\tif (index > m_array.length || adjusted_array.length >= 8) {\n\t\t\tXKit.extensions.find_blogs.show_results(m_url, adjusted_array, m_window_id);\n\t\t\treturn;\n\t\t}\n\n\t\tvar m_perc = (index * 100) / m_array.length;\n\t\tXKit.progress.value(\"find-blogs-progress\", m_perc);\n\n\t\tif (typeof m_array[index] === \"undefined\" || m_array[index].indexOf(\".\") !== -1) {\n\t\t\tXKit.extensions.find_blogs.strip_following(m_url, m_array, (index + 1), adjusted_array, m_window_id);\n\t\t\treturn;\n\t\t}\n\n\t\tconsole.log(\"Checking for \" + m_array[index] + \" ||index = \" + index + \" of \" + m_array.length);\n\n\t\tXKit.extensions.find_blogs.check_if_following(m_array[index], function(ret, url) {\n\t\t\tconsole.log(\"|--- Done for \" + m_array[index] + \", result is \" + ret);\n\t\t\tif (ret === false) {\n\t\t\t\tconsole.log(\"|--- not following, adding to adjusted_array\");\n\t\t\t\tadjusted_array.push(url);\n\t\t\t} else {\n\t\t\t\tXKit.extensions.find_blogs.already_following++;\n\t\t\t\tconsole.log(\"|--- following, skipping.\");\n\t\t\t}\n\t\t\tif (XKit.extensions.find_blogs.already_following > 0) {\n\t\t\t\t$(\"#xkit-find-blogs-subtext\").html(\"hmm.. you already follow \" + XKit.extensions.find_blogs.already_following + \" people I found..\");\n\t\t\t} else {\n\t\t\t\t$(\"#xkit-find-blogs-subtext\").html(\"thinking hard to present you a good list..\");\n\t\t\t}\n\t\t\tsetTimeout(function() { XKit.extensions.find_blogs.strip_following(m_url, m_array, (index + 1), adjusted_array, m_window_id); }, 300);\n\t\t});\n\n\t},\n\n\tshow_results: function(m_url, m_array, m_window_id) {\n\n\t\tif (XKit.extensions.find_blogs.window_id !== m_window_id) { return; }\n\n\t\tvar m_html = \"
    Similar blogs to \" + m_url + \"
    \";\n\n\t\tvar m_count = 0;\n\n\t\tfor (var i = 0; i < m_array.length; i++) {\n\t\t\tif (m_count >= 8) {break; }\n\t\t\tvar mx_html = \"
    \" +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\"
    \" + m_array[i] + \"
    \" +\n\t\t\t\t\t\"
    \";\n\t\t\tm_html = m_html + mx_html;\n\t\t\tm_count++;\n\t\t}\n\n\t\tif (m_count <= 7) {\n\t\t\tfor (var empty_slot_i = m_count; empty_slot_i < 8; empty_slot_i++) {\n\t\t\t\tvar empty_slot_html =\t\"
    \" +\n\t\t\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\t\"
    \";\n\t\t\t\tm_html = m_html + empty_slot_html;\n\t\t\t}\n\t\t}\n\n\t\tm_html = m_html + \"
    \";\n\n\t\t$(\"#xkit-find-blogs-window.xkit-find-blogs-loading\").removeClass(\"xkit-find-blogs-loading\").html(m_html);\n\n\n\n\t},\n\n\tfetch: function(m_url, page, m_window_id, people) {\n\n\t\tif (XKit.extensions.find_blogs.window_id !== m_window_id) {return; }\n\n\t\tvar max_page = 15;\n\t\tvar offset = page * 20;\n\n\t\tvar m_perc = (page * 100) / (max_page * 2);\n\t\tXKit.progress.value(\"find-blogs-progress\", m_perc);\n\n\t\tif (page == max_page * 3) {XKit.extensions.find_blogs.calculate(m_url, m_window_id, people); return; }\n\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"https://api.tumblr.com/v2/blog/\" + m_url + \".tumblr.com/posts/?api_key=\" + XKit.extensions.find_blogs.key + \"&reblog_info=true&offset=\" + offset,\n\t\t\tjson: false,\n\t\t\tonerror: function(response) {\n\t\t\t\tconsole.log(\"Error getting page.\");\n\t\t\t\tXKit.extensions.find_blogs.display_error(m_window_id, \"101\");\n\t\t\t\treturn;\n\t\t\t},\n\t\t\tonload: function(response) {\n\n\t\t\t\tif (XKit.extensions.find_blogs.window_id !== m_window_id) {return; }\n\n\t\t\t\ttry {\n\t\t\t\t\tvar data = JSON.parse(response.responseText);\n\n\t\t\t\t\tfor (var i = 0; i < data.response.posts.length; i++) {\n\n\t\t\t\t\t\tvar m_post = data.response.posts[i];\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (typeof m_post.reblogged_from_name !== \"undefined\") {\n\t\t\t\t\t\t\t\tpeople.push(m_post.reblogged_from_name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (typeof m_post.source_title !== \"undefined\") {\n\t\t\t\t\t\t\t\tpeople.push(m_post.source_title);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.log(\"Can't read post, \" + e.message);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tsetTimeout(function() { XKit.extensions.find_blogs.fetch(m_url, (page + 3), m_window_id, people); }, 400);\n\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.log(\"Error parsing data: \" + e.message);\n\t\t\t\t\tXKit.extensions.find_blogs.display_error(m_window_id, \"102\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t}\n\t\t});\n\n\t},\n\n\tdisplay_error: function(m_window_id, err_code) {\n\n\t\tif (XKit.extensions.find_blogs.window_id !== m_window_id) {return; }\n\n\t\t$(\"#xkit-find-blogs-background\").remove();\n\t\t$(\"#xkit-find-blogs-window\").remove();\n\n\t\tXKit.window.show(\"Oops.\", \"An error prevented Find Blogs from finding similar blogs.
    Please try again later.
    Code: \\\"FINB\" + err_code + \"\\\"\", \"error\", \"
    OK
    \");\n\n\t\t$(\"#xkit-close-message-find-blogs\").click(function() {\n\n\t\t\tXKit.window.close();\n\n\t\t\tif (XKit.extensions.find_blogs.is_in_iframe === true) {\n\t\t\t\tXKit.iframe.restore();\n\t\t\t}\n\n\t\t});\n\n\t},\n\n\taverage: function(posts) {\n\n\n\n\t},\n\n\tshow_ump_error: function() {\n\n\t\tif (XKit.storage.get(\"find_blogs\", \"shown_warning_about_show_more\", \"\") !== \"yass\") {\n\t\t\tXKit.window.show(\"Oops: User Menus+ is missing.\", \"Find Blogs requires User Menus+ extension to be installed and enabled in order to work. Please download User Menus+ from the extension gallery and refresh the page to start using this extension.\", \"error\", \"
    OK
    \");\n\t\t\tXKit.storage.set(\"find_blogs\", \"shown_warning_about_show_more\", \"yass\");\n\t\t}\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.interface.sidebar.remove(\"find_blogs_sidebar\");\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1QTExQUI5RjU3ODQxMUUzODM5QzhFMjcwMUMyMERGNiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1QTExQUI5RTU3ODQxMUUzODM5QzhFMjcwMUMyMERGNiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MOXQoQAAC15JREFUeNrsWntwVNUZv899b3Y3u9k8NmSTEAkL4aW8ESuvCtZn6yDCjGVkGKV0sFatrWPF/qNt7VQdH6M4toOdWgFHkaEiyFOC1igdAoEQEvLahIRk3++7r9tv7yGbu3fvvXnotDLNmSOTPef7zvm+871+51xxxzcvY9dzo3Ds+m7EdS4/RmEYPmGB/20M4BMuNOFC3xcLKEhFlbpooc5WQCrrtBb+VFPYFUgx/wr1dkQH46n496sOgNw3G6rXWhxLdDYpGv7UqVDvbldzvb/9O9EEr/v3a+NmNir0W0sWrDFWGUjFWHn9qfgBX8fr/V/54sFvpcCM8SrwYMn8zdZZ4xBdoMbbA43v9jf8VxWwqS0v2lfUqS3yZF+Eer8MXnl/8AyTioOt7i50LNKXLRZzs6ao68muI71R1/gUeH1MDCsKp75kX84f2eVuOeRvL1cUTFNbIEx748GLoV4pdiWpuL3Q8bvyJflTj3UdPeK5OGYFZo5FgXuKZvH3hpN7qutoz9hP7ue2mzdbZ+aPb+85tXewcayVeLR56B7LrOfKF2d/no+6NrXtY1KM7ApoioX/9LR2nq78SiIEfxtIpSg1nA6O4XtdY9BhtHVgZWEtX3poh3ydTCYPjoY9QxNMRI56L6HfrWprimVJMc1hl1CaOexpGa0LzTnz5ohEk1Tmj2vvyx+/sfGtb4UCcKK+7iEVQeZP3d3ygTPm/m4soCaVr1etzh/viYdEeQ209nbTlI2W6QZKSXAEECoJNu1Jxlpj3s8DXW2RAUSZZtnF597Z63igQqEXLPJCxbLNl/dHU8yICpBlj9yJc4JI9Q3W2asMlfmcn/k76wOdfErAEVtK5v/KtnCloUJLKkicIHAcegmttSl0NSrjfF3pamP1MmOVP5XsYXwsxgLXLleTRaGfpjbzFy+iNeF0qjHcJy9bps9t3CGjXyGtP+hYJzr108v/vBC+ci05EoqfWKY/bJ2tIahR+s9lxvd45+Fexot+Pmm7Za25VkBzW/P7nkRwRDQqp97DxTeJsjVGBi+E+xCNmS543r7isZK5o5ce2mSlcc+UHy81TEaLvNh7siHcL6Dhdh/BAGBlya6lVCsNdtHtH768H9FYlQW/ty+7RV+eT5PG2CSbRh1yTj4BjRN/ti9fZapFS21r/8SX6/SwO8hAyAoJaFQyiG/WVxaIQZ2GzNkDG64i6N/als7WWAUELTFPfaD3aKCzh/GjET2lnKezQSzN05aA3Hzi5yct3ZwIn+Pc/fbmf3xRtzE7BbuDDId9rfJwWlKBuwtr8gfhLB9tP4i4Hiqes1BXyp/1ppj3XBd2u87H00n+uDue/NRzCfqigooXK5YJKsCO6tVrmncFklGoeJCpblCZ+DIc8bXJxQBKFPldSyngtPIZdntaEIFDW7zBPI0/1Z8I/7r7+HuDZ5NsSmrZr4LOO1r2hNMJQZ17o/o2nGsb2/bxp0AGkERqtUyHVC3aa1RmUY3f6GtABFuK5/AP0p2MPeusvxC+KrXgz0rmoz9CydidF/dEck1UrTTWaqyIwJ970QFJpNZEXTy+bxQ7fpAS52ar1ebpPDgN8frXwbPN0atSq6lJeoPFsc9xP2JPsMn7Wz8ULL7JOhNm4VDvbdmdU+9BEuk8JGmBUlqXr8B+bxvOza4x1vCTJmTVT7ytMoc0S1sGZCZS+aljPRoJJJm/u5r5iy/QlupIFayfzs1YIImcBYBBtJcpRBT4yHMJsS3Rl/HHP/G2Ay6QWqqI1j9rW4QoQe29U9ei8Q9z0T+FE8VDsgL0yI6DJFIr4xguGcSiGDmcZtCsjpdeGTb1TbhXJs62lc7V8+jBDhA80H3JCAeohts0jQWxeJOx4RDn/GrMQSyetFgMzeoIOjvmZALRVAKNrzRMrtMUo55dSkfSgmWesi1BU21DUAK1SoUxc6g47oaUmoMXJF2IIiSuI6L1AajBUwCE8YtRAktnToKjf9q2MDsOGX1rx6eiS9mVBWjfjpj/Vv2k7PhsbRFsAX+cDg84huAdUkmykBFjedhCoggEYofMIiCGevRuzV1QkufklWpwcbSIjsip9OCNyLMFCEBGSMkr5dVERPQKwmJCVAPImc146vBC/RxvCa0BIH2feUr+Os84T2TCDMPtqpybwPmIm+BsW6cx8yWRubVSpIRyA3ERBRQ4BSmciwU2awe7Ql+mKOiLB7goT9QHe1/ta1ATij1T7pHaNZlOkRhB4mRtbrnsYvxkxgKYhdLwJSHHYYGm6GD+YLlS3w0XERaLpVNqXh1YrC//0JNJ6uta93J5A7cqtFJbQmygYy5T6gTvYu2MD7k7P+5BEhkLwIUUF+3OISDJbxuLZoA7QgY8lfvys848VUso+OyeRBTqVL4fQi1/susYkdmXeKJ0viAwgikGximM5Du9kzOLVCdwiRZjE2fzjADwgcjIj0NFy7k3E9T2SUu55D7M/oHnwsv9pwXX6M3tB1D+nq61VimN/NkTQWecQ4Eqcti2IAMshUs3iAHJTwRfB/tmqoty3tVwWBvSKOlKRPwphv+841AVbjBP3+W+MFQwMrFOYhjIxKRTV5Ph33SdgEG0mZXWbi6aKXCLve5LFIdv3qlekx085u8mZT9iEDLKwZEIcC+0P9hvRbPP9ZwSTEHCWV9UR1yzaubflph7Q9v+h9oPPN19IpN9uVapMj5lWwClIAeM+DpcqSgLRiSGcQTsfjrcj8u2jC9K9Xg61RAS3lPtCgOdcVNiIBGBXQWz95pq3q5ePVVtVuBQq8Fc12IMOb2F0t5lqt1uWwKLCBgrlHo91AQwLkZs7fgsxoFt2D2O8pV0x9e1fixjIDOlfq1ylWAQbq7bOj9jM1mV/GPFMjOlymcEmtPhq5dj3r5EGCJES9AVioI52uJyMYyI2sWY59X+05F0gnMt/I3KVU90HxNgCpHaur51nzzFvaba/GK0peMgZFLwadDhT/blBbJfCaC+QvCMptJDwDzdfdKfiuFcUoKfIz/vyQE9rh8KtA/mHcMrlSs1JA3unsTYX3YfgWOW2WOU0mPIpPYfFNIa2DeFINaIXSbFog5e+ErfN/k7vWRfridoyBsEi293ntzjbslHGVIN7v7Hgt35GQLBnhcmLQWvI0YS7Fq/8dEN+EgtmI5DyN6Ue8kkcWKVobI+1JPEMsisg/F9HnJSBDlJoZcBj2Cr4wHnR95LJwPOgUS0TlMkeGVBYLFGbWqKuDLYbsS26fKBUR7bncYa0YeWhnDfzsHz2e8AKoIsofVTVYVzdSWoUADoh5LsSzCtjNediIKLDz866Eo3Fc2gcEIUcbx5tZFPLB7EUBpHD6fvMNbcZRLRAQL6mZ4TEHasGAJPsak474qYEx4E+SNjzWpDlejspZhnx8CZgOzXWHL+ow/KP1rwe1vMCwE9R2vNg4TEDw1VKwyVXwSvwOVYwAXOBh3wK84bNJJqAB40TncA6MLxybmwIpvEq5XGlpgParmUSPiWjkNj/kqp0D9inS2a/q+hZTYdSieaoq7jfid67jRSSshFECeI4Fa9/Q5TdUvMs8t9EXlenbrovsIb1GLPw39zNX8Z6pF0oa1jV4BzdAoJMXqWtwbORNLJG5SFi/RlWeXPRV07B88x6SToAElivWWaIOd2MoG/DJ71SJczfFvn4XF/IzJR6jXGqgXa0vGxfxXuO+Dr8PKEm60pfsDsyH506ooHdw42uZMRuSD+xbdQYMga9Dxt6QyNhf8oK9MgvZyLuL4O98XE6gDosNY8FXypm5PeIyt9RoHHu45i31EDTUpp7WSVCTzEROV8SPUmGbjKIGgkKje/QXGAi8dBf6dvJCCUUeCJruPY9dwo8jr/f87G9i40ocCEC4m9dk640IQC/9cx8B8BBgAoQlvJkUwCuwAAAABJRU5ErkJggg==","css":"#xkit-find-blogs-background {\n\tbackground: rgba(0,0,0,0.22);\n\tposition: fixed;\n\ttop: 0; left: 0;\n\twidth: 100%; height: 100%;\n\tz-index: 1000;\n}\n\n.xkit-find_blogs {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0NDQjdDNTkwMjZFMTFFM0IwRTREQUE2OUI0ODg5QzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0NDQjdDNUEwMjZFMTFFM0IwRTREQUE2OUI0ODg5QzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3Q0NCN0M1NzAyNkUxMUUzQjBFNERBQTY5QjQ4ODlDMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3Q0NCN0M1ODAyNkUxMUUzQjBFNERBQTY5QjQ4ODlDMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PudeUxgAAADdSURBVHjapFOhDsIwEN0RzCR2ll8AWSyfAHKWn8HOYpF8A3KVIGcnN7m58po8yNGsY2GXXK5t7r27vmvFOZfMsUUy05bhgYisEQw8g6fwCn5Hp9UQgegrALxBOEaKlci9RjtgZQ/u4DckW3Wew7dYP3D+jGlgGD9gb2z9wu1+TMSMABsmkaR+58QI0rljrNSdw8lkrN6MEZSMuSbBeqUmY3+N8eDV5rbW2tD8hApg6kEC9RZ2CtiwsqFOXyQy9S9Qh5MiOQPbTv4LrFgQ3DJO7yAQtQOu/4sgtJcAAwAM9WOixKs6SQAAAABJRU5ErkJggg==);\n}\n\n.xkit-find-blogs-separator {\n\tfont-size: 12px;\n\ttext-transform: uppercase;\n\tmargin-bottom: 10px;\n\tmargin-top: 4px;\n\ttext-align: center;\n\tcolor: rgb(130,130,130);\n\tbackground: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAABCAYAAAD0In+KAAAAEUlEQVQIW2M8dOjQfzs7O0YAFyYEApdFJZwAAAAASUVORK5CYII=') 50% 50% repeat-x;\n}\n\n.xkit-find-blogs-separator div {\n\tbackground: white;\n\tpadding: 0px 10px;\n\tdisplay: inline;\n}\n\n.xkit-find-blogs-blog-list a {\n\n\tfloat: none !important;\n\n}\n\n.xkit-find-blogs-blog-list {\n\tborder-top: 1px solid rgb(200,200,200);\n\tborder-left: 1px solid rgb(200,200,200);\n\theight: 180px;\n\tbox-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tfont-weight: normal;\n}\n\n.xkit-find-blogs-blog {\n\tdisplay: inline-block;\n\tfloat: left; height: 45px;\n\twidth: 50%;\n\tborder-right: 1px solid rgb(200,200,200);\n\tborder-bottom: 1px solid rgb(200,200,200);\n\tbox-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tposition: relative;\n}\n\n.xkit-find-blogs-blog:hover {\n\tbackground: rgb(245,245,245);\n\tcursor: pointer;\n}\n\n.xkit-find-blogs-blog.xkit-empty-slot,\n.xkit-find-blogs-blog.xkit-empty-slot:hover {\n\tcursor: default;\n\tbackground: white;\n}\n\n.xkit-find-blogs-blog .m_title {\n\tposition: absolute;\n\tleft: 45px;\n\tline-height: 45px;\n\ttop: 0;\n\tmax-width: 110px;\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n\tfont-size: 14px;\n\twhite-space: nowrap;\n}\n\n.xkit-find-blogs-blog .m_percentage {\n\tposition: absolute;\n\tright: 11px;\n\ttop: 50%;\n\tline-height: 20px;\n\theight: 20px;\n\tmargin-top: -10px;\n\tfont-size: 12px;\n\tcolor: rgb(150,150,150);\n}\n\n.xkit-find-blogs-blog .m_avatar {\n\tposition: absolute;\n\twidth: 25px; height: 25px;\n\ttop: 50%; left: 10px;\n\tmargin-top: -12px;\n\tborder-radius: 3px;\n\tbackground: black;\n}\n\n#xkit-find-blogs-window {\n\tposition: fixed;\n\ttop: 50%;\n\tleft: 50%;\n\theight: 260px;\n\tmargin-top: -130px;\n\tbackground: white;\n\tbox-shadow: 0px 1px 3px rgba(0,0,0,0.44);\n\tborder-radius: 6px;\n\twidth: 500px;\n\tmargin-left: -250px;\n\tfont-size: 16px;\n\tbox-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tpadding: 30px;\n\tpadding-top: 21px;\n\tz-index: 1001;\n}\n\n#xkit-find-blogs-window .m_window_title {\n\n\tfont-size: 16px;\n\tfont-weight: bold;\n\tmargin-bottom: 10px;\n\n}\n\n#xkit-find-blogs-subtext {\n\tmargin-top: 10px;\n\tfont-size: 13px;\n\tcolor: rgb(180,180,180);\n}\n\n#xkit-find-blogs-text {\n\tmargin-bottom: 10px;\n}\n\n#xkit-find-blogs-inner {\n\tpadding: 14px 20px;\n}\n\n#xkit-find-blogs-window.xkit-find-blogs-loading #xkit-find-blogs-inner {\n\tpadding: 0px;\n\tpadding-top: 75px;\n\tline-height: 20px;\n\tfont-size: 18px;\n\ttext-align: center;\n\tcolor: rgb(180,180,180);\n}","title":"Find Blogs","description":"Lets you find similar blogs","developer":"STUDIOXENIX","version":"1.2.4","details":"Requires User Menus+ to be installed.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/find_inactives.json b/Extensions/dist/find_inactives.json new file mode 100644 index 000000000..5b2f0f6d2 --- /dev/null +++ b/Extensions/dist/find_inactives.json @@ -0,0 +1 @@ +{"id":"find_inactives","script":"//* TITLE Find Inactives **//\n//* VERSION 0.4.3 **//\n//* DESCRIPTION Find the inactive blogs you follow **//\n//* DEVELOPER new-xkit **//\n//* DETAILS This extension lets you find blogs that haven't been updated in a certain amount of time. Just go to list of blogs you follow, then click on "Find Inactive Blogs" button below your Crushes to get started. **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.find_inactives = new Object({\n\n\trunning: false,\n\n\ttimeout_time: 300,\n\n\tpreferences: {\n\t\ttime: {\n\t\t\ttext: \"Time to mark a blog as inactive\",\n\t\t\tdefault: \"d30\",\n\t\t\tvalue: \"d30\",\n\t\t\ttype: \"combo\",\n\t\t\tvalues: [\n\t\t\t\t\"1 week\", \"d7\",\n\t\t\t\t\"2 weeks\", \"d14\",\n\t\t\t\t\"A month\", \"d30\",\n\t\t\t\t\"Two months\", \"d60\",\n\t\t\t\t\"4 months\", \"d120\",\n\t\t\t\t\"A year\", \"d365\"\n\t\t\t]\n\t\t}\n\t},\n\n\tlanguage_date_day: [\"day\", \"tag\", \" jour\", \" giorn\", \"\\u65e5\", \"g\\u00fcn \", \" d\\u00eda\", \"\\u0434\\u043d\\u044f\", \" dzie\\u0144\", \" dni\", \"dia\", \" dag\", \"\\uc77c\", \"\\u5929\"],\n\tlanguage_date_week: [\"week\", \"woche\", \" semaine\", \"settiman\", \"\\u9031\\u9593\", \" hafta \", \" semana\", \"\\u043d\\u0435\\u0434\\u0435\\u043b\", \" tydzie\\u0144\", \" tygodnie\", \" semana\", \" weken\", \"\\uc8fc\", \"\\u5468\", \"\\u9031\"],\n\tlanguage_date_month: [\"month\", \"monat\", \" mois\", \" mese\", \" mesi\", \"\\u6708\", \" ay \", \" mes\", \"\\u043c\\u0435\\u0441\\u044f\\u0446\", \" mies\", \"m\\u00eas\", \" meses\", \" maand\", \"\\ub2ec\"],\n\tlanguage_date_year: [\"year\", \"jahr\", \" an\", \"anno\", \" anni\", \"\\u5e74\", \" y\\u0131l \", \" a\\u00f1o\", \"\\u0433\\u043e\\u0434\", \" rok\", \" lat\", \" ano\", \" jaar\", \"\\ub144\", \"\\uc5f0\\ub839\"],\n\n\tlanguage_date_strip: [\"Mis \\u00e0 jour il y a\"],\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (document.location.href.indexOf(\"www.tumblr.com/following\") === -1) { return; }\n\n\t\tXKit.tools.init_css(\"find_inactives\");\n\n\t\t$(\".grey_note\").before('
    Find Inactive Blogs
    ');\n\n\t\t$(\"#xkit-find-inactives-button\").click(function() {\n\n\t\t\tXKit.extensions.find_inactives.start();\n\n\t\t});\n\n\t\t$(document).on('click', '.find-inactives-blog .unfollow_button', function(e) {\n\t\t\tXKit.extensions.find_inactives.unfollow_inactive_blog(e);\n\t\t});\n\t},\n\n\tpeople_list: [],\n\tretired_people_list: [],\n\tpage: 0,\n\tpeople_count: 0,\n\tpeople_index: 0,\n\tpeople_per_page: 25,\n\tconcurrent_requests: 8, //Arbitrary number. This just seemed to go fast. ~7.50 for 1000 Tumblrs\n\n\tstart: function() {\n\n\t\tXKit.extensions.find_inactives.retired_people_list = [];\n\t\tXKit.extensions.find_inactives.people_list = [];\n\t\tXKit.extensions.find_inactives.page = 0;\n\t\tXKit.extensions.find_inactives.people_index = -1;\n\n\t\tXKit.window.show(\"Please wait..\", \"I'm trying to find the inactive blogs, this might take a while.\" + XKit.progress.add(\"find-inactives\") + \"
    Crunching the numbers...
    \", \"info\");\n\n\t\tXKit.extensions.find_inactives.get_count();\n\n\t},\n\n\tget_count: function() {\n\t\tvar count_text = $(\"#tabs\").html();\n\t\tcount_text = count_text.replace(/[^0-9]/g, '');\n\n\n\t\tvar people_count = parseInt(count_text);\n\t\tXKit.extensions.find_inactives.people_count = people_count;\n\n\t\tXKit.extensions.find_inactives.page_tracker.reset();\n\t\tXKit.extensions.find_inactives.page_tracker.set_page_count(people_count / this.people_per_page);\n\n\t\t//Start our concurrent requests.\n\t\tfor (var i = 0; i < XKit.extensions.find_inactives.concurrent_requests; i++) {\n\t\t\tXKit.extensions.find_inactives.next_page();\n\t\t}\n\t},\n\n\tshow_error: function(message) {\n\n\t\tXKit.window.close();\n\t\tXKit.window.show(\"Find Inactives encountered an error\", message, \"error\", \"
    OK
    \");\n\n\t},\n\n\tnext_page: function() {\n\t\tvar self = this;\n\t\tvar next_page = this.page_tracker.get_next_page();\n\t\tif (next_page < 0) {\n\t\t\tif (this.page_tracker.has_completed()) {\n\t\t\t\t$(\"#xkit-find-inactives-status\").html(\"Fetching information about the people I've just learned about...\");\n\t\t\t\tXKit.extensions.find_inactives.list_people();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis.page_tracker.start_processing_page(next_page);\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"http://www.tumblr.com/following/\" + (next_page * 25),\n\t\t\tjson: false,\n\t\t\tonerror: function(response) {\n\t\t\t\tXKit.extensions.find_inactives.show_error(\"Unable to get the blog information.
    Please try again later.

    Error Code: FIA-330\");\n\t\t\t},\n\t\t\tonload: function(response) {\n\t\t\t\ttry {\n\t\t\t\t\tvar perc = self.page_tracker.get_progress();\n\n\t\t\t\t\tXKit.progress.value(\"find-inactives\", perc);\n\n\t\t\t\t\t$(\".follower\", response.responseText).each(function() {\n\n\t\t\t\t\t\tvar username = $(this).find(\".name\").find(\"a\").html();\n\t\t\t\t\t\tvar last_updated = $(this).find(\".last_updated\").html();\n\t\t\t\t\t\tvar last_updated_days = XKit.extensions.find_inactives.days_since_updated(last_updated);\n\n\n\t\t\t\t\t\tif (XKit.extensions.find_inactives.people_list.indexOf(username) === -1) {\n\t\t\t\t\t\t\tXKit.extensions.find_inactives.people_list.push(username);\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tif (last_updated_days >= parseInt(XKit.extensions.find_inactives.preferences.time.value.replace(\"d\", \"\"))) {\n\t\t\t\t\t\t\tvar m_user = {\n\t\t\t\t\t\t\t\tusername: username,\n\t\t\t\t\t\t\t\tdays: last_updated,\n\t\t\t\t\t\t\t\tdays_value: last_updated_days\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tXKit.extensions.find_inactives.retired_people_list.push(m_user);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// Sort inactive blogs -- Oldest first\n\t\t\t\t\tXKit.extensions.find_inactives.retired_people_list.sort(function(blog_a, blog_b) {\n\t\t\t\t\t\treturn blog_b.days_value - blog_a.days_value;\n\t\t\t\t\t});\n\n\t\t\t\t\tself.page_tracker.finished_processing_page(next_page);\n\t\t\t\t\tsetTimeout(function() { XKit.extensions.find_inactives.next_page(); }, XKit.extensions.find_inactives.timeout_time);\n\n\t\t\t\t} catch (e) {\n\t\t\t\t\tXKit.extensions.find_inactives.show_error(\"Unable to get the blog information.
    Please try again later.

    Error Code: FIA-230
    \" + e.message);\n\t\t\t\t}\n\n\t\t\t}\n\t\t});\n\n\t},\n\n\n\tdays_since_updated: function(updated_time) {\n\t\tif (! updated_time) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tvar time_value = updated_time.replace(/[^0-9\\.]/g, '');\n\t\ttime_value = parseInt(time_value, 10);\n\n\t\tfor (var i = 0; i < this.language_date_strip.length; i++) {\n\t\t\tupdated_time = updated_time.replace(this.language_date_strip[i], '');\n\t\t}\n\n\n\t\tvar days = this.calculate_days(updated_time, time_value, this.language_date_day, 1);\n\t\tif (days > 0) {\n\t\t\treturn days;\n\t\t}\n\n\t\tdays = this.calculate_days(updated_time, time_value, this.language_date_week, 7);\n\t\tif (days > 0) {\n\t\t\treturn days;\n\t\t}\n\n\t\tdays = this.calculate_days(updated_time, time_value, this.language_date_month, 30);\n\t\tif (days > 0) {\n\t\t\treturn days;\n\t\t}\n\n\t\tdays = this.calculate_days(updated_time, time_value, this.language_date_year, 365);\n\t\tif (days > 0) {\n\t\t\treturn days;\n\t\t}\n\n\t\treturn 0;\n\t},\n\n\tcalculate_days: function(updated_time, time_value, time_language_array, multiplier) {\n\t\tvar i = 0;\n\t\twhile (i < time_language_array.length) {\n\t\t\tif (updated_time.indexOf(time_language_array[i]) > -1) {\n\t\t\t\treturn multiplier * time_value;\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t//Keeps track of what pages are currently being processed, finished processing, and need to process.\n\tpage_tracker: {\n\n\t\tpage_count: 0,\n\t\tcurrent_page: 0,\n\t\tpage_processed: {}, //page_processed will either be undefined, false, or true. Undefined: page not started. false: page started to process. true: page finished processing.\n\n\t\t//Resets this object to its base state. Always set it before starting to find inactive followers.\n\t\treset: function() {\n\t\t\tthis.page_count = 0;\n\t\t\tthis.current_page = 0;\n\t\t\tthis.page_processed = {};\n\t\t},\n\n\t\tset_page_count: function(count) {\n\t\t\tthis.page_count = count;\n\t\t},\n\n\t\t//Returns the next page that needs to be processed, -1 of there are no pages to be processed.\n\t\tget_next_page: function() {\n\t\t\tfor (var i = 0; i < this.page_count; i++) {\n\t\t\t\tif (this.page_processed[i] === undefined) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t},\n\n\t\tstart_processing_page: function(page) {\n\t\t\tthis.page_processed[page] = false;\n\t\t\tif (this.current_page < page) {\n\t\t\t\tthis.current_page = page;\n\t\t\t}\n\t\t},\n\n\t\tfinished_processing_page: function(page) {\n\t\t\tthis.page_processed[page] = true;\n\t\t},\n\n\t\thas_completed: function() {\n\t\t\tfor (var i = 0; i < this.page_count; i++) {\n\t\t\t\tif (! this.page_processed[i]) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t//returns the progress of finding inactives. Value are between 0 and 100.\n\t\tget_progress: function() {\n\t\t\tvar progress_points = 0; // Weighted progress points.\n\t\t\tfor (var i = 0; i < this.page_count; i++) {\n\n\t\t\t\tif (this.page_processed[i] === false) {\n\t\t\t\t\tprogress_points += 1;\n\t\t\t\t}\n\t\t\t\tif (this.page_processed[i] === true) {\n\t\t\t\t\tprogress_points += 2;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar total_points = this.page_count * 2;\n\t\t\treturn (progress_points / total_points) * 100;\n\t\t}\n\t},\n\n\tlist_people: function() {\n\n\t\tif (XKit.extensions.find_inactives.retired_people_list.length === 0) {\n\n\t\t\tXKit.window.show(\"All up to date!\", `I couldn't find anyone who has been gone for more than ${XKit.extensions.find_inactives.preferences.time.value.replace(\"d\", \"\")} days.`, \"info\", \"
    Whee!
    \");\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar m_html = '
    ';\n\n\t\tfor (const blog of XKit.extensions.find_inactives.retired_people_list) {\n\t\t\tconst username = blog.username;\n\t\t\tm_html += `
    ` +\n\t\t\t`${username}` +\n\t\t\t`
    ${blog.days}
    ` +\n\t\t\t`` +\n\t\t\t`` +\n\t\t\t\"
    \";\n\t\t}\n\n\t\tm_html += \"
    \";\n\n\t\t$(\"body\").css(\"overflow\", \"hidden\");\n\n\t\tXKit.window.show(`Found ${XKit.extensions.find_inactives.retired_people_list.length} inactive blog(s)`, m_html, \"info\", \"
    OK
    \");\n\n\t\t$(\"#find-inactives-window-outer\").nanoScroller();\n\n\t\t$(\"#xkit-close-message-find-inactives\").click(function() {\n\n\t\t\t$(\"body\").css(\"overflow\", \"auto\");\n\t\t\tXKit.window.close();\n\n\t\t});\n\n\t\tif ($(\".find-inactives-blog\").length > 4) {\n\n\t\t\t$(\".find-inactives-blog:last-child\").css(\"border-bottom\", \"0\");\n\n\t\t}\n\t},\n\tunfollow_inactive_blog: function(event) {\n\t\tvar username = $(event.target).data('name');\n\t\t//make sure xkit window doesn't hide confirmation dialogue\n\t\t$('#xkit-window-shadow').css('zIndex', 8900);\n\t\t$('#xkit-window').css('zIndex', 9000);\n\t\tXKit.tools.add_function(XKit.extensions.find_inactives.trigger_unfollow, true, username);\n\t},\n\ttrigger_unfollow: function() {\n\t\tvar username = add_tag;\n\t\t// We're gonna assume Tumblr won't permit usernames that'd lead to XSS.\n\t\tvar removalTarget = jQuery(`.find-inactives-blog[data-url=\"http://${username}.tumblr.com/\"]`);\n\t\tTumblr.Dialog.confirm(`Are you sure you want to unfollow ${username}?`, function() {\n\t\t\tTumblr.unfollow({\n\t\t\t\ttumblelog: username,\n\t\t\t\tsource: \"UNFOLLOW_SOURCE_FOLLOWING_PAGE\"\n\t\t\t}, {\n\t\t\t\tsuccess: function() {\n\t\t\t\t\tremovalTarget.hide();\n\t\t\t\t},\n\t\t\t\tcomplete: function() {\n\t\t\t\t\tremovalTarget.hide();\n\t\t\t\t},\n\t\t\t\terror: function() {\n\t\t\t\t\tTumblr.Dialog.alert(\"Something went wrong.\");\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\t$(\"#xkit-find-inactives-button\").remove();\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3MzI5Rjk5RDVENDQxMUUzOTc0NUVFMzYyMTQ1MzcwNSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3MzI5Rjk5QzVENDQxMUUzOTc0NUVFMzYyMTQ1MzcwNSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","css":"#find-inactives-window-outer {\n\theight: 230px;\n\tborder: 1px solid rgb(190,190,190);\n}\n\n.find-inactives-blog:hover {\n\tbackground: rgb(245,245,245);\n}\n.find-inactives-blog {\n\tborder-bottom: 1px solid rgb(190,190,190);\n\theight: 50px;\n\toverflow: hidden;\n\tposition: relative;\n\tpadding-left: 60px;\n\tfont-size: 13px;\n\tline-height: 16px;\n\tcursor: pointer;\n}\n\n.find-inactives-blog .name {\n\tposition: absolute;\n\ttop: 8px;\n\tleft: 55px;\n\tfont-weight: bold;\n}\n\n.find-inactives-blog .days {\n\tposition: absolute;\n\ttop: 24px;\n\tleft: 55px;\n\tfont-weight: normal;\n\tcolor: rgb(120,120,120);\n}\n\n.find-inactives-blog .avatar {\n\twidth: 32px;\n\theight: 32px;\n\tposition: absolute;\n\ttop: 8px;\n\tleft: 10px;\n\tborder-radius: 4px;\n}\n\n.find-inactives-blog .unfollow_button {\n\tfloat: right;\n\tmargin: 10px;\n}\n","title":"Find Inactives","description":"Find the inactive blogs you follow","developer":"new-xkit","version":"0.4.3","details":"This extension lets you find blogs that haven't been updated in a certain amount of time. Just go to list of blogs you follow, then click on "Find Inactive Blogs" button below your Crushes to get started.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/fresh_prince.json b/Extensions/dist/fresh_prince.json new file mode 100644 index 000000000..647940ff1 --- /dev/null +++ b/Extensions/dist/fresh_prince.json @@ -0,0 +1 @@ +{"id":"fresh_prince","script":"//* TITLE Fresh Prince **//\n//* VERSION 0.1.1 **//\n//* DESCRIPTION Everything's flipped, turned upside down **//\n//* DEVELOPER new-xkit **//\n//* DETAILS This extension flips everything on the dashboard. Don't expect Tumblr to function correctly whatsoever while this extension is installed. **//\n//* FRAME false **//\n//* SLOW true **//\n//* BETA false **//\n\nXKit.extensions.fresh_prince = new Object({\n\n\trunning: false,\n\n\tpreferences: {\n\t\tfresh_song_of_bel_air: {\n\t\t\ttext: \"NOW THIS IS A STORY ALL ABOUT HOW MY LIFE\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\tflavor: {\n\t\t\ttext: \"GOT FLIPPED TURNED UPSIDE DOWN\",\n\t\t\tdefault: \"/AVbQo3IOC_A\",\n\t\t\tvalue: \"/AVbQo3IOC_A\",\n\t\t\ttype: \"combo\",\n\t\t\tvalues: [\n\t\t\t\t\"Original prince of Bel-Air\", \"/AVbQo3IOC_A\",\n\t\t\t\t\"Fresh prince of Neon Genesis\", \"/Zmd1FWen-nY\",\n\t\t\t\t\"Ace Attorney of Bel-Air\", \"/3xYGMizY0k0\",\n\t\t\t\t\"Fresh prince of Gerudo Valley\", \"/WnfNOZ83Fow\",\n\t\t\t\t\"Fresh prince of Lavender Town\", \"/f94ST14pWXE\",\n\t\t\t\t\"Fresh prince of Street Fighting\", \"/o0weWqVca1U\",\n\t\t\t\t\"Fresh prince of falling blocks\", \"/7TBPXyMHf7U\"\n\t\t\t],\n\t\t},\n\t\tloop: {\n\t\t\ttext: \"NEVER STOP SPINNING\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\tdisable_rotate: {\n\t\t\ttext: \"Disable full experience\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\n\tremove_fastdash: function() {\n\t\tXKit.tools.add_function(function() {\n\t\t\tvar onResize = Tumblr.fastDashboard.options.boundOnResize;\n\t\t\tvar onScroll = Tumblr.fastDashboard.options.boundOnScroll;\n\t\t\tif (!onResize || !onScroll) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tTumblr.fastDashboard.destroy();\n\t\t\twindow.xkit_restore_fastdash = function() {\n\t\t\t\tTumblr.fastDashboard.options.boundOnResize = onResize;\n\t\t\t\tTumblr.fastDashboard.options.boundOnScroll = onScroll;\n\t\t\t\tTumblr.Events.on(\"DOMEventor:flatscroll\", onScroll);\n\t\t\t\tTumblr.Events.on(\"DOMEventor:flatresize\", onResize);\n\t\t\t};\n\t\t}, true);\n\t},\n\n\trestore_fastdash: function() {\n\t\tXKit.tools.add_function(function() {\n\t\t\twindow.xkit_restore_fastdash();\n\t\t}, true);\n\t},\n\n\trun: async function() {\n\t\tthis.running = true;\n\n\t\tif (this.preferences.fresh_song_of_bel_air.value && $(\".l-container, #base-container\").length > 0) {\n\t\t\t$(\"head\").append('
    ');\n\t\t}\n\n\t\tif (!XKit.extensions.fresh_prince.preferences.disable_rotate.value) {\n\t\t\tawait XKit.css_map.getCssMap();\n\t\t\tconst {keyToCss, descendantSelector} = XKit.css_map;\n\n\t\t\tXKit.tools.add_css(`\n\t\t\t\t.l-header-container, .l-container, .l-footer-container {\n\t\t\t\t\ttransform: rotate(180deg);\n\t\t\t\t\t-webkit-transform: rotate(180deg);\n\t\t\t\t}\n\t\t\t`, 'fresh_prince');\n\n\t\t\tXKit.tools.add_css(`\n\t\t\t\t#base-container > * > * {\n\t\t\t\t transform: scale(1, -1);\n\t\t\t\t}\n\n\t\t\t\t${descendantSelector('menuContainer', 'baseContainer')} {\n\t\t\t\t transform: scale(1, -1);\n\t\t\t\t}\n\n\t\t\t\t${keyToCss('popoverChrome')} > * {\n\t\t\t\t transform: scale(1, -1);\n\t\t\t\t}\n\n\t\t\t\t#glass-container > * {\n\t\t\t\t transform: scale(1, -1);\n\t\t\t\t}\n\n\t\t\t\t#xkit-notifications {\n\t\t\t\t transform: scale(1, -1);\n\t\t\t\t}\n\t\t\t`, 'fresh_prince');\n\t\t\tthis.remove_fastdash();\n\t\t}\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.tools.remove_css(\"fresh_prince\");\n\t\tthis.restore_fastdash();\n\t\t$(\".fresh_prince_video\").remove();\n\t}\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","title":"Fresh Prince","description":"Everything's flipped, turned upside down","developer":"new-xkit","version":"0.1.1","details":"This extension flips everything on the dashboard. Don't expect Tumblr to function correctly whatsoever while this extension is installed.","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/glowing_follow.json b/Extensions/dist/glowing_follow.json new file mode 100644 index 000000000..e2b6c72a5 --- /dev/null +++ b/Extensions/dist/glowing_follow.json @@ -0,0 +1 @@ +{"id":"glowing_follow","script":"//* TITLE Glowing Follow **//\n//* VERSION 1.0.7 **//\n//* DESCRIPTION Glowing plusses on non-mutual followers' blogs **//\n//* DETAILS Makes the Follow button on people's blogs glow if they are following you and you are not following them. Before proceeding, please keep in mind that sometimes, ignorance is bliss. **//\n//* DEVELOPER new-xkit **//\n//* FRAME true **//\n//* BETA false **//\n\nXKit.extensions.glowing_follow = new Object({\n\n\trunning: false,\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tXKit.tools.init_css(\"glowing_follow\");\n\n\t\tvar follow_button = XKit.iframe.follow_button();\n\n\t\tif (follow_button.length > 0) {\n\t\t\t// We got the follow button!\n\n\t\t\t// Are we already following this person?\n\t\t\tif (follow_button.hasClass(\"hidden\") === true) {\n\t\t\t\t// Yeah. No need for this.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar username = XKit.iframe.get_tumblelog();\n\n\t\t\tvar blog_id = \"\";\n\t\t\tvar m_blogs = XKit.tools.get_blogs();\n\t\t\tfor (var i = 0; i < m_blogs.length; i++) {\n\t\t\t\tif (m_blogs[i] !== \"\") {\n\t\t\t\t\tblog_id = m_blogs[i];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (blog_id === \"\") {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tXKit.interface.is_following(username, blog_id).then(function(follow) {\n\t\t\t\tif (follow) {\n\t\t\t\t\tfollow_button.addClass(\"xglow\");\n\t\t\t\t}\n\t\t\t});\n\n\t\t}\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkYzMjcwQUNDRTk3MTFFMjlGRjNBNzgwQUUxNTkwRDkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkYzMjcwQURDRTk3MTFFMjlGRjNBNzgwQUUxNTkwRDkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCRjMyNzBBQUNFOTcxMUUyOUZGM0E3ODBBRTE1OTBEOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCRjMyNzBBQkNFOTcxMUUyOUZGM0E3ODBBRTE1OTBEOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Plmir2wAAAOiSURBVHjapJZZkuowDEUhmLEZ9gXLoBfTBSugeh3sjHnsk5yUKi+kq14X+oDYlq+ka1ly++vr63A4dDqdXq/Xbrfv9/t+v+/3+wxbrdbtdjufz8PhMKXE6uVyccjS4/E4nU7X6xVlh+A8n8/BYPAsRNjkH0pMVdFVAnE0GnW7XW2DMplM+OYDaBRYBZ0lDDPENkt8HI9HfGJj7pdwLIjOrEP2sJ9VPCAUJqfTKfp84DsfHx8ffLPEUGM6EehMJiIywCo6IhWgo8o2dGazWZZlhsUH6MyDzpBVlBmG7zrNfBIOdLEkij1swJiIonsMMMMHoQDNt6Hoew3dQJOHg+8syCaznmqgA7dcLlv/yvf3N1GiAzqWxGEYHGAM2xmz+i46s5CGErwzg954PJbGV2EXZ44muBhjF462C2HIL8OsV4iJEbyLzgzokbI1YZ7IUiEmK36ILm+mbxmReQa6XJmU+s6M9mqC7xhmO5qosTfP+sIYAWksj1IePFU2sCZXeKc9toHyagAIeSedIpf4xQZbTLx8iFKg6yna5Ez4znzjGXQKAR0FTs6c0UUvDbCAJ5iJU5WZV3SDrQn7zQ7QGcIM6SSuq1695Bnqu8wEOlZFN1lrgqfmD9GDLp9e6bjYhJKsM54z6J+fn63/k/l83ji/Xq+951jN70GUKota620BlGhkFeQMOyYoZhu5/qsElCUng68g2vN5XyyxoIGcmYKWT6J5Hx3HwRG9PAMrOAYab+xf5VwIxwksxpJZ5dUnrs1mA4MkLkOT1au/WCxqQNvtVn9xlo24CA5l35rKjFc4v2h82T0Yo2QbQI8Zu+lvkVnbA/1QCLTcCgE57wcmqKUD+7YBNjCDNvVOe7+hEx9qVXRmXCqbmO3eY2AZOEyKboGyQzRyjZuoobDb7US/F4IN0cuWKbopzJrbLCEeT2N2yYzowBmTfdQmZnLm5Vp0EH0T2HXR8CViFXs1cCpEZrQnM9ZUkzM3wDJfQDwKwZik67Xp3NjR0DRnwneUDd3+aAPO+4G+26at8gztqzZCiapJnKroKAczVV/LQw70eBPArL3aPF6tVnzHI0q4yBnfLzZhqS/REbQl1PZi6fc96YPOhPF5Er3FR4O8wwzz8bStopdZJHr1TWe+atsKCDrzHiYGWBXdUKzzVWYAFC0FeuRG9bUqqOkbWQgV9ltP1fdgPFLDd31NVWa8a1LpMiigs9PyAjrH4F0xKePFJhM1dMB/BBgAm4e/rS3FFMoAAAAASUVORK5CYII=","css":".xglow {\n\ttext-shadow: 0 0 3px #FFF;\n\tbackground: rgba(0,0,0,0.70) !important;\n\tanimation: glow 1.75s;\n\t-moz-animation: glow 1.75s;\n\t-webkit-animation: glow 1.75s;\n\tanimation-iteration-count: infinite;\n\t-moz-animation-iteration-count: infinite;\n\t-webkit-animation-iteration-count: infinite;\n}\n\n@keyframes glow {\n\t50% {text-shadow: 0 0 0 #FFF;\n\t\tbackground: rgba(0,0,0,0.38);}\n}\n\n@-moz-keyframes glow {\n\t50% {text-shadow: 0 0 0 #FFF;\n\t\tbackground: rgba(0,0,0,0.38);}\n}\n\n@-webkit-keyframes glow {\n\t50% {text-shadow: 0 0 0 #FFF;\n\t\tbackground: rgba(0,0,0,0.38);}\n}\n\n.xglow::before {\n\tfilter: drop-shadow(0 0 3px #FFF);\n\t-webkit-filter: drop-shadow(0 0 3px #FFF);\n\tanimation: glow_before 1.75s;\n\t-moz-animation: glow_before 1.75s;\n\t-webkit-animation: glow_before 1.75s;\n\tanimation-iteration-count: infinite;\n\t-moz-animation-iteration-count: infinite;\n\t-webkit-animation-iteration-count: infinite;\n}\n\n@keyframes glow_before {\n\t50% {filter: drop-shadow(0 0 0 #FFF);}\n}\n\n@-moz-keyframes glow_before {\n\t50% {filter: drop-shadow(0 0 0 #FFF);}\n}\n\n@-webkit-keyframes glow_before {\n\t50% {-webkit-filter: drop-shadow(0 0 0 #FFF);}\n}\n","title":"Glowing Follow","description":"Glowing plusses on non-mutual followers' blogs","developer":"new-xkit","version":"1.0.7","details":"Makes the Follow button on people's blogs glow if they are following you and you are not following them. Before proceeding, please keep in mind that sometimes, ignorance is bliss.","frame":"true","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/go_to_dash.json b/Extensions/dist/go_to_dash.json new file mode 100644 index 000000000..a33ea9b1b --- /dev/null +++ b/Extensions/dist/go_to_dash.json @@ -0,0 +1 @@ +{"id":"go_to_dash","script":"//* TITLE Go-To-Dash **//\n//* VERSION 1.3.5 **//\n//* DESCRIPTION View a post from a blog on your dashboard or sidebar. **//\n//* DEVELOPER STUDIOXENIX **//\n//* DETAILS This extension adds a 'view' button on blogs that allows you to go back to that post on your dashboard. This feature only works on the blogs you follow, and may fail if the post dates to before you followed them. **//\n//* FRAME true **//\n//* BETA false **//\n\nXKit.extensions.go_to_dash = new Object({\n\n\trunning: false,\n\n\trun: function() {\n\t\t\"use strict\";\n\n\t\t// Not in a blog post\n\t\tif (!XKit.page.blog_frame) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Not following the user\n\t\tif (XKit.iframe.unfollow_button().hasClass(\"hidden\")) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Already inserted\n\t\tif ($(\"#xkit_gotodash\").length > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.tools.init_css(\"go_to_dash\");\n\n\t\tvar go_back_html;\n\t\tvar post_id = XKit.iframe.single_post_id();\n\n\t\tvar html_pieces = ['View'];\n\t\tvar next_post_id = BigInt(post_id) + BigInt(1);\n\t\tgo_back_html = html_pieces.join('dashboard?max_post_id=' + next_post_id);\n\n\t\tvar is_following = XKit.iframe.unfollow_button().length;\n\t\tvar place = is_following ? XKit.iframe.dashboard_button() : XKit.iframe.delete_button();\n\t\tplace.before(go_back_html);\n\t\tXKit.iframe.size_frame_to_fit();\n\n\t\tthis.running = true;\n\t},\n\n\tdestroy: function() {\n\t\t$(\"#xkit_gotodash\").remove();\n\t\tXKit.tools.remove_css(\"go_to_dash\");\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REE1QTk4RUYzODVBMTFFM0ExQ0FBQzk4RDE5Q0VGNzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REE1QTk4RjAzODVBMTFFM0ExQ0FBQzk4RDE5Q0VGNzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpEQTVBOThFRDM4NUExMUUzQTFDQUFDOThEMTlDRUY3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEQTVBOThFRTM4NUExMUUzQTFDQUFDOThEMTlDRUY3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pste0wkAAAT2SURBVHja7FZZbFRlFL77LLedtTOdLkJbullLaGmgIlDENI1oKtL6orESI4LGRJKiTwb7wBOJGhqNaQyoWFRiCA0mRDRGSTAa29IlLdbudJ0us+93Hc+dO8stTic+0Df/nIf7n//c7zv3bP9FR9qRLV0YgvxPkHkR/8kLClFZS1N7kQsvzz0EApREdI+1aosbdDtbSH2h8khkQ8zycGD6V//oN6HFe4i4OcjombRqRGWxmva/b9x3CsUyOcF5Fpx3LnjvfsQHNiN4Jw26OndHfmu3pmhfXBONCiEnszbGeRYxUk3oCilLGa4xJE5Fd++l9VsnuUDaEP0rzZSeyH/ha832+qSP7r5LkaV+1jHMuhdxEiF0xSpbPV3elF35LJFlRVDMWP86WK79cJIPP4iGv3UAQdGUQDxyj3ZnVx6RXQsv9Nmvn/AOXmEdk0LIh0SRKI8IQQ+zOhqavMG6lihTKaGzga2msE4IMeH535RoEiAEJCUYklVxzFD7Uhx9rnf5Wlto/o+kgdr2qGl/O66RnkUe8Y18a+85EVkakp01Pf4GXfLkBkAgQIEiIeC+pbFDtuYDa/aeV1jnRPyUQLIrmx9pu2nc8ypGUclXIvZ+550PRUYKP2naTpc/owSUMKUcJIQyV6nzd0ne86yn/zLjmpT14LK5oSPv+S7SXBwVeFxbChoiS4trpVP/2BXf6HXZLbrkkBIQhIAwJRdd1pzopKCn9wP5iDSUWBrPZ1c1o4RKKoGc0vxjX4pCBEUJjKLd/V94+i+E537X17yI4iRlKVcCSlWEKqpIZa2Si5JdHRfCDgiLtvio5XCHurA21dWqLPW2PamSs1YCAuedh2KjzCVQu7rq4/6/LqcnoIzb5PTywTXQ63a9bWk8i9M5mbodFhC4RjnnNBBIdZllU2Ju6ANMpZMbDcWk3EQFJjN6zFjOogrBsCTnBkyYBEmJrN6T38FpK2yDUz1LV19mVseQzJ+AEQRdgGtMCQWuxCQQVJMaLO778SlnKsKoApFzhWZvrgTXcw6egb6NzwWBFYIumB1ScEgN718HBMpSTeWUxdInCmG3EpNA8dQmYh+M97dar6t5zTvwicTqHFr/+SzjmDI98SZwc86ZtZ/e4wMrKE4hKC4E7YCg2bYXkg/GjH0kOHlNiQnNQCWFdf7NuaRBDxVpqDuOkgZZzweX3X92rnzfLgSdUaD0LvB+KJspzj0usj66tBWKWIYLLw0qAUHw00+bIeaySAXEMnTpU7GPyKZMZcGpW4kjCNhEeHFICKyxrglEZGS9ylpjbniXMhXBKxAc78BXvHc2CQiCnz6SK6UlLhjvW1Lbagl9PiSLMu9Q59WFZn6B0MoGQnidc45DdYElbNW2vdamcypbtey+b/g7/0i3Ai0m0507HxzXpsq8li5cK1dFFO4A79DVwPgNkfElbUhjhWF3G3yrHHpYgfEfHbfPKW3iRTXz8e40d3BOpe25ziRHVODgjhT8qxB9jKQJQyH0BwyG5GUHA9Vx+zznnkhTxrOf1qe950ljibH+lLb4oEIJt0E01oeKcSMKvtEez93PxYgrfZ/Mdh3Y9GeCpDVFh/TVLZS1It15NDzf5+67yDoydSJ6/7PDmX9ZUJzAtVZ1QR2RnYtBWKgsPrDO+1ciywNCcCU2lMVMBHMXm7b4xwsntpYg82/PQyGgtpTgHwEGAAr05bylXlXaAAAAAElFTkSuQmCC","css":"#xkit_gotodash::before {\n\tcontent: \"\\EA18\";\n\tfont-family: tumblr-icons, Blank;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n\tfont-smoothing: antialiased;\n\ttext-rendering: optimizeLegibility;\n\tfont-style: normal;\n\tfont-variant: normal;\n\tfont-weight: 400;\n\ttext-decoration: none;\n\ttext-transform: none;\n}\n","title":"Go-To-Dash","description":"View a post from a blog on your dashboard or sidebar.","developer":"STUDIOXENIX","version":"1.3.5","details":"This extension adds a 'view' button on blogs that allows you to go back to that post on your dashboard. This feature only works on the blogs you follow, and may fail if the post dates to before you followed them.","frame":"true","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/hideavatars.json b/Extensions/dist/hideavatars.json new file mode 100644 index 000000000..086640d4c --- /dev/null +++ b/Extensions/dist/hideavatars.json @@ -0,0 +1 @@ +{"id":"hideavatars","script":"//* TITLE Hide Avatars **//\n//* VERSION 1.0.0 **//\n//* DESCRIPTION Hides avatars on a per-url basis **//\n//* DEVELOPER New-XKit **//\n//* FRAME false **//\n//* BETA true **//\n\nXKit.extensions.hideavatars = new Object({\n\n\trunning: false,\n\n\thidden_avatar: 'data:image/png;base64,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',\n\n\tblognames: [],\n\n\trun: function() {\n\n\t\tthis.running = true;\n\n\t\tXKit.tools.init_css(\"hideavatars\");\n\n\t\tXKit.extensions.hideavatars.load_blogs();\n\n\t\tif (XKit.page.react) {\n\t\t\tXKit.tools.async_add_function(async () => {\n\t\t\t\t/* globals tumblr */\n\t\t\t\treturn await tumblr.getCssMap();\n\t\t\t})\n\t\t\t.then(({stickyContainer, reblogHeader}) => {\n\t\t\t\tconst sticky_top_selector = `.xkit--react .${stickyContainer[0]}`;\n\t\t\t\tconst sticky_selector = this.blognames.map(x => `${sticky_top_selector} a[title=\"${x.title}\"]::before`).join(',');\n\n\t\t\t\tconst header_top_selector = '.xkit--react article header';\n\t\t\t\tconst header_selector = this.blognames.map(x => `${header_top_selector} a[title=\"${x.title}\"]::before`).join(',');\n\n\t\t\t\tconst reblog_top_selector = `.xkit--react .${reblogHeader[0]}`;\n\t\t\t\tconst reblog_selector = this.blognames.map(x => `${reblog_top_selector} a[title=\"${x.title}\"]::before`).join(',');\n\t\t\t\tconst reblog_badge_selector = this.blognames.map(x => `${reblog_top_selector} a[title=\"${x.title}\"] svg`).join(',');\n\n\t\t\t\tXKit.tools.add_css(`\n\t\t\t\t\t${sticky_selector}, ${header_selector}, ${reblog_selector} {\n\t\t\t\t\t\tcontent: \"\";\n\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\tbackground-image: url(\"${this.hidden_avatar}\");\n\t\t\t\t\t\tbackground-size: contain;\n\t\t\t\t\t\tposition: absolute;\n\t\t\t\t\t\tz-index: 1;\n\t\t\t\t\t}\n\t\t\t\t\t${sticky_selector} {\n\t\t\t\t\t\theight: 64px;\n\t\t\t\t\t\twidth: 64px;\n\t\t\t\t\t}\n\t\t\t\t\t${header_selector} {\n\t\t\t\t\t\theight: 38px;\n\t\t\t\t\t\twidth: 38px;\n\t\t\t\t\t}\n\t\t\t\t\t${reblog_selector} {\n\t\t\t\t\t\theight: 25px;\n\t\t\t\t\t\twidth: 25px;\n\t\t\t\t\t}\n\t\t\t\t\t${reblog_badge_selector} {\n\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t}\n\t\t\t\t`, 'hideavatars');\n\t\t\t});\n\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.post_listener.add(\"hideavatars\", XKit.extensions.hideavatars.hide_avatars);\n\t\tXKit.extensions.hideavatars.hide_avatars();\n\n\t},\n\n\thide_avatars: function() {\n\t\tconst {hidden_avatar, blognames} = XKit.extensions.hideavatars;\n\n\t\tif (XKit.interface.where().dashboard) {\n\t\t\tblognames.forEach(function(blogname) {\n\t\t\t\t//Regular avatars\n\t\t\t\t$(\".post_avatar_link\").filter(function() {\n\t\t\t\t\treturn $(this).attr(\"href\").split(\"//\")[1].split(\".\")[0] === blogname.title;\n\t\t\t\t}).attr(\"style\", \"opacity: 0.5; background-image: url('\" + hidden_avatar + \"');\");\n\n\t\t\t\t//Avatars in notifications\n\t\t\t\t$(\".notification a\").filter(function() {\n\t\t\t\t\treturn $(this).attr(\"href\").split(\"//\")[1].split(\".\")[0] === blogname.title;\n\t\t\t\t}).find(\".avatar\").attr(\"src\", hidden_avatar).attr(\"style\", \"opacity: 0.5\");\n\t\t\t});\n\t\t}\n\n\t\tif (XKit.interface.where().inbox) {\n\t\t\tXKit.extensions.hideavatars.blognames.forEach(function(blogname) {\n\t\t\t\t$(\".post_avatar_link\").filter(function() {\n\t\t\t\t\treturn $(this).attr(\"href\").split(\"//\")[1].split(\".\")[0] === blogname.title;\n\t\t\t\t}).find(\".post_avatar_image\").attr(\"src\", hidden_avatar);\n\n\t\t\t\t$(\".post_avatar_link\").filter(function() {\n\t\t\t\t\treturn $(this).attr(\"href\").split(\"//\")[1].split(\".\")[0] === blogname.title;\n\t\t\t\t}).attr(\"style\", \"opacity: 0.5; background-image: url('\" + hidden_avatar + \"');\");\n\t\t\t});\n\t\t}\n\n\t\tif (XKit.interface.where().activity) {\n\t\t\t//Top-four avatars\n\t\t\tXKit.extensions.hideavatars.blognames.forEach(function(blogname) {\n\t\t\t\t$(\".ui_jumbo_avatar\").filter(function() {\n\t\t\t\t\treturn $(this).attr(\"title\") === blogname.title;\n\t\t\t\t}).attr(\"style\", \"opacity: 0.5; background-image: url('\" + hidden_avatar + \"');\");\n\n\t\t\t\t//Avatars in activity lines\n\t\t\t\t$(\".ui_avatar_link\").filter(function() {\n\t\t\t\t\treturn $(this).attr(\"title\") === blogname.title;\n\t\t\t\t}).find(\".avatar\").attr(\"style\", \"opacity: 0.5; background-image: url('\" + hidden_avatar + \"');\");\n\t\t\t});\n\t\t}\n\t},\n\n\tload_blogs: function() {\n\n\t\tvar m_storage = XKit.storage.get(\"hideavatars\", \"blognames\", \"\");\n\n\t\tif (m_storage !== \"\") {\n\t\t\ttry {\n\t\t\t\tXKit.extensions.hideavatars.blognames = JSON.parse(m_storage);\n\t\t\t} catch (e) {\n\t\t\t\tXKit.extensions.hideavatars.blognames = [];\n\t\t\t\tconsole.error(\"Failed to parse m_storage in XKit.extensions.hideavatars.load_blogs\");\n\t\t\t}\n\t\t} else {\n\t\t\tXKit.extensions.hideavatars.blognames = [];\n\t\t}\n\n\t},\n\n\tsave_blogs: function() {\n\n\t\ttry {\n\t\t\tconsole.log(\"Trying to save \" + XKit.extensions.hideavatars.blognames.length + \" blogs..\");\n\t\t\tconsole.log(JSON.stringify(XKit.extensions.hideavatars.blognames));\n\t\t\tXKit.storage.set(\"hideavatars\", \"blognames\", JSON.stringify(XKit.extensions.hideavatars.blognames));\n\t\t} catch (e) {\n\t\t\tXKit.window.show(\"Unable to save data\", \"Hide Avatars could not save data

    Error:

    \" + e.message + \"

    \", \"error\", \"
    OK
    \");\n\t\t}\n\n\t},\n\n\tcpanel: function(m_div) {\n\n\t\tXKit.extensions.hideavatars.load_blogs();\n\n\t\tif ($(\"#xkit-hideavatars-custom-panel\").length > 0) {\n\t\t\t// Panel already exists, probably in refresh mode.\n\t\t\t// Remove it first.\n\t\t\t$(\"#xkit-hideavatars-custom-panel\").remove();\n\t\t}\n\n\t\tvar cat_list = \"\";\n\n\t\tif (XKit.extensions.hideavatars.blognames.length === 0) {\n\t\t\tcat_list = \"
    You have no blogs set.
    \";\n\t\t} else {\n\n\t\t\tfor (var j = 0; j < XKit.extensions.hideavatars.blognames.length; j++) {\n\n\t\t\t\tcat_list = cat_list + \"
    \" + XKit.extensions.hideavatars.blognames[j].title + \"
    \";\n\n\t\t\t}\n\t\t}\n\n\t\tvar m_html = \"
    \" +\n\t\t\t\t\t\"
    \" +\n\t\t\t\t\t\t\"
    Add new blog
    \" +\n\t\t\t\t\t\"
    \" +\n\t\t\t\t\tcat_list +\n\t\t\t\t\"
    \";\n\n\t\t$(m_div).html(m_html);\n\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller();\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller({ scroll: 'top' });\n\n\t\t$(\"#xkit-hideavatars-add-blogname\").click(function() {\n\n\t\t\tXKit.window.show(\"Add blog\", \"Blog URL:\", \"question\", \"
    Add Blog
    Cancel
    \");\n\n\t\t\t$(\"#xkit-hideavatars-create-blogname\").click(function() {\n\n\t\t\t\tvar $m_title = $(\"#xkit-hideavatars-blogname-add-title\");\n\t\t\t\tvar m_title = $m_title.val();\n\t\t\t\tfunction complain(problem) {\n\t\t\t\t\t$m_title\n\t\t\t\t\t\t.css(\"border-color\", \"red\")\n\t\t\t\t\t\t.attr(\"placeholder\", problem)\n\t\t\t\t\t\t.val(\"\")\n\t\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t\t$m_title\n\t\t\t\t\t\t\t\t.removeAttr(\"style\")\n\t\t\t\t\t\t\t\t.attr(\"placeholder\", \"e.g. new-xkit-extension\")\n\t\t\t\t\t\t\t\t.off(\"click\");\n\t\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ($.trim(m_title) === \"\") {\n\t\t\t\t\tcomplain(\"Please enter a blog name.\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (XKit.extensions.hideavatars.blogname_exists(m_title)) {\n\t\t\t\t\tcomplain(`You've already added ${m_title}.`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tXKit.extensions.hideavatars.load_blogs();\n\n\t\t\t\tXKit.extensions.hideavatars.blognames.push({\n\t\t\t\t\tid: XKit.tools.random_string() + new Date().getTime(),\n\t\t\t\t\ttitle: m_title\n\t\t\t\t});\n\n\t\t\t\tXKit.extensions.hideavatars.save_blogs();\n\t\t\t\tXKit.extensions.hideavatars.cpanel(m_div);\n\t\t\t\tXKit.window.close();\n\n\t\t\t});\n\n\t\t});\n\n\t\t$(\".xkit-hideavatars-cp-item\").click(function() {\n\n\t\t\tvar m_cat_obj = XKit.extensions.hideavatars.get_blogname($(this).attr('data-id'));\n\n\t\t\tif (m_cat_obj === false) {\n\t\t\t\tXKit.window.show(\"Error\",\n\t\t\t\t\t\"Error HAV-136: \" +\n\t\t\t\t\t\"

    Could not find blog name with data-id \" + $(this).attr('data-id') + \"

    \",\n\t\t\t\t\t\"error\",\n\t\t\t\t\t'
    OK
    '\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tXKit.window.show(\"Edit blog name\", \"Blog Name:
    If you delete this blog, its avatar will show again\", \"question\", \"
    Save blogname
    Delete
    Cancel
    \");\n\n\t\t\t$(\"#xkit-hideavatars-save-blogname\").click(function() {\n\n\t\t\t\tXKit.extensions.hideavatars.load_blogs();\n\n\t\t\t\tfor (var i = 0; i < XKit.extensions.hideavatars.blognames.length; i++) {\n\n\t\t\t\t\tif (m_cat_obj.id === XKit.extensions.hideavatars.blognames[i].id) {\n\n\t\t\t\t\t\tXKit.extensions.hideavatars.blognames[i].title = $(\"#xkit-hideavatars-blogname-add-title\").val();\n\t\t\t\t\t\tXKit.extensions.hideavatars.save_blogs();\n\n\t\t\t\t\t\tXKit.window.close();\n\n\t\t\t\t\t\tXKit.extensions.hideavatars.cpanel(m_div);\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\t$(\"#xkit-hideavatars-delete-blogname\").click(function() {\n\n\t\t\t\tXKit.window.show(\"You sure?\", \"Delete blog \\\"\" + m_cat_obj.title + \"\\\"?\", \"warning\", \"
    Confirm
    Cancel
    \");\n\n\t\t\t\t$(\"#xkit-hideavatars-delete-blogname-confirm\").click(function() {\n\n\t\t\t\t\tXKit.extensions.hideavatars.load_blogs();\n\n\t\t\t\t\tfor (var i = 0; i < XKit.extensions.hideavatars.blognames.length; i++) {\n\n\t\t\t\t\t\tif (m_cat_obj.id === XKit.extensions.hideavatars.blognames[i].id) {\n\n\t\t\t\t\t\t\tXKit.extensions.hideavatars.blognames.splice(i, 1);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tXKit.extensions.hideavatars.save_blogs();\n\t\t\t\t\tXKit.extensions.hideavatars.cpanel(m_div);\n\t\t\t\t\tXKit.window.close();\n\n\t\t\t\t});\n\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\tget_blogname: function(id) {\n\n\t\tfor (var i = 0; i < XKit.extensions.hideavatars.blognames.length; i++) {\n\n\t\t\tif (id === XKit.extensions.hideavatars.blognames[i].id) {\n\n\t\t\t\treturn XKit.extensions.hideavatars.blognames[i];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tblogname_exists: function(title) {\n\n\t\ttitle = title.toLowerCase();\n\n\t\tfor (var i = 0; i < XKit.extensions.hideavatars.blognames.length; i++) {\n\n\t\t\tif (title === XKit.extensions.hideavatars.blognames[i].title.toLowerCase()) {\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tdestroy: function() {\n\t\tXKit.tools.remove_css(\"hideavatars\");\n\t\tXKit.post_listener.remove(\"hideavatars\");\n\t}\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFfgEAgQEAhAEAhQIAiQIAjQIAkQIAlQIAmQMAnQMAnhwcoQMApAMApgQAqQQArQQAoB0coh4cpB4csQQAtQQAuQUAvQUApyAcqSAcrCEcrSIcsCMcsyQctSQcuCQcuyYcwQUAxAUAxgYAyAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6tFkOQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABh0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC41ZYUyZQAAA/lJREFUWEeFlmFb4kgQhOd0dXUF3d0oqAiI/P//eFXV1ZMOiXf1gYdkut6p7oSQ9vT4+Lherx4e7qG7u7uf0C11c3szSme4hIo7FD5A6zWsTwTIT0Dx21hkRCesViK0WQAW2v8jpSMtBCIyJKD4vb389lodUQiK0HoDzDbGt+8a+nGtrxNCRFgZEAO4z/3TTnPXSEBVJyDCJIEI9st2JekrzyWBYZUAEQCICeQARv/VP11kBKATFAFTaNlBTkB+2osfAoLcbKICVqsSgHuwMLb/a5kAxCQCmyCACdhVDUBLsx1qPB7HUCO03sE4wchvryVCzMGAiLBu5RL0AMwv2x9JX3HqyoOMHiLBqmkE8isA/QQwf9gpHLCL6RSCUBIowA2vAGoBsFkSIOc4GQIBvQNNQB3Y/1sqhGkP2HvV8CFCb6EEoPuXEY4QCTLCPAF2cILw/6I6YBwC/RGBCXgVHcAJmgHyB+FvA2FyIRdmcJsXYQHwZzaDmqCPYJzBHFASoHo6AxE6YJxBASxdBQGcwC0sJlgcIgnwjjeSe+AQ4k4WgYiFy+gOFoYYU0wACRT9/DH0i+AhRoLpjZBD8E/B9gA4wHgR7vVjmg1BBP4A5QzhaB4gEpTngQCKcF1/zbIDoAAJyPsonkhOMItQ1f2TGeKBUh/qGWGBUP21g3ioZg89Aruw09KjoDQQgHisJyAIEQGE16291Db9lwHW/GO5nEIQttuOeH0NQPr7BOKfqU6hEODavobwJezTBhgAgP7vmgASgEhvUKb7RwC9YuT7QR9DEm7k6yr7j4B4PxjfMKKJRNhpLfj9hvLNO9KbjV1vPDvxK4AAc8L7+xtkK8Sjt3f3P/oBwFuaCL6bgvAuydQV57x98RMQTfQMu10UU9VM7Xa5vxtIAAi8lg/3u5DrLxWLZQAwt6EQ9h/7qFlEeGW/3+dLJqxDGzoBKyB8g/BJ+D9Qs+9+A0igH4SP/YdLpWKltAWV/qE940OEWBDC1TMBbj8A3HcYnhPw1AHaZJLCEjvl/Z8BSMLBS5Qq7QvlSesAAO0CkADE4TBFlHJoeng4aH8QXtrLiwkAVAIFSsjHKVRmgOcGPwQCATPEklSn7RGACYQYhqMW/pcQVQCEf9M2STia8J8MVxyP9MOJBJskHCGvf4PwIv1HOmDcIIEIboPDlHCjzaQF1cT45N+0TxM6QnVWtUrdLgusn+2ThB4CiBqkarjYnfbNJwEiVIQEQ5FPXtjhF6BnCEJnXMqrqlR86NROpwkiGTOIT/fmIfpP7TwSLhBLUoHMsf/pq51NCMS3DJyKpbF7+c8AnL8miIRAtMmdwpIqVE77WYCO0CLEwiVpMcLDTv/5/C/5oui9scKCAwAAAABJRU5ErkJggg==\n","css":"#xkit-hideavatars-custom-panel-toolbar {\n\tbackground: rgb(245,245,245);\n\tpadding: 3px 15px;\n\tborder-bottom: 1px solid rgb(190,190,190);\n}\n\n.xkit-hideavatars-cp-item {\n\tpadding: 10px 16px 10px 16px;\n\tborder-bottom: 1px dotted rgb(190,190,190);\n\tcursor: pointer;\n}\n\n.xkit-hideavatars-cp-item:hover {\n\tbackground: rgb(240,240,240);\n}\n","title":"Hide Avatars","description":"Hides avatars on a per-url basis","developer":"New-XKit","version":"1.0.0","frame":"false","beta":"true","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/highlighter.json b/Extensions/dist/highlighter.json new file mode 100644 index 000000000..a0482f088 --- /dev/null +++ b/Extensions/dist/highlighter.json @@ -0,0 +1 @@ +{"id":"highlighter","script":"//* TITLE Highlighter **//\n//* VERSION 0.1.6 **//\n//* DESCRIPTION Don't miss things **//\n//* DETAILS The cousin of Blacklister, this extension highlights posts depending on the words you decide. When a word you add is found on a post, the post will get a yellow-ish background. **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n//* SLOW true **//\n\nXKit.extensions.highlighter = new Object({\n\n\trunning: false,\n\tslow: true,\n\n\tpreferences: {\n\t\t\"sep1\": {\n\t\t\ttext: \"Under the Hood options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"use_improved\": {\n\t\t\ttext: \"Use improved checking\",\n\t\t\tslow: true,\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"dont_highlight_me\": {\n\t\t\ttext: \"Don't highlight my posts\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"check_for_blocking\": {\n\t\t\ttext: \"Don't highlight posts hidden by Blacklist\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"sep2\": {\n\t\t\ttext: \"Highlighted Words\",\n\t\t\ttype: \"separator\"\n\t\t}\n\t},\n\n\thighlightered: [],\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tXKit.tools.init_css(\"highlighter\");\n\n\t\tvar m_highlighter = XKit.storage.get(\"highlighter\", \"words\", \"\").split(\",\");\n\t\tif (m_highlighter !== \"\") {\n\t\t\tthis.highlightered = m_highlighter;\n\t\t}\n\n\t\tif ($(\".posts .post\").length > 0) {\n\t\t\tXKit.post_listener.add(\"highlighter\", XKit.extensions.highlighter.check);\n\t\t\tXKit.extensions.highlighter.check();\n\t\t}\n\n\t},\n\n\tcheck: function() {\n\n\t\t$(\".posts .post\").not(\".mine\").not(\".xhighlighter-done\").each(function() {\n\n\t\t\t// Check if it's something we should not touch.\n\t\t\tif ($(this).attr('id') === \"new_post\") { return; }\n\t\t\tif ($(this).css(\"display\") === \"none\") { return; }\n\n\t\t\t// Add class to not do this twice.\n\t\t\t$(this).addClass(\"xhighlighter-done\");\n\n\t\t\t// if has no text content, no need to do this.\n\t\t\tif ($(this).find(\".post_content\").length <= 0) { return; }\n\n\t\t\t// Collect the tags\n\t\t\tvar m_tags = \"\";\n\t\t\tif ($(this).find(\".tag\").length > 0) {\n\t\t\t\t$(this).find(\".tag\").each(function() {\n\t\t\t\t\tm_tags = m_tags + \" \" + $(this).html().replace(\"#\", \"\");\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif ($(this).find(\".post_tag\").length > 0) {\n\t\t\t\t\t$(this).find(\".post_tag\").each(function() {\n\t\t\t\t\t\tm_tags = m_tags + \" \" + $(this).html().replace(\"#\", \"\");\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Collect the title contents too.\n\t\t\tvar m_title = \"\";\n\t\t\tif ($(this).find(\".post_title\").length > 0) {\n\t\t\t\tm_title = $(this).find(\".post_title\").html();\n\t\t\t}\n\n\t\t\t// Collect the content.\n\t\t\tvar m_content = $(this).find(\".post_content_inner\").html() || \"\";\n\n\t\t\tm_content = m_content + \" \" + m_title + \" \" + m_tags;\n\t\t\tm_content = XKit.tools.replace_all(m_content, \" \", \" \");\n\t\t\tm_content = m_content.toLowerCase();\n\n\t\t\t// Strip HTML tags.\n\t\t\tm_content = m_content.replace(/<(?:.|\\n)*?>/gm, '');\n\n\t\t\tvar m_result = XKit.extensions.highlighter.do_post(m_content);\n\t\t\tif (m_result !== \"\") {\n\t\t\t\tXKit.extensions.highlighter.highlight_post($(this), m_result);\n\t\t\t}\n\n\n\t\t});\n\n\t\t$(\".xhighlighter_open_post\").unbind(\"click\");\n\t\t$(\".xhighlighter_open_post\").bind(\"click\", function() {\n\n\t\t\tvar m_div = $(\"#\" + $(this).attr('data-post-id'));\n\t\t\t$(m_div).removeClass(\"xhighlighter_highlightered_post\");\n\t\t\t$(m_div).find(\".post_info\").css(\"display\", \"block\");\n\t\t\t$(m_div).find(\".post_controls\").css(\"display\", \"block\");\n\t\t\t$(m_div).find(\".post_footer_links\").css('display', 'block');\n\t\t\t$(m_div).find(\".post_tags\").css('display', 'block');\n\t\t\t$(m_div).find(\".post_footer\").css('display', 'table');\n\n\t\t\t$(m_div).find(\".full_answer_container_wrapper\").css(\"display\", \"block\");\n\n\t\t\t$(m_div).find(\".xhighlighter_excuse\").remove();\n\t\t\t$(m_div).find(\".post_content\").html($(m_div).find(\".xhighlighter_old_content\").html());\n\n\t\t});\n\n\t\tXKit.tools.add_function(function() {\n\t\t\t/*Tumblr.Events.on(\"DOMEventor:flatscroll\", function(n) {\n\t\t\t\tconsole.log(JSON.stringify(n));\n\t\t\t\t//n.documentHeight = 0;\n\t\t\t\t// if ((n.documentHeight - n.windowScrollY) < n.windowHeight * 3) {\n\t\t\t\tconsole.log(\" -- 1] \" + (n.documentHeight - n.windowScrollY));\n\t\t\t\tconsole.log(\" -- 2] \" + n.windowHeight * 3 + \" <-- must be smaller than this\");\n\t\t\t});*/\n\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t}, true, \"\");\n\n\t},\n\n\thighlight_post: function(obj, word) {\n\n\t\tif (XKit.extensions.highlighter.preferences.dont_highlight_me.value === true) {\n\t\t\tif ($(obj).hasClass(\"is_mine\") === true) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (XKit.extensions.highlighter.preferences.check_for_blocking.value === true) {\n\t\t\tif ($(obj).hasClass(\"xblacklist_hidden_post\") === true || $(obj).hasClass(\"xblacklist_blacklisted_post\")) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t$(obj).append(\"
    \" + word + \"
    \");\n\t\t$(obj).addClass(\"xhighlighter_highlightered_post\");\n\n\t},\n\n\tdo_post: function(post_content) {\n\n\t\tif ($.trim(post_content) === \"\") { return \"\"; }\n\t\tpost_content = post_content.replace(/\\n/g, ' ');\n\t\tvar p_words = post_content.split(\" \");\n\n\t\tfor (var i = 0; i < XKit.extensions.highlighter.highlightered.length; i++) {\n\n\t\t\tvar m_word = XKit.extensions.highlighter.highlightered[i].toLowerCase();\n\t\t\tif ($.trim(m_word) === \"\") { continue; }\n\n\t\t\tvar m_word_wildcard = false;\n\n\t\t\tif (m_word.substring(m_word.length - 1) === \"*\") {\n\t\t\t\t// This word is wildcarded!\n\t\t\t\tm_word_wildcard = true;\n\t\t\t\tm_word = m_word.substring(0, m_word.length - 1);\n\t\t\t}\n\n\t\t\tif (m_word.indexOf(\" \") !== -1) {\n\t\t\t\tm_word_wildcard = true;\n\t\t\t}\n\n\t\t\tif (m_word_wildcard === false) {\n\n\t\t\t\t// Well this one is easy:\n\n\t\t\t\t// First lets strip the dots or commas.\n\n\t\t\t\tif (p_words.indexOf(m_word) !== -1) {\n\t\t\t\t\t// We've found the word!\n\t\t\t\t\treturn m_word;\n\t\t\t\t} else {\n\t\t\t\t\tif (XKit.extensions.highlighter.preferences.use_improved.value === true) {\n\t\t\t\t\t\t// This will use some CPU...\n\t\t\t\t\t\tif (post_content.indexOf(m_word) !== -1) {\n\t\t\t\t\t\t\tfor (var j = 0; j < p_words.length; j++) {\n\t\t\t\t\t\t\t\tif (p_words[j].indexOf(m_word) !== -1) {\n\t\t\t\t\t\t\t\t\tvar mp_word = p_words[j].replace(/\\./g, '');\n\t\t\t\t\t\t\t\t\tmp_word = mp_word.replace(/\\,/g, '');\n\t\t\t\t\t\t\t\t\tmp_word = mp_word.replace(/\\u2026/g, '');\n\t\t\t\t\t\t\t\t\tif (m_word === mp_word) {\n\t\t\t\t\t\t\t\t\t\treturn m_word;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Ugh. Wildcarded. This will\n\t\t\t\t// require some processing power.\n\t\t\t\t// To save CPU time, let's run it in the\n\t\t\t\t// post_content first, continue only if\n\t\t\t\t// we can find it there.\n\t\t\t\tif (post_content.indexOf(m_word) !== -1) {\n\n\t\t\t\t\t// Ugh. Even worse, we've found it,\n\t\t\t\t\t// now we need to get into a loop.\n\t\t\t\t\tfor (var p_i = 0; p_i < p_words.length; p_i++) {\n\n\t\t\t\t\t\tif (p_words[p_i] === \"\") { continue; }\n\t\t\t\t\t\tif (p_words[p_i].indexOf(m_word) !== -1) {\n\t\t\t\t\t\t\treturn m_word;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (p_i < p_words.length) {\n\t\t\t\t\t\t\tvar tmp_word = p_words[p_i] + \" \" + p_words[p_i + 1];\n\n\t\t\t\t\t\t\t// This is a dirty fix but it should work for now.\n\t\t\t\t\t\t\tif (p_words[p_i + 2] !== \"\" || typeof p_words[p_i + 2] !== \"undefined\") {\n\t\t\t\t\t\t\t\ttmp_word = tmp_word + \" \" + p_words[p_i + 2];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (p_words[p_i + 3] !== \"\" || typeof p_words[p_i + 3] !== \"undefined\") {\n\t\t\t\t\t\t\t\ttmp_word = tmp_word + \" \" + p_words[p_i + 3];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (p_words[p_i + 4] !== \"\" || typeof p_words[p_i + 4] !== \"undefined\") {\n\t\t\t\t\t\t\t\ttmp_word = tmp_word + \" \" + p_words[p_i + 4];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (tmp_word.indexOf(m_word) !== -1) {\n\t\t\t\t\t\t\t\treturn m_word;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// Found nothing.\n\t\treturn \"\";\n\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\t$(\".xhighlighter-done\").each(function() {\n\t\t\t$(this).removeClass(\"xhighlighter_highlightered_post\");\n\t\t});\n\t\t$(\".xhighlighter-reason\").remove();\n\t\t$(\".xhighlighter-done\").removeClass(\"xhighlighter-done\");\n\t\t$(\".xhighlighter_highlightered_post\").removeClass(\"xhighlighter_highlightered_post\");\n\t\tXKit.tools.remove_css(\"highlighter\");\n\t},\n\n\tcreate_highlighter_div: function(word) {\n\n\t\tvar m_html = \"
    \" + word + \"
    \";\n\t\treturn m_html;\n\n\t},\n\n\tcheck_if_exists: function(word) {\n\n\t\tif (XKit.extensions.highlighter.highlightered.indexOf(word) !== -1) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\n\t},\n\n\tsave_highlighter: function() {\n\n\t\tXKit.storage.set(\"highlighter\", \"words\", this.highlightered.join(\",\"));\n\n\t},\n\n\tcpanel: function(m_div) {\n\n\t\tif ($(\"#xkit-highlighter-custom-panel\").length > 0) {\n\t\t\t// Panel already exists, probably in refresh mode.\n\t\t\t// Remove it first.\n\t\t\t$(\"#xkit-highlighter-custom-panel\").remove();\n\t\t}\n\n\t\tvar m_html = \"
    Add a new word..
    Tips on Highlighting
    Delete All
    \";\n\t\tif (XKit.extensions.highlighter.highlightered.length <= 1) {\n\t\t\tm_html = m_html + \"
    You have no highlighted words.
    Click on the button above to add new words to your Highlighter.
    \";\n\t\t} else {\n\t\t\tfor (var i = 0; i < XKit.extensions.highlighter.highlightered.length; i++) {\n\t\t\t\tif (XKit.extensions.highlighter.highlightered[i] !== \"\") {\n\t\t\t\t\tm_html = m_html + XKit.extensions.highlighter.create_highlighter_div(XKit.extensions.highlighter.highlightered[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tm_html = m_html + \"
    \";\n\t\t$(m_div).append(m_html);\n\n\t\t$(\".xkit-highlightered-word-delete\").unbind(\"click\");\n\t\t$(\".xkit-highlightered-word-delete\").click(function() {\n\n\t\t\tvar m_index = XKit.extensions.highlighter.highlightered.indexOf($(this).attr('data-word'));\n\t\t\tif (m_index === -1) { return; }\n\n\t\t\tXKit.extensions.highlighter.highlightered.splice(m_index, 1);\n\t\t\tXKit.extensions.highlighter.save_highlighter();\n\t\t\tXKit.extensions.highlighter.cpanel(m_div);\n\t\t\tXKit.extensions.xkit_preferences.restart_extension(\"highlighter\");\n\n\t\t});\n\n\t\t$(\"#highlighter-tips\").click(function() {\n\n\t\t\tXKit.window.show(\"A few tips on highlighting\", \"
      \" +\n\t\t\t\t\"
    • You can add \\\"*\\\" at the end of a word to wildcard it.
    • \" +\n\t\t\t\t\"
    • Wildcarded words match words that begin with it: for example, \\\"cat*\\\" will find \\\"category\\\", \\\"capital\\\" etc.
    • \" +\n\t\t\t\t\"
    • If you add something that contains 2 or more words, it will be wildcarded automatically
    • \" +\n\t\t\t\t\"
    • Adding too much words, especially wildcard ones, will slow your computer down dramatically.
    • \" +\n\t\t\t\t\"
    \", \"info\", \"
    OK
    \");\n\n\t\t});\n\n\t\t$(\"#highlighter-delete-all\").click(function() {\n\n\t\t\tXKit.window.show(\"Delete list\", \"Delete all your highlightered words?\", \"question\", \"
    Yes, delete my list.
    Cancel
    \");\n\n\t\t\t$(\"#xkit-highlighter-delete-all-continue\").click(function() {\n\n\t\t\t\tvar m_array = [];\n\n\t\t\t\tXKit.extensions.highlighter.highlightered = m_array;\n\t\t\t\tXKit.extensions.highlighter.save_highlighter();\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.extensions.highlighter.cpanel(m_div);\n\t\t\t\tXKit.extensions.xkit_preferences.restart_extension(\"highlighter\");\n\n\t\t\t});\n\n\t\t});\n\n\t\t$(\"#highlighter-add-button\").click(function() {\n\n\t\t\tXKit.window.show(\"Add word to highlighter\", \"Enter the word you want to add.
    Your words can not contain commas or backslashes.
    Before adding a word, please check \\\"Tips on Highlighting\\\" section.\", \"question\", \"
    Add word
    Cancel
    \");\n\n\t\t\t$(\"#xkit-highlighter-add-word\").click(function() {\n\n\t\t\t\tvar $m_to_add = $(\"#xkit-highlighter-word\");\n\t\t\t\tvar m_to_add = $m_to_add.val();\n\t\t\t\tfunction complain(problem) {\n\t\t\t\t\t$m_to_add\n\t\t\t\t\t\t.css(\"border-color\", \"red\")\n\t\t\t\t\t\t.attr(\"placeholder\", problem)\n\t\t\t\t\t\t.val(\"\")\n\t\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t\t$m_to_add\n\t\t\t\t\t\t\t\t.removeAttr(\"style\")\n\t\t\t\t\t\t\t\t.attr(\"placeholder\", \"Enter a word here.\")\n\t\t\t\t\t\t\t\t.off(\"click\");\n\t\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (m_to_add === \"\" || $.trim(m_to_add) === \"\") {\n\t\t\t\t\tcomplain(\"If you don't wanna add anything, the cancel button's right there.\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (m_to_add.indexOf(\",\") !== -1) {\n\t\t\t\t\tcomplain(\"The word you enter cannot have commas in it.\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (m_to_add.indexOf(\"\\\\\") !== -1) {\n\t\t\t\t\tcomplain(\"The word you enter cannot have backslashes in it.\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (m_to_add.length <= 1) {\n\t\t\t\t\tcomplain(\"Words must be at least two characters.\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (m_to_add.substring(0, 1) === \"#\") {\n\t\t\t\t\tcomplain(\"Please do not add hashtags to words.\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (XKit.extensions.highlighter.check_if_exists(m_to_add) === true) {\n\t\t\t\t\tcomplain(m_to_add + \" is already in the highlight list.\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tXKit.extensions.highlighter.highlightered.push(m_to_add);\n\t\t\t\tXKit.extensions.highlighter.save_highlighter();\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.extensions.highlighter.cpanel(m_div);\n\t\t\t\tXKit.extensions.xkit_preferences.restart_extension(\"highlighter\");\n\n\t\t\t});\n\n\t\t});\n\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller();\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller({ scroll: 'top' });\n\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","css":"#xkit-highlighter-none {\n\tpadding: 15px;\n\tcolor: rgb(150,150,150);\n\tfont-size: 14px;\n\tline-height: 22px;\n\ttext-align: center;\n}\n\n.xhighlighter-reason {\n\tposition: absolute;\n\twidth: 64px;\n\tbackground: rgba(0,0,0,0.44);\n\ttext-align: center;\n\tleft: -85px;\n\ttop: 75px; padding: 4px 2px;\n\tcolor: rgba(255,255,255,0.88);\n\tborder-radius: 6px; font-size: 11px;\n\tbox-shadow: inset 0px 1px 2px rgba(0,0,0,0.11), 0px 1px 0px rgba(255,255,255,0.11);\n}\n\n.xhighlighter_highlightered_post {\n\tbox-shadow: 0px 0px 6px 4px rgba(255,255,255,0.45);\n}\n\n.xhighlighter_highlightered_post,\n.xhighlighter_highlightered_post .post_content {\n\topacity: 1;\n\tbackground: #fffeee !important;\n}\n\n.xhighlighter_excuse {\n\tpadding: 0; text-align: left; font-size: 12px;\n\tcolor: rgb(130,130,130); height: 40px; line-height: 40px;\n\tposition: relative; margin-top: 5px;\n}\n\n.xhighlighter_open_post {\n\tposition: absolute;\n\theight: 30px; line-height: 20px;\n\ttop: 50%; margin-top: -15px;\n\tright: 0px; margin-bottom: 0;\n}\n\n.xhighlighter_open_post:active {\n\tposition: absolute !important;\n\ttop: 50% !important; margin-top: -14px !important;\n\tright: 0px !important;\n}\n\n.xhighlighter_hidden_post {\n\tdisplay: none;\n}\n\n.xkit-highlighter-add-margins-to-ul {\n\tmargin: 0; padding: 0px 20px;\n}\n\n.xkit-highlighter-add-margins-to-ul li {\n\tmargin-bottom: 10px;\n}\n\n#highlighter-toolbar {\n\tbackground: rgb(245,245,245);\n\tpadding: 3px 15px;\n\tborder-bottom: 1px solid rgb(190,190,190);\n}\n\n.xkit-highlightered-word {\n\tborder-bottom: 1px solid rgb(190,190,190);\n\tpadding: 0px 15px 0px 40px;\n\theight: 30px;\n\tline-height: 30px;\n\tcolor: rgb(100,100,100);\n\tfont-size: 12px;\n\tposition: relative;\n}\n\n.xkit-highlightered-word:last-child {\n\tborder-bottom: 0;\n}\n\n.xkit-highlightered-word-delete {\n\tmargin-right: 10px;\n\tmargin-left: 4px;\n\tcolor: #AD074A;\n\tcursor: pointer;\n\tposition: absolute;\n\theight: 30px; line-height: 30px;\n\tleft: 15px; top: 0;\n}\n\n.xkit-highlightered-word-delete:hover {\n\tcolor: #CC0857;\n}","title":"Highlighter","description":"Don't miss things","developer":"STUDIOXENIX","version":"0.1.6","details":"The cousin of Blacklister, this extension highlights posts depending on the words you decide. When a word you add is found on a post, the post will get a yellow-ish background.","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/jk_across_pages.json b/Extensions/dist/jk_across_pages.json new file mode 100644 index 000000000..f34f4d368 --- /dev/null +++ b/Extensions/dist/jk_across_pages.json @@ -0,0 +1 @@ +{"id":"jk_across_pages","script":"//* TITLE J/K Across Pages **//\n//* VERSION 1.1.3 **//\n//* DESCRIPTION Allow Tumblr's J/K navigation to move between pages **//\n//* DEVELOPER beiju **//\n//* FRAME false **//\n//* BETA true **//\n\nXKit.extensions.jk_across_pages = new Object({\n\t/*\n\t * If the top of the last post is this far below the top of the screen or less, j will move to the next page.\n\t */\n\tscrollBufferJ: 60,\n\t/*\n\t * If the top of first post is this far below the top of the screen or more, k will move to the previous page.\n\t */\n\tscrollBufferK: 59,\n\t/*\n\t * Leave this much overlap when using view_entire_posts\n\t */\n\tscrollBufferInside: 50,\n\t/*\n\t * This is the size of the gap between posts\n\t */\n\tpostBuffer: 20,\n\t/*\n\t * How long scroll animations should take (milliseconds)\n\t */\n\tscrollAnimationDuration: 100,\n\n\t$posts: false,\n\n\trunning: false,\n\n\n\tpreferences: {\n\t\t\"sep0\": {\n\t\t\ttype: 'separator',\n\t\t\ttext: \"Other\"\n\t\t},\n\t\t\"show_notifications\": {\n\t\t\ttext: \"Show notifications when moving between pages\",\n\t\t\t'default': true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"view_entire_posts\": {\n\t\t\ttext: \"Scroll through the entire post, even if it's longer than the screen\",\n\t\t\t'default': false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\n\trun: function() {\n\t\tthis.$posts = jQuery('.post_container').not('#new_post_buttons');\n\n\t\tXKit.tools.init_css(\"jk_across_pages\");\n\n\t\t// If #auto_pagination_loader exists, endless scrolling is enabled and this extension is useless\n\t\tif (jQuery('#auto_pagination_loader').length > 0) return;\n\n\t\tif (/jk_across_pages_first/i.test(window.location.hash)) {\n\t\t\tconsole.log(\"Scrolling to first post\", this.$posts.first());\n\t\t\tjQuery('html, body').animate({\n\t\t\t\tscrollTop: this.$posts.first().offset().top - this.scrollBufferJ\n\t\t\t}, this.scrollAnimationDuration);\n\t\t\twindow.location.hash = '';\n\t\t} else if (/jk_across_pages_last/i.test(window.location.hash)) {\n\t\t\tconsole.log(\"Scrolling to last post\", this.$posts.last());\n\t\t\tjQuery('html, body').animate({\n\t\t\t\tscrollTop: this.$posts.last().offset().top - this.scrollBufferK\n\t\t\t}, this.scrollAnimationDuration);\n\t\t\twindow.location.hash = '';\n\t\t}\n\n\t\tvar that = this;\n\t\tjQuery(document.body).bind('keydown.xkit_jk_across_pages', function(evt) {\n\t\t\tif (!evt.shiftKey && !evt.ctrlKey && !evt.altKey && !evt.metaKey) {\n\t\t\t\t// If the key wasn't J or K, we have nothing to do here.\n\t\t\t\tif (evt.which !== 74 /* j */ && evt.which !== 75 /* k */) return;\n\n\t\t\t\t// If the new post field has focus, do nothing.\n\t\t\t\tif (jQuery('.scrollverlay.active').length !== 0) return;\n\t\t\t\t// If XKit preferences are open, do nothing\n\t\t\t\tif (jQuery('#xkit-control-panel').length !== 0) return;\n\t\t\t\t// If the user is typing in an input, do nothing\n\t\t\t\tif (jQuery('input:focus').length !== 0) return;\n\n\t\t\t\tthat.$posts = jQuery('.post_container').not('#new_post_buttons');\n\n\t\t\t\tif (that.preferences.view_entire_posts.value && evt.which === 74 /* j */ &&\n\t\t\t\t\tthat.postAtY(that.scrollBufferJ + 1)[0] == that.postAtY(window.innerHeight - that.scrollBufferJ)[0]) {\n\n\t\t\t\t\tevt.stopPropagation(); // Try to stop Tumblr's event listener\n\n\t\t\t\t\t/* Animate this twice to make sure Tumblr's scrolling doesn't override it */\n\t\t\t\t\tvar scrollTo = window.scrollY + window.innerHeight - that.scrollBufferInside;\n\t\t\t\t\tjQuery(document.body).animate({ scrollTop: scrollTo }, that.scrollAnimationDuration, function() {\n\t\t\t\t\t\t$(this).animate({ scrollTop: scrollTo }, that.scrollAnimationDuration);\n\t\t\t\t\t});\n\n\t\t\t\t\treturn; // Don't try to go to the next page\n\t\t\t\t}\n\n\t\t\t\tif (evt.which === 74 /* j */ && (that.$posts.last().offset().top - window.scrollY <= that.scrollBufferJ || window.scrollY + window.innerHeight >= that.$posts.last().offset().top + that.$posts.last().height())) {\n\t\t\t\t\tif (jQuery('#next_page_link').length > 0) {\n\t\t\t\t\t\tif (that.preferences.show_notifications.value === true) XKit.notifications.add(\"Moving to next page\", \"ok\");\n\t\t\t\t\t\twindow.location = jQuery('#next_page_link').attr('href') + '#jk_across_pages_first';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (that.preferences.show_notifications.value === true) XKit.notifications.add(\"Already at last page\", \"warning\");\n\t\t\t\t\t}\n\t\t\t\t} else if (evt.which === 75 /* k */ && that.$posts.first().offset().top - window.scrollY >= that.scrollBufferK) {\n\t\t\t\t\tif (jQuery('#previous_page_link').length > 0) {\n\t\t\t\t\t\tif (that.preferences.show_notifications.value === true) XKit.notifications.add(\"Moving to previous page\", \"ok\");\n\t\t\t\t\t\twindow.location = jQuery('#previous_page_link').attr('href') + '#jk_across_pages_last';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (that.preferences.show_notifications.value === true) XKit.notifications.add(\"Already at first page\", \"warning\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tthis.running = true;\n\t},\n\n\tpostAtY: function(y) {\n\t\tvar x = jQuery('#posts').offset().left + 1;\n\t\treturn jQuery(document.elementFromPoint(x, y)).closest('.post_container');\n\t},\n\n\tdestroy: function() {\n\t\ttry {\n\t\t\tjQuery(document.body).unbind('.xkit_jk_across_pages');\n\t\t\tXKit.tools.remove_css(\"jk_across_pages\");\n\t\t\tthis.running = false;\n\t\t} catch (err) {\n\t\t\tif (console && console.error) console.error(err);\n\t\t}\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTU5RDUwRTFDRUE0MTFFMjlGRjNBNzgwQUUxNTkwRDkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTU5RDUwRTJDRUE0MTFFMjlGRjNBNzgwQUUxNTkwRDkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBNTlENTBERkNFQTQxMUUyOUZGM0E3ODBBRTE1OTBEOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBNTlENTBFMENFQTQxMUUyOUZGM0E3ODBBRTE1OTBEOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Poz+E8EAAAOsSURBVHjapFbNSyRHFK+qrnZmR9dxVlYxCcqiCyrsZQMeBGFhCYHc9ri3XPJP5Lz/RU655JJDWJLLgqKLBxkQXBDFsISQIavLgitqnFGn6728quouq3uqm/14DENX1av3/X6v+LNffmCGFALnHDUBywhQ2Q/aNf9gv5FZRnSntAUqO0WeXgGUqSCG2Rn4EgtkRZedZjzcX0rl2VuQTgYMHgW1QuYKgKcbtD2yTLpPAKoo1FzO+Jl3kRc4JerQCzQ39FrIh/cf3R390rtonEnXOGiE/SQjdv9uv/531zdfC/Rt5yi+/+ZH0a+xT6J74w+2W2vrr37LioU5BWne5r94+NXde+wz6LvJpy93/kCeuB3hnFUKxm9PVd/vdDqnp6cVDDKSzca4jbdxAoWuVfujUsAq6RcXFxsbG6urq0mSVLBRmbqi0h54PYUMK67h2tra5eXl8fHx1tYWq9SgC1eB9sM1mg0U7Smlgre2t7ePjo7s9/7+/uTk5OzsbJAT8lZKV+a6XSCs4PDwcGdnx9/Z3NxstVrNZjPgAORaUvhNRH4lA3R2dra+vl6Q0u/3KRlXV1eD/GDjk1GukxUoulmQdX19vbKyQmra7bbbXF5eHh4e7na79Xq92gOZwY5OMcVnUMGQIUT0u7fRaIyNjVlXBnDF9DY6BTc4GlbgYuIr6BsqK6JiklMnACmCFJAyBeD5TssyztRX54GdEinqlntAun3TaFnG6WZULge2AxMVTjIls9fr+QpOTk5ov24o2Mk8M1rmIReCMLC3t0c4UdiJ43hpaWmQHxX67gh/YthGKxBZsbi4KITAPC0sLEgpA/wM/Z6WAOnsRgW6EUKdXKvV5ubmDg4O3M709PTo6GiQ2Q476EMG14AVU97RxMTE1FQK5oQQMzMzHzIeDFzfEKuGa0K3kZERarr5+XmaWWVsdADJzcvDJVkPud71fxUKKA0UdyoniljV2Oid6ymjm5nbMuUUfZoLHFnn3Z9q4ds7rTtll4Pw6YiG3Zt3/3SvzmqNmJnYUIIlGuSjdx0T/Lz7/vnmz4+/ftIcaX3CQH7d2X/R/jWSETcu2Lkmb0AMWVyTb8//+un3Z6qvjynOdrQWqgCLD5q0MGUc3WrEQzKmPEDWDdII4jY7kRT1BjEImhGYBy8YKDbuvbc03nAmIiG4JqUgDHY6kxEfiuL8Yy0g3SlQNsIsYqZMiFMV5oHrjo8Kd066Ea07VQXer7ICyiuCkyRZDxvpQdGW/hdgAP9if38Csi+wAAAAAElFTkSuQmCC","css":"/*\n * This allows the j key to scroll to the top of the last post,\n * no matter how tall it is compared to the user's screen\n */\n.l-footer-container {\n\theight: 100%;\n}","title":"J/K Across Pages","description":"Allow Tumblr's J/K navigation to move between pages","developer":"beiju","version":"1.1.3","frame":"false","beta":"true","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/limit_people.json b/Extensions/dist/limit_people.json new file mode 100644 index 000000000..8d494cbba --- /dev/null +++ b/Extensions/dist/limit_people.json @@ -0,0 +1 @@ +{"id":"limit_people","script":"//* TITLE Limit People **//\n//* VERSION 0.2.4 **//\n//* DESCRIPTION Limit the appearance of blogs on dash **//\n//* DETAILS Some people on your dashboard posting a lot? Limit people limits how many consecutive posts by the same person appear on your dashboard at once. If a user makes more than 2 consecutive posts, the rest will be hidden until you click on a button to show them. **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.limit_people = new Object({\n\n\trunning: false,\n\n\tpreferences: {\n\t\tlimit: {\n\t\t\ttext: \"Hide consecutive posts after the \",\n\t\t\tdefault: \"2\",\n\t\t\tvalue: \"2\",\n\t\t\ttype: \"combo\",\n\t\t\tvalues: [\n\t\t\t\t\"3rd Post (default)\", \"after2\",\n\t\t\t\t\"4th Post\", \"after3\",\n\t\t\t\t\"5th Post\", \"after4\",\n\t\t\t\t\"6th Post\", \"after5\",\n\t\t\t],\n\t\t},\n\t\tdont_limit_me: {\n\t\t\ttext: \"Don't limit my own posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\ttype: \"checkbox\"\n\t\t},\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (XKit.interface.where().dashboard !== true) { return; }\n\n\t\tif ($(\"#posts\").length > 0) {\n\t\t\tXKit.tools.init_css(\"limit_people\");\n\t\t\tXKit.post_listener.add(\"limit_people\", XKit.extensions.limit_people.do);\n\t\t\tXKit.extensions.limit_people.do();\n\n\t\t\t$(document).on(\"click\", \".xkit-limit-people-opener\", XKit.extensions.limit_people.open);\n\n\t\t}\n\n\t},\n\n\topen: function(e) {\n\n\t\tvar m_obj = $(e.target);\n\n\t\t$($(m_obj).attr('data-to-get')).removeClass(\"xkit-limit-people-grouped-hidden\");\n\n\t\t$($(m_obj).attr('data-to-get') + \" .xkit-limit-people-grouped-hidden\").each(function() {\n\n\t\t\t$(this).attr('class', $(this).attr('data-old-classes') + \" xkit-limit-people-grouped-hidden\");\n\t\t\t$(this).removeAttr('data-old-classes');\n\n\t\t});\n\n\t\t$($(m_obj).attr('data-to-get') + \" .post.xkit-limit-people-grouped-hidden\").css(\"opacity\", \"0\").removeClass(\"xkit-limit-people-grouped-hidden\");\n\n\t\t$($(m_obj).attr('data-to-get') + \" .post\").animate({ opacity: 1}, 400);\n\n\t\t$($(m_obj)).parent().slideUp('slow');\n\n\t\tsetTimeout(function() { XKit.post_listener.check(true); }, 300);\n\n\t},\n\n\tlast_url: \"\",\n\tlast_count: 0,\n\tlast_group_id: XKit.tools.random_string(),\n\tlast_grouped: false,\n\n\tdo: function() {\n\t\tvar size_changed = false;\n\n\t\tvar posts = XKit.interface.get_posts(\"xkit-limit-people-checked\");\n\n\t\tvar after_v = parseInt(XKit.extensions.limit_people.preferences.limit.value.replace(\"after\", \"\"));\n\n\t\tvar no_endless = $(\"body\").hasClass(\"without_auto_paginate\");\n\n\t\tvar total = $(posts).length;\n\n\t\t$(posts).each(function(index) {\n\t\t\t\n\t\t\tif ($(this).parents('.peepr-drawer').length > 0) { return; }\n\t\t\t\n\t\t\tvar m_post = XKit.interface.post($(this));\n\t\t\t$(this).addClass(\"xkit-limit-people-checked\");\n\n\t\t\tif (XKit.extensions.limit_people.preferences.dont_limit_me.value === true) {\n\n\t\t\t\tif (m_post.is_mine === true) { return; }\n\n\t\t\t}\n\n\t\t\tif ($(this).hasClass(\"xkit_view_on_dash_post\")) { return; }\n\t\t\tif ($(this).is(':hidden')) { return; }\n\n\t\t\t// // console.log(\"owner = \" + m_post.owner + \"\\n last = \" + XKit.extensions.limit_people.last_url);\n\n\t\t\tvar force_group_this = false;\n\n\t\t\tif (index === total - 1 && no_endless) {\n\n\t\t\t\tif (((XKit.extensions.limit_people.last_count - after_v) + 1) >= 1) {\n\n\t\t\t\t\tm_post.owner = \"\";\n\t\t\t\t\tforce_group_this = true;\n\n\t\t\t\t\t$(this).parent().addClass(\"xkit-limit-people-group-\" + XKit.extensions.limit_people.last_url + \"-\" + XKit.extensions.limit_people.last_group_id).addClass(\"xkit-limit-people-group-\" + XKit.extensions.limit_people.last_url + \"-\" + XKit.extensions.limit_people.last_group_id + \"-container\");\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif (m_post.owner !== XKit.extensions.limit_people.last_url) {\n\t\t\t\tif ((XKit.extensions.limit_people.last_grouped && !$(this).hasClass(\"xkit-limit-people-grouped-hidden\") && (XKit.extensions.limit_people.last_count - 1) > after_v - 1) || force_group_this) {\n\t\t\t\t\t// console.log(\"** LIMIT PEOPLE: Closing the previous group.... [\" + XKit.extensions.limit_people.last_url+ \"]\");\n\t\t\t\t\t$(\".xkit-limit-people-group-\" + XKit.extensions.limit_people.last_url + \"-\" + XKit.extensions.limit_people.last_group_id + \"-container\").not(\".xkit-limit-people-grouped-hidden\").last().after(\"
  • Show \" + ((XKit.extensions.limit_people.last_count - after_v) + 1) + \" more by \" + XKit.extensions.limit_people.last_url + \"
  • \");\n\t\t\t\t}\n\t\t\t\t// console.log(\"** LIMIT PEOPLE: Generating new group.... [\" + m_post.owner + \"]\");\n\t\t\t\tXKit.extensions.limit_people.last_url = m_post.owner;\n\t\t\t\tXKit.extensions.limit_people.last_count = 0;\n\t\t\t\tXKit.extensions.limit_people.last_group_id = XKit.tools.random_string();\n\t\t\t\tXKit.extensions.limit_people.last_grouped = false;\n\t\t\t} else {\n\t\t\t\t// console.log(\"** LIMIT PEOPLE: Continuing from the last group. [\" + XKit.extensions.limit_people.last_url + \"]\");\n\t\t\t\tXKit.extensions.limit_people.last_count++;\n\t\t\t\tXKit.extensions.limit_people.last_grouped = true;\n\t\t\t}\n\n\t\t\t$(this).parent().addClass(\"xkit-limit-people-group-\" + XKit.extensions.limit_people.last_url + \"-\" + XKit.extensions.limit_people.last_group_id).addClass(\"xkit-limit-people-group-\" + XKit.extensions.limit_people.last_url + \"-\" + XKit.extensions.limit_people.last_group_id + \"-container\");\n\n\t\t\tif (XKit.extensions.limit_people.last_count >= after_v) {\n\t\t\t\t$(this).attr('data-old-classes', $(this).attr('class'));\n\t\t\t\t$(this).attr('class', \"xkit-limit-people-grouped-hidden\");\n\t\t\t\t$(this).parent().addClass(\"xkit-limit-people-grouped-hidden\");\n\t\t\t}\n\n\t\t});\n\n\t\tif (size_changed) {\n\n\t\t\tXKit.extensions.limit_people.call_tumblr_resize();\n\n\t\t}\n\n\n\t},\n\n\tcall_tumblr_resize: function() {\n\n\t\tXKit.tools.add_function(function() {\n\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t}, true, \"\");\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.post_listener.remove(\"limit_people\");\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFREI5QTZDMzZEMjIxMUUzOUM1NkIzMjQ0OERGQUU5RCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFREI5QTZDMjZEMjIxMUUzOUM1NkIzMjQ0OERGQUU5RCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTE4QkRBRjU5ODYxRUUyRjREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+j7AWYwAABIBJREFUeNrsmW9sFEUUwOfN7O7dXu8Kd7e9lgOu6aE9FUr90BiblLQBFT6ABeM/xA/wycQmfve7MfGbicHEGIIxRlNSqU1NQFP/F/GDkIgBq6VF0HIVK9Bq7+jtzY6zZwVpusvt3dztNe5k09zeztv3fn1v3rx5B5nX0IoeGCEPwNUhIfA84Hngf+4B0YOs7SKp53B8C9Q33/ySzV00Ln9Ff3yDTo2KVQeZ18W9S0HK1mHcstNmjnHhw9ynu1iu9kKIW+/rPWNvvamvZSefxieLA+CLWMQld70DWltRqFobnyxKrxgPYG0TSe1zsE5S+7hIDXlAanvRcfbgIjXkgXhXFUQquIghlKiCyPKeBPd2YiGqXS0lPAAvhLwQ8sppL4Q8gNoo5oxfRpwqNkWE1JEIguX/G/JnXlXWP+RURIhqDkDKfwu7Pqp/0Sd3Hyxyfm7kWS4iRDUHkIXEszF1BKFiAdiVj0Tp5QBubAXilHIAnxsAPoEAkhsAwpTyalRxwX5xSsVkIecExAMQl0YhkIDmR6W7nyheROn92rh4jI6/yzKXytW+8H5H6cKr7iN37cXNO0rfPdKjdLyfzXxTBsDRB0spodZsIxseh4b7hYQBu36eTgwYl4ZKAhjsdGZ6opfcsx8CjcLXBcv8RsfeMtKfIX3OCcBQd1ET5RBJPonXP1IJ028b+l90cpBOHkH6n0UC9BRh+lMk2YvkYPXSlIkxRCf774gBC8MP2zwmrQdIy66qmr4E48Iw/emwbRq1PtdLG/swt97FIQdJ616Qg/mzB61PZFiyuvC6bbXQdzDNsDZSsjuZyoGa6JyYZoD1Gji223bPjChbDy0eo47v4SWAsn3g1i1/vmOwOrfWAMcfW95xTd2k9RmUn4dQ4dfS3Kx+6hWoWyO19bEbV42pz+nEe0gJ48hmlplm878iOu9WY2v50pzbCqqGkPavK1bJnS8vPlI1nppAbUCSihsfMPegme/10y9BpF1K7mHZKzR9gl39DklBs2jTZytbFuY+fnr5BLrxeRzf4qSsyaN8FimhxT11vB+HUzixHTFqnB+gP38A9a04usng7rr2A8pdq7wHVIc7Ls8JBesL9Wmj1P7CzcoZJ3dDdDOS6yCUwOaJ/tv8ucNkXQ+s7UHZGTpxlM2OQSCOiI9l/0D5OacA2CKEmoS5mfggcu+tN8c65FgHYoapWm0gyn6WPgFaO4RTpiPH3qZTn+B4D9QnUfZ3evlL+yCE3MgBS63+KFJjWI0hVQP/P38jSPJXdlUyyrIzIKlIqTfvpk/mz75ZUlvF0Hl6QZlpuhTMXwDTCmANBbCoCUYENRqA/LdehKZOdO6Q0L6QkWOZNMqkl4JJKvg0DoN5djJ91WiC+cKIlH1+t7VQXFuF6tZgkYLHOF4M/BryRxyAMWpvYeU7c3TBAixgBp4/ugjmi/LP4F+N8O1ndD1zJw9gN7oSZihagdWBP8wdVfBV1PSArYUutVXsPHaDzaf5VWQPRlrpv/PxEFrpAK40d4UCYA/AVQCotSzkcPwtwACiu2RPTpU5QwAAAABJRU5ErkJggg==","css":".xkit-limit-people-grouped-hidden {\n\tdisplay: none !important;\n\theight: 0; visibility: hidden;\n\tbackground: red;\n}\n\n.xkit-limit-people-opener {\n\tcolor: rgba(255,255,255,0.43);\n\ttext-shadow: none;\n\tfont-size: 13px;\n\tbackground: rgba(255,255,255,0.06);\n\tpadding: 10px;\n\tborder-radius: 6px;\n\ttext-align: center;\n\tcursor: pointer;\n}\n\n.xkit-limit-people-opener:hover {\n\tbackground: rgba(255,255,255,0.08);\n\n}","title":"Limit People","description":"Limit the appearance of blogs on dash","developer":"new-xkit","version":"0.2.4","details":"Some people on your dashboard posting a lot? Limit people limits how many consecutive posts by the same person appear on your dashboard at once. If a user makes more than 2 consecutive posts, the rest will be hidden until you click on a button to show them.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/mass_deleter.json b/Extensions/dist/mass_deleter.json new file mode 100644 index 000000000..7004e904f --- /dev/null +++ b/Extensions/dist/mass_deleter.json @@ -0,0 +1 @@ +{"id":"mass_deleter","script":"//* TITLE Mass Deleter **//\n//* VERSION 0.2.1 **//\n//* DESCRIPTION Mass unlike likes / delete drafts **//\n//* DETAILS Used to mass unlike posts or delete drafts. Please use with caution, especially Mass Unlike part is extremely experimental. **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.mass_deleter = new Object({\n\n\trunning: false,\n\n\tpreferences: {\n\t\t\"enable_mass_unlike\": {\n\t\t\ttext: \"Enable Mass Unlike Functionality (Extremely Experimental! Use with caution.)\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\texperimental: true\n\t\t}\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (XKit.interface.where().likes === true) {\n\t\t\tif (XKit.extensions.mass_deleter.preferences.enable_mass_unlike.value === true) {\n\t\t\t\tXKit.extensions.mass_deleter.init_likes();\n\t\t\t}\n\t\t}\n\n\t\tif (XKit.interface.where().drafts === true) {\n\t\t\tXKit.extensions.mass_deleter.init_drafts();\n\t\t}\n\n\t},\n\n\tinit_drafts: function() {\n\n\t\tXKit.interface.sidebar.add({\n\t\t\tid: \"xkit-mass-deleter-sidebar\",\n\t\t\ttitle: \"Mass Deleter\",\n\t\t\titems: [\n\t\t\t\t{ id: \"xkit-mass-deleter-100\", text: \"Delete 100 Drafts\" },\n\t\t\t\t{ id: \"xkit-mass-deleter-1000\", text: \"Delete 1000 Drafts\" }\n\t\t\t]\n\t\t});\n\n\t\t$(\"#xkit-mass-deleter-100\").click(function() {\n\t\t\tXKit.extensions.mass_deleter.delete_drafts(100);\n\n\t\t\treturn false;\n\t\t});\n\n\t\t$(\"#xkit-mass-deleter-1000\").click(function() {\n\t\t\tXKit.extensions.mass_deleter.delete_drafts(1000);\n\n\t\t\treturn false;\n\t\t});\n\n\t},\n\n\tdelete_drafts_limit: 0,\n\tdelete_drafts_page: 1,\n\tdelete_drafts_array: [],\n\n\tdelete_from_array_current: 0,\n\tdelete_from_array_max: 0,\n\n\tdelete_next_max: 3,\n\tdelete_next_current: 0,\n\n\tdelete_fail_count: 0,\n\n\tdelete_last_post_id: 0,\n\n\tdelete_drafts: function(limit) {\n\n\t\tXKit.extensions.mass_deleter.delete_drafts_limit = limit;\n\t\tXKit.extensions.mass_deleter.delete_drafts_array = [];\n\t\tXKit.extensions.mass_deleter.delete_drafts_page = 1;\n\n\t\tXKit.window.show(\"Mass Deleting Drafts\", \"This might take a long, long time...
    Initializing: Gathering post ids..
    \" + XKit.progress.add(\"mass-deleter-progress\"), \"info\");\n\n\t\tvar posts = XKit.interface.get_posts();\n\n\t\t$(posts).each(function() {\n\n\t\t\tvar m_post = XKit.interface.post($(this));\n\t\t\tXKit.extensions.mass_deleter.delete_drafts_array.push(m_post.id + \";\" + m_post.reblog_key);\n\n\t\t});\n\n\t\tXKit.extensions.mass_deleter.delete_fail_count = 0;\n\t\tXKit.extensions.mass_deleter.delete_next_current = 0;\n\n\t\tXKit.extensions.mass_deleter.delete_last_post_id = $(\".post_container\").last().find(\".post\").attr('data-post-id');\n\n\t\tif (typeof XKit.extensions.mass_deleter.delete_last_post_id === \"undefined\") {\n\t\t\tXKit.extensions.mass_deleter.delete_last_post_id = $(\".posts .post\").last().attr('data-post-id');\n\t\t}\n\n\t\tXKit.extensions.mass_deleter.delete_drafts_page++;\n\t\tXKit.extensions.mass_deleter.delete_next_page();\n\n\t},\n\n\tdelete_current_array: function() {\n\n\t\t$(\"#xkit-mass-deleter-status\").html(\"Deleting posts..\");\n\t\tXKit.extensions.mass_deleter.delete_from_array_max = XKit.extensions.mass_deleter.delete_drafts_array.length;\n\t\tsetTimeout(function() { XKit.extensions.mass_deleter.delete_current_array_next(); }, 250);\n\n\t},\n\n\tdelete_current_array_next: function() {\n\n\t\tif (XKit.extensions.mass_deleter.delete_drafts_array.length === 0) {\n\t\t\tXKit.window.show(\"Complete!\", \"Deleted \" + (XKit.extensions.mass_deleter.delete_from_array_max - XKit.extensions.mass_deleter.delete_fail_count) + \" posts.
    Failed to delete \" + XKit.extensions.mass_deleter.delete_fail_count + \" posts.


    Please refresh the page before deleting more drafts.\", \"info\", \"
    OK
    \");\n\n\t\t\t$(\"#xkit-close-message-2\").click(function() {\n\t\t\t\tlocation.reload();\n\t\t\t\tXKit.window.close();\n\t\t\t});\n\n\t\t\treturn;\n\t\t}\n\n\t\tvar current_id = XKit.extensions.mass_deleter.delete_drafts_array.pop();\n\n\t\tvar post_id = current_id.split(\";\")[0];\n\t\tvar reblog_key = current_id.split(\";\")[1];\n\n\t\tconsole.log(\"Deleting post, id = \" + post_id + \" | reblog_key = \" + reblog_key);\n\n\t\tvar m_object = {};\n\n\t\tvar m_array = document.location.href.split(\"/\");\n\t\tvar m_channel_id = m_array[4];\n\n\t\tm_object.post_id = post_id;\n\t\tm_object.form_key = XKit.interface.form_key();\n\t\tm_object.channel_id = m_channel_id;\n\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"http://www.tumblr.com/svc/post/delete\",\n\t\t\tdata: JSON.stringify(m_object),\n\t\t\tjson: true,\n\t\t\tonerror: function(response) {\n\t\t\t\tconsole.log(\"Unable to unlike post with id \" + post_id);\n\t\t\t\tXKit.extensions.mass_deleter.delete_fail_count++;\n\t\t\t\tsetTimeout(function() { XKit.extensions.mass_deleter.delete_current_array_next(); }, 250);\n\t\t\t},\n\t\t\tonload: function(response) {\n\t\t\t\tconsole.log(\"| --- Successfully unliked post!\");\n\t\t\t\tvar percentage = 100 - parseInt((100 * XKit.extensions.mass_deleter.delete_drafts_array.length) / XKit.extensions.mass_deleter.delete_from_array_max);\n\t\t\t\tXKit.progress.value(\"mass-deleter-progress\", percentage);\n\t\t\t\t$(\"#xkit-mass-deleter-status\").html(\"Deleting posts.. (\" + XKit.extensions.mass_deleter.delete_drafts_array.length + \" posts left)\");\n\t\t\t\tsetTimeout(function() { XKit.extensions.mass_deleter.delete_current_array_next(); }, 250);\n\t\t\t}\n\t\t});\n\n\t},\n\n\tdelete_next_page: function() {\n\n\t\t$(\"#xkit-mass-deleter-status\").html(\"Initializing: Gathering post ids.. (page \" + XKit.extensions.mass_deleter.delete_drafts_page + \", total: \" + XKit.extensions.mass_deleter.delete_drafts_array.length + \")\");\n\n\t\tvar m_url = document.location.href.replace(\"#\", \"\");\n\n\t\tm_url = m_url + \"/after/\" + XKit.extensions.mass_deleter.delete_last_post_id;\n\n\t\tconsole.log(\"Fetching \" + m_url);\n\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: m_url,\n\t\t\tonerror: function(response) {\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.extensions.mass_deleter.display_error();\n\t\t\t},\n\t\t\tonload: function(response) {\n\n\t\t\t\tvar m_div = $(\"
    \" + response.responseText + \"
    \");\n\n\t\t\t\tvar stop_action = false;\n\n\t\t\t\tif ($(\".no_posts_found\", m_div).length > 0) {\n\t\t\t\t\t// Posts ended!\n\t\t\t\t\t// But it might be Tumblr messing up.\n\t\t\t\t\tconsole.log(\"current = \" + XKit.extensions.mass_deleter.delete_next_current);\n\t\t\t\t\tconsole.log(\" max = \" + XKit.extensions.mass_deleter.delete_next_max);\n\t\t\t\t\tif (XKit.extensions.mass_deleter.delete_next_current >= XKit.extensions.mass_deleter.delete_next_max) {\n\t\t\t\t\t\treturn XKit.extensions.mass_deleter.delete_current_array();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log(\"Page empty, but retrying anyways...\");\n\t\t\t\t\t\tXKit.extensions.mass_deleter.delete_next_current++;\n\t\t\t\t\t\tXKit.extensions.mass_deleter.delete_drafts_page++;\n\t\t\t\t\t\tsetTimeout(function() { XKit.extensions.mass_deleter.delete_next_page(); }, 200);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tXKit.extensions.mass_deleter.delete_next_current = 0;\n\n\t\t\t\t$(\".posts .post\", m_div).each(function() {\n\t\t\t\t\tvar m_post = XKit.interface.post($(this));\n\t\t\t\t\tif (XKit.extensions.mass_deleter.delete_drafts_array.length >= XKit.extensions.mass_deleter.delete_drafts_limit) {\n\t\t\t\t\t\tXKit.extensions.mass_deleter.delete_current_array();\n\t\t\t\t\t\tstop_action = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (!stop_action) {\n\t\t\t\t\t\tXKit.extensions.mass_deleter.delete_last_post_id = m_post.id;\n\t\t\t\t\t\tif (XKit.extensions.mass_deleter.delete_drafts_array.indexOf(m_post.id + \";\" + m_post.reblog_key) === -1) {\n\t\t\t\t\t\t\tXKit.extensions.mass_deleter.delete_drafts_array.push(m_post.id + \";\" + m_post.reblog_key);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log(\"Post already in array, skipping.\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (stop_action) { return; }\n\n\t\t\t\tXKit.extensions.mass_deleter.delete_drafts_page++;\n\t\t\t\tsetTimeout(function() { XKit.extensions.mass_deleter.delete_next_page(); }, 200);\n\n\t\t\t}\n\t\t});\n\n\t},\n\n\tinit_likes: function() {\n\n\t\tXKit.interface.sidebar.add({\n\t\t\tid: \"xkit-mass-deleter-sidebar\",\n\t\t\ttitle: \"Mass Unliker\",\n\t\t\titems: [\n\t\t\t\t{ id: \"xkit-mass-deleter-100\", text: \"Unlike 100 Likes\" },\n\t\t\t\t{ id: \"xkit-mass-deleter-1000\", text: \"Unlike 1,000 Likes\" }\n\t\t\t]\n\t\t});\n\n\t\t$(\"#xkit-mass-deleter-100\").click(function() {\n\t\t\tXKit.extensions.mass_deleter.unlike_likes(100);\n\t\t});\n\n\t\t$(\"#xkit-mass-deleter-1000\").click(function() {\n\t\t\tXKit.extensions.mass_deleter.unlike_likes(1000);\n\t\t});\n\n\t},\n\n\tunlike_likes_limit: 0,\n\tunlike_likes_page: 1,\n\tunlike_likes_array: [],\n\n\tunlike_from_array_current: 0,\n\tunlike_from_array_max: 0,\n\n\tunlike_next_max: 30,\n\tunlike_next_current: 0,\n\tunlike_next_page_url: undefined,\n\n\tunlike_fail_count: 0,\n\n\tunlike_likes: function(limit) {\n\n\t\tXKit.window.show(\"Warning!\", \"Due to the way Tumblr works, mass unliking posts might or might not cause older likes to not show up. This is a very experimental feature and no support is provided. Please only continue if you are sure that you want to do this.\", \"warning\", \"
    Continue
    Cancel
    \");\n\n\t\t$(\"#xkit-mass-deleter-unlike-continue\").click(function() {\n\n\t\t\tXKit.extensions.mass_deleter.unlike_likes_limit = limit;\n\t\t\tXKit.extensions.mass_deleter.unlike_likes_array = [];\n\t\t\tXKit.extensions.mass_deleter.unlike_likes_page = 1;\n\n\t\t\tXKit.window.show(\"Mass Unliking Posts\", \"This might take a long, long time...
    Initializing: Gathering post ids..
    \" + XKit.progress.add(\"mass-deleter-progress\"), \"info\");\n\n\t\t\tvar posts = XKit.interface.get_posts();\n\n\t\t\t$(posts).each(function() {\n\n\t\t\t\tvar m_post = XKit.interface.post($(this));\n\t\t\t\tXKit.extensions.mass_deleter.unlike_likes_array.push(m_post.id + \";\" + m_post.reblog_key);\n\n\t\t\t});\n\n\t\t\tXKit.extensions.mass_deleter.unlike_fail_count = 0;\n\t\t\tXKit.extensions.mass_deleter.unlike_next_current = 0;\n\t\t\tXKit.extensions.mass_deleter.unlike_likes_page++;\n\t\t\tXKit.extensions.mass_deleter.unlike_next_page_url = $(\"#next_page_link\").attr(\"href\");\n\t\t\tXKit.extensions.mass_deleter.unlike_next_page();\n\n\t\t});\n\n\t},\n\n\tunlike_current_array: function() {\n\n\t\t$(\"#xkit-mass-deleter-status\").html(\"Unliking posts..\");\n\t\tXKit.extensions.mass_deleter.unlike_from_array_max = XKit.extensions.mass_deleter.unlike_likes_array.length;\n\t\tsetTimeout(function() { XKit.extensions.mass_deleter.unlike_current_array_next(); }, 450);\n\n\t},\n\n\tunlike_current_array_next: function() {\n\n\t\tif (XKit.extensions.mass_deleter.unlike_likes_array.length === 0) {\n\t\t\tconsole.log(\tXKit.extensions.mass_deleter.unlike_likes_array);\n\t\t\tXKit.window.show(\"Complete!\", \"Unliked \" + (XKit.extensions.mass_deleter.unlike_from_array_max - XKit.extensions.mass_deleter.unlike_fail_count) + \" posts.
    Failed to unlike \" + XKit.extensions.mass_deleter.unlike_fail_count + \" posts.


    You might get a \\\"No Posts Found\\\" page when visiting the Likes page after Mass Unliking. Like a few posts and try again in a few hours, and it should return to normal. If XKit is unable to unlike posts, it's Tumblr's servers trying to adjust to unlikes. Try again in a couple of hours before Mass Unliking again.\", \"info\", \"
    OK
    \");\n\t\t\treturn;\n\t\t}\n\n\t\tvar current_id = XKit.extensions.mass_deleter.unlike_likes_array.pop();\n\n\t\tvar post_id = current_id.split(\";\")[0];\n\t\tvar reblog_key = current_id.split(\";\")[1];\n\n\t\tconsole.log(\"Unliking post, id = \" + post_id + \" | reblog_key = \" + reblog_key);\n\n\t\tvar m_data = \"form_key=\" + XKit.interface.form_key() + \"&data%5Bid%5D=\" + post_id + \"&data%5Bkey%5D=\" + reblog_key + \"&data%5Bsource%5D=UNLIKE_SOURCE_IFRAME\";\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"http://www.tumblr.com/svc/unlike\",\n\t\t\tdata: m_data,\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/x-www-form-urlencoded\"\n\t\t\t},\n\t\t\tjson: false,\n\t\t\tonerror: function(response) {\n\t\t\t\tconsole.log(\"Unable to unlike post with id \" + post_id);\n\t\t\t\tXKit.extensions.mass_deleter.unlike_fail_count++;\n\t\t\t\tsetTimeout(function() { XKit.extensions.mass_deleter.unlike_current_array_next(); }, 450);\n\t\t\t},\n\t\t\tonload: function(response) {\n\t\t\t\tconsole.log(\"| --- Successfully unliked post!\");\n\t\t\t\tvar percentage = 100 - parseInt((100 * XKit.extensions.mass_deleter.unlike_likes_array.length) / XKit.extensions.mass_deleter.unlike_from_array_max);\n\t\t\t\tXKit.progress.value(\"mass-deleter-progress\", percentage);\n\t\t\t\t$(\"#xkit-mass-deleter-status\").html(\"Unliking posts.. (\" + XKit.extensions.mass_deleter.unlike_likes_array.length + \" posts left)\");\n\t\t\t\tsetTimeout(function() { XKit.extensions.mass_deleter.unlike_current_array_next(); }, 450);\n\t\t\t}\n\t\t});\n\n\t},\n\n\tunlike_next_page: function() {\n\n\t\t$(\"#xkit-mass-deleter-status\").html(\"Initializing: Gathering post ids.. (page \" + XKit.extensions.mass_deleter.unlike_likes_page + \", total: \" + XKit.extensions.mass_deleter.unlike_likes_array.length + \")\");\n\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"https://www.tumblr.com\" + XKit.extensions.mass_deleter.unlike_next_page_url,\n\t\t\tjson: false,\n\t\t\theaders: {\n\t\t\t\t\"X-Requested-With\": \"XMLHttpRequest\",\n\t\t\t},\n\t\t\tonerror: function(response) {\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.extensions.mass_deleter.display_error();\n\t\t\t\treturn;\n\t\t\t},\n\t\t\tonload: function(response) {\n\n\t\t\t\tvar m_div = $(\"
    \" + response.responseText + \"
    \");\n\n\t\t\t\tvar stop_action = false;\n\n\t\t\t\tif ($(\".no_posts_found\", m_div).length > 0) {\n\t\t\t\t\t// Posts ended!\n\t\t\t\t\t// But it might be Tumblr messing up.\n\t\t\t\t\tconsole.log(\"current = \" + XKit.extensions.mass_deleter.unlike_next_current);\n\t\t\t\t\tconsole.log(\" max = \" + XKit.extensions.mass_deleter.unlike_next_max);\n\t\t\t\t\tif (XKit.extensions.mass_deleter.unlike_next_current >= XKit.extensions.mass_deleter.unlike_next_max) {\n\t\t\t\t\t\treturn XKit.extensions.mass_deleter.unlike_current_array();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log(\"Page empty, but retrying anyways...\");\n\t\t\t\t\t\tXKit.extensions.mass_deleter.unlike_next_current++;\n\t\t\t\t\t\tXKit.extensions.mass_deleter.unlike_likes_page++;\n\t\t\t\t\t\tsetTimeout(function() { XKit.extensions.mass_deleter.unlike_next_page(); }, 400);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tXKit.extensions.mass_deleter.unlike_next_current = 0;\n\t\t\t\tXKit.extensions.mass_deleter.unlike_next_page_url = response.getResponseHeader(\"X-Next-Page\");\n\t\t\t\t$(\".post_container .post\", m_div).each(function() {\n\t\t\t\t\tvar m_post = XKit.interface.post($(this));\n\t\t\t\t\tif (XKit.extensions.mass_deleter.unlike_likes_array.length >= XKit.extensions.mass_deleter.unlike_likes_limit) {\n\t\t\t\t\t\tXKit.extensions.mass_deleter.unlike_current_array();\n\t\t\t\t\t\tstop_action = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (!stop_action) {\n\t\t\t\t\t\tXKit.extensions.mass_deleter.unlike_likes_array.push(m_post.id + \";\" + m_post.reblog_key);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (XKit.extensions.mass_deleter.unlike_next_page_url == null) {\n\t\t\t\t\t//We didn't get the next page, so we're assuming this one was the last.\n\t\t\t\t\tXKit.extensions.mass_deleter.unlike_current_array();\n\t\t\t\t\tstop_action = true;\n\t\t\t\t\n\t\t\t\t}\n\t\t\t\tif (stop_action) { return; }\n\n\t\t\t\tXKit.extensions.mass_deleter.unlike_likes_page++;\n\t\t\t\tsetTimeout(function() { XKit.extensions.mass_deleter.unlike_next_page(); }, 400);\n\n\t\t\t}\n\t\t});\n\n\t},\n\n\tdisplay_error: function() {\n\n\t\tXKit.window.show(\"Unable to perform task\", \"Please try again later or file a bug report at the XKit blog.\", \"error\", \"
    OK
    \");\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.interface.sidebar.remove(\"xkit-mass-deleter-sidebar\");\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjExQzlDMzgyMTRGMTFFM0IyMThFNEQ0NkQ3REQ0QzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjExQzlDMzkyMTRGMTFFM0IyMThFNEQ0NkQ3REQ0QzMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGMTFDOUMzNjIxNEYxMUUzQjIxOEU0RDQ2RDdERDRDMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGMTFDOUMzNzIxNEYxMUUzQjIxOEU0RDQ2RDdERDRDMyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgS2HqQAAAWWSURBVHjajFY7bx1FFD4zdx3Hju1r+/oR/MKBkioNKDUVBXQICsQvoKQAiY4GiV+AUtCgKKBQRSko6JBoEH8ABCkCcnydBDtyHndn5vB958yuLwiirO+uZ2dnznee35nw06c/hJkQYwhxEGIQDMSuELSolKxFiqrmolnzBHfmXJtKKvkpxiXnFvNpUrQUadMkFckt9ratiOYmNBAbo9hjYNL7OwYVlaAxS8E4C1QRidjmesQmFuIHaBcHEC+ZimEXJqihKjTHFOTOAMLE8qc+CAMsIj5/uAec41/kBLShEpyMtFhdJcCaEvUK0d7NK8S0T/gXTA+zRH1P6K4pH9peqaBNlE49u+tHm6VEMUmh4piVYsr1SO624NoEgzFtgmuganIc/czTNF7gx6oh/pUg0itptsc66CZC/7mIOye4h/waiKvrixr3HuJREVWkM8c+JY/a5Q9fk6nrx4++17qF6qtorwMCbeZIolwAmCiFEepRi+74Vz64LP9/Xfns9enX796/wRxDPtcJ7W5tSslIMYpGpseBxYfQt2/+AhiqhipAMrIUMEA1FFQA3zFuC+sg5fHPf0AA8rTItLMAmWCBLYXnotK8LjFefe/K4fGRPMc1mlu99vYXngAGkDsMRjPyNVPFXMxPeHJGXtp5WZ7vurS1nxPUDNrmflKTe0iiFb4qrCYHZMPBTN6/+KIvHV5Y6retLq70435+f7RHYZCD2CX6lLmhNQiRrk9gGPqPMNCl5fPSxr7vv/X5zV7otU++6sc3Pr7ug53hNjMKanl4zdN9qCMjRo0VlIX/MAJRRNz2VrZ91fHto6X5RR8/uXPsg4XzF+7/Oq4Ai1tMH/AV1M8JM23xZG9hEAAwicTINKW1DLHf7nDX9x88uLu5sunj0uXh5vLG4cNDH2/NbUpCFBC/RLfDBxaEYhGPhQpn0C9g/FfsuXZ+NDsziyWHJ0frw7Vqc1v9s760fnR6D4P52flRXPQErsmjXtu0CXCRsZ3QL3AR7NA2kdFTzk+Sx/nw+O7G0nq1IFfvri+uHZ0yiffX99pH2Imw4hN8AC9gGhK0simkF6udklKB6BYY2Z5pb51eOjgZbyx0AMnZRzbmR4dmwe7ydmJf4kctlpyW7GYH78jYJkosrRkBvMQBmtTeyo656HBtbvVfAKPzq2OzYHd5FwqptbDcihFU0uTSidJA+5i0tspIfkQTUqPHvSEBxifjUQfAIvSCmFsdPyTAzsIWm5plfqHQzHRVy1tGQRvgZ/a1wm7UkLAZLgAUeWGeyfPng4NzMuNyTx8/9sFsjgcndzG4eG4EmdLKhEILySJV3Vu1DnPr3a9JcYPonUrZYmorezqT3rz6Dhk+DhAokntsEnORHRyKN4Pmm7eu6iO4U6yIi04q3dFjwtQCm1aC8pZqlFsRmhw3hmugPJfuyVGDQbfIzspWOvXMYhUghXqW5jAlrIs4aJSnhRVIUiL9Eg0SEfpJ2hntPoPmdpa3maCg9TKBSLssUDWFrBsZ8eRaZUxT4KWMurOy2B1uPQtgaVtKC+kkiS4vUQdUUlUc+9s3vgx+yEAo+uNCT5l7w/mNhTP20pArE/BxcufeyW/3jT2d6Djb0vdcH+A7dDTkkvkTnaFIPSmUuj6Ev34f4+fVD8+lUqUHz8qkvSuMhNjU2BlK7gpNmnbCU8MgWnAb4op2bc/EYdvAOziLKNDd7KHiVGOdwFgKWCkZdjmTAACutnZq/EpZpVohvdXOK+hYmgxUpeaaGeD5btJL7QdTbbkJpe2OHjzQJK5GSuEQmmSqtyq5wE4DPWOadEYE6Vff+zZzdrho1I8vPEyksz4UJqrSSyvTezqSQfrxeEPpwX0vXbBrrbgFxblb/ysNwz+VsRueR3YEO9DwhF4PhjIt/cxJqn8LMAARHl/PPEs13gAAAABJRU5ErkJggg==","title":"Mass Deleter","description":"Mass unlike likes / delete drafts","developer":"STUDIOXENIX","version":"0.2.1","details":"Used to mass unlike posts or delete drafts. Please use with caution, especially Mass Unlike part is extremely experimental.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/mass_plus.json b/Extensions/dist/mass_plus.json new file mode 100644 index 000000000..ec5499cb4 --- /dev/null +++ b/Extensions/dist/mass_plus.json @@ -0,0 +1 @@ +{"id":"mass_plus","script":"//* TITLE Mass+ **//\n//* VERSION 0.4.8 **//\n//* DESCRIPTION Enhancements for the Mass Editor **//\n//* DETAILS This extension allows you to select multiple posts by once, by type or month. It also comes with visual enhancements for the mass post editor, such as selected post count and more! **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.mass_plus = new Object({\n\tapi_page_length: 20,\n\trunning: false,\n\tpreferences: {\n\t\tsep0: {\n\t\t\ttext: \"Experimental features\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\tenable_search_tags: {\n\t\t\ttext: \"Enable Search By Tag\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\texperimental: true\n\t\t}\n\t},\n\trun: function() {\n\t\tthis.running = true;\n\t\tif (document.location.href.indexOf('://www.tumblr.com/mega-editor/') !== -1 && $(\"#nav_archive\").length > 0) {\n\t\t\tif (document.location.href.indexOf('://www.tumblr.com/activity') !== -1) {return; }\n\t\t\tXKit.tools.init_css(\"mass_plus\");\n\t\t\tXKit.extensions.mass_plus.do();\n\t\t\tsetInterval(function() { XKit.extensions.mass_plus.do_headings(); }, 2000);\n\t\t\tXKit.extensions.mass_plus.do_headings();\n\t\t}\n\t},\n\tdo_headings: function() {\n\t\t$(\".heading\").each(function() {\n\t\t\tif ($(this).find(\".xkit-mass-plus-buttons-month-inside\").length > 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t$(this).append( \"
    \" +\n\t\t\t\t\"\" +\n\t\t\t\t\"\" +\n\t\t\t\t\"
    \");\n\t\t});\n\t\t$(\".xkit-mass-plus-buttons-month-inside .xkit-mass-link\").unbind(\"click\");\n\t\t$(\".xkit-mass-plus-buttons-month-inside .xkit-mass-link\").bind(\"click\", function() {\n\t\t\tvar m_type = $(this).attr('data-type');\n\t\t\tif (m_type === \"month-select\") {\n\t\t\t\tvar m_month = $(this).parent().parent();\n\t\t\t\tvar n_month = $(m_month).nextUntil(\".heading\");\n\t\t\t\t$(\"a.brick.highlighted\").trigger(\"click\");\n\t\t\t\t$(n_month).each(function() {\n\t\t\t\t\t$(this).find(\".overlay\").trigger('click');\n\t\t\t\t\tvar sel_count = $(\"a.brick.highlighted\").length;\n\t\t\t\t\tif (sel_count >= 100) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tXKit.extensions.mass_plus.update_count();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (m_type === \"month-deselect\") {\n\t\t\t\tvar month_deselect = $(this).parent().parent();\n\t\t\t\tvar month_deselect_heading = $(month_deselect).nextUntil(\".heading\");\n\t\t\t\t$(month_deselect_heading).each(function() {\n\t\t\t\t\tif ($(this).hasClass(\"highlighted\")) {\n\t\t\t\t\t\t$(this).find(\".overlay\").trigger('click');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tXKit.extensions.mass_plus.update_count(true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\t},\n\tdo: function() {\n\t\tvar m_extra = \"\";\n\t\tif (this.preferences.enable_search_tags.value === true) {\n\t\t\tm_extra = \"\";\n\t\t}\n\t\tvar m_html = \"
    \" +\n\t\t\t\"
    0 selected ()
    \" +\n\t\t\t\"\" +\n\t\t\t\"\" +\n\t\t\tm_extra +\n\t\t\t\"
    Select by type:
    \" +\n\t\t\t\"\" +\n\t\t\t\"\" +\n\t\t\t\"\" +\n\t\t\t\"\" +\n\t\t\t\"\" +\n\t\t\t\"\" +\n\t\t\t\"\" +\n\t\t\t\"\" +\n\t\t\t\"\" +\n\t\t\t\"
    \";\n\t\t$(\"body\").prepend(m_html);\n\t\t$(\".xkit-mass-plus-buttons-month .xkit-mass-link\").unbind(\"click\");\n\t\t$(\"a.brick\").click(function() {\n\t\t\tXKit.extensions.mass_plus.update_count(true);\n\t\t});\n\t\t$(\".xkit-mass-plus-buttons-month .xkit-mass-link\").bind(\"click\", function() {\n\t\t\tvar m_type = $(this).attr('data-type');\n\t\t\tif (m_type === \"help\") {\n\t\t\t\tXKit.window.show(\"Mass+ Help\", \"Welcome to Mass+, enhancements for Mass Editor.
    Use this menu to select from all the visible posts. Unfortunately, the Tumblr limit on editing posts at once is 100, so Mass+ can't select more than 100 at once.

    You can select the first 100 posts, deselect all or select by the type of the post. In order to select all posts, you might need to scroll down and let more posts load.\", \"info\", \"
    OK
    \");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (m_type === \"search-tags\") {\n\t\t\t\tXKit.window.show(\"Search by Tags\", \"Please enter the tag to search for:
    You can only search for one tag at a time.
    The first 100 results will be selected.\", \"question\", \"
    Search
    Cancel
    \");\n\t\t\t\t$(\"#xkit-mass-search-for-tags\").click(function() {\n\t\t\t\t\tif ($.trim($(\"#xkit-mass-search-tag-txt\").val()) === \"\") {\n\t\t\t\t\t\tXKit.window.close();\n\t\t\t\t\t}\n\t\t\t\t\tXKit.extensions.mass_plus.search($(\"#xkit-mass-search-tag-txt\").val());\n\t\t\t\t\tXKit.window.show(\"Please wait..\", \"Searching for tags, this might take a while..\", \"info\");\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (m_type === \"select-all\") {\n\t\t\t\t$(\"a.brick\").removeClass(\"highlighted\");\n\t\t\t\t$(\"a.brick:lt(100)\").addClass(\"highlighted\");\n\t\t\t\tXKit.extensions.mass_plus.update_count();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (m_type === \"deselect-all\") {\n\t\t\t\t$(\"a.brick\").removeClass(\"highlighted\");\n\t\t\t\tXKit.extensions.mass_plus.update_count();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (m_type === \"private\") {\n\t\t\t\t$(\"a.brick\").removeClass(\"highlighted\");\n\t\t\t\t$(\".private_overlay:lt(100)\").parent().addClass(\"highlighted\");\n\t\t\t\tXKit.extensions.mass_plus.update_count();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar m_sel_count = $(\"a.brick.highlighted\").length;\n\t\t\tvar n_sel_count = $(\"a.brick.\" + m_type + \":lt(100)\").length;\n\t\t\tif (m_sel_count + n_sel_count > 100) {\n\t\t\t\tXKit.extensions.mass_plus.show_100_error();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar m_selector = \"a.brick.\" + m_type + \":lt(100)\";\n\t\t\t$(m_selector).addClass(\"highlighted\");\n\t\t\tXKit.extensions.mass_plus.update_count();\n\t\t});\n\t},\n\tsearch_page: 0,\n\tsearch_url: \"\",\n\tsearch_last_timestamp: 0,\n\tsearch_found_count: 0,\n\tsearch_found_posts: [],\n\tsearch: function(tag) {\n\t\t// Get the last timestamp:\n\t\tvar last_brick = $(\"a.brick\").first();\n\t\tvar last_brick_classes = $(last_brick).attr('class');\n\t\tvar last_ts_start = last_brick_classes.indexOf('timestamp_');\n\t\tif (last_ts_start === -1) {\n\t\t\tXKit.window.show(\"Could not fetch tags\",\n\t\t\t\t\"Error: 100 - timestamp not found.\",\n\t\t\t\t\"error\",\n\t\t\t\t'
    OK
    '\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tvar last_timestamp = last_brick_classes.substring(last_ts_start + 10);\n\t\tif (last_timestamp.indexOf(\" \") !== -1) {\n\t\t\tlast_timestamp = last_timestamp.substring(0, last_timestamp.indexOf(\" \"));\n\t\t}\n\t\tvar [/* root */, /* page */, /* state */, blog_shortname] = location.pathname.split(\"/\");\n\t\tthis.search_found_count = 0;\n\t\tthis.search_last_timestamp = last_timestamp;\n\t\tthis.search_page = 0;\n\t\tthis.search_found_posts = [];\n\t\tthis.search_url = `https://api.tumblr.com/v2/blog/${blog_shortname}/posts?` + $.param({\n\t\t\t\"api_key\": XKit.api_key,\n\t\t\t\"tag\": tag.toLowerCase()\n\t\t});\n\t\tthis.search_next_page(tag.toLowerCase());\n\t},\n\tsearch_next_page: function(tag) {\n\t\tvar search_url = this.search_url + \"&offset=\" + (this.search_page * this.api_page_length);\n\t\tconsole.log(\"Fetching \" + search_url);\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: search_url,\n\t\t\tonerror: function(response) {\n\t\t\t\tXKit.window.show(\"Can't fetch archive.\", \"Could not fetch required pages to complete your request. Please try again later.\", \"error\", \"
    OK
    \");\n\t\t\t},\n\t\t\tonload: function(response) {\n\t\t\t\tvar response_object = JSON.parse(response.response);\n\t\t\t\tvar posts_array = response_object.response.posts;\n\t\t\t\tif (!posts_array || posts_array.length === 0) {\n\t\t\t\t\tXKit.extensions.mass_plus.search_results(tag);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tposts_array.forEach(function(post) {\n\t\t\t\t\tXKit.extensions.mass_plus.search_found_posts.push(post.id_string);\n\t\t\t\t\tXKit.extensions.mass_plus.search_found_count++;\n\t\t\t\t});\n\t\t\t\tif (XKit.extensions.mass_plus.search_found_count < 100 && XKit.extensions.mass_plus.search_page <= 5) {\n\t\t\t\t\tif (posts_array.length < XKit.extensions.mass_plus.api_page_length) {\n\t\t\t\t\t\tXKit.extensions.mass_plus.search_results(tag);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tXKit.extensions.mass_plus.search_page++;\n\t\t\t\t\tXKit.extensions.mass_plus.search_next_page(tag);\n\t\t\t\t} else {\n\t\t\t\t\tXKit.extensions.mass_plus.search_results(tag);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\tsearch_results: function(tag) {\n\t\tif (this.search_found_count === 0) {\n\t\t\tXKit.window.show(\"No results found\", \"Zero results found for the tag '\" + tag + \"'\", \"info\", \"
    OK
    \");\n\t\t\treturn;\n\t\t}\n\t\tXKit.window.close();\n\t\t$(\"a.brick\").removeClass(\"highlighted\");\n\t\tfor (var i = 0; i < this.search_found_posts.length; i++) {\n\t\t\tif (i >= 100) { break; }\n\t\t\t$(\"#post_\" + this.search_found_posts[i]).addClass(\"highlighted\");\n\t\t}\n\t\tthis.update_count();\n\t},\n\tshow_100_error: function() {\n\t\tXKit.window.show(\"Trying to select over 100 posts\", \"This action would result in more than 100 posts being selected, so Mass+ can not continue. Please deselect some posts, or click on Deselect All on top to continue.

    This is a Tumblr limitation.
    For more information about this, please click on the \\\"help\\\" link on the top left corner of this page.\", \"error\", \"
    OK
    \");\n\t},\n\tupdate_count: function(from_click) {\n\t\tvar sel_count = $(\"a.brick.highlighted\").length;\n\n\t\tif (sel_count) {\n\t\t\t$(\".editor_navigation button\").removeAttr('disabled');\n\t\t} else {\n\t\t\t$(\".editor_navigation button\").attr('disabled', 'disabled');\n\t\t}\n\n\t\t$(\"#xkit-mass-count span\").html(sel_count);\n\t\tif (sel_count === 0 || from_click === true) {\n\t\t\treturn;\n\t\t}\n\t\tif (sel_count === 100) {\n\t\t\tXKit.notifications.add(sel_count + \" posts selected.\", \"ok\");\n\t\t} else {\n\t\t\tXKit.notifications.add(sel_count + \" posts selected.
    You might need to scroll down to load more posts.\", \"ok\");\n\t\t}\n\t},\n\tdestroy: function() {\n\t\tthis.running = false;\n\t}\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBRTdBNjZFQjM4NjcxMUUzQTFDQUFDOThEMTlDRUY3OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBRTdBNjZFQTM4NjcxMUUzQTFDQUFDOThEMTlDRUY3OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ZPtM9wAAAYhJREFUeNq0Vs1KxDAQ7rTT1MoWERXxKPoEPoMnX0F8Bj0u/pzWBY/rxRfwHQTBR1E8ioinikWXNkaFdJbNbKa0nUNJPjLfdL5MJoF8bxz0aRiA7jlAVPUbAMKeM9Bh6V308p078S2VCSSKBRlwKgp8ESL/ohDdayS+qNGfgGZUlPiaKnL/xeDusp7sn5jP7sPEAo9/yOB+ZJGPg3MuA8EeRH6E40GIRafFi3A8qAWVoJUAYXggPzy1k9evz04O12ayTCRSdZFD1U3boJxYku3SZLxze23HT0fHQuTfKKfJgESuuD9qhtDxTJlqphLm8cUI5cQoIS1Bg7tVKGiEUE7Ih0M7eSuKTjZ5I03JgVGkfsugGyOcM81uPVuy4+ziyo6fz347z/Z4sgDJR7USummrAAQ/wrWKQIE/QAJehOMR3Wjzfd9xE7C96GboDfBeTJ34WurXVyYRV10CXyORYJOnDJHA11SRIAMM3XgsyYBxpra6oto8HXt92BmJBBm0ezoKdGxjPwIMANdcZlZzJu/lAAAAAElFTkSuQmCC","css":".xkit-mass-plus-buttons-month {\n\tdisplay: inline-block;\n\tfont-weight: normal;\n\tfont-size: 11px;\n\tmin-width: 700px;\n\ttext-align: right;\n\twidth: 100%;\n\theight: 35px;\n\tline-height: 35px;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tbox-sizing: border-box;\n\tborder-bottom: 1px solid rgba(0,0,0,0.22);\n\tpadding: 0px 15px;\n\tposition: fixed;\n\ttop: 45px;\n\tleft: 0; z-index: 100;\n\tbackground: rgba(255,255,255,0.86);\n}\n\n.xkit-select-option {\n\twidth: 21px;\n\theight: 34px;\n\t/* background: red; */\n\tmargin-left: 4px;\n\ttext-decoration: none;\n\tbackground-size: 24px 24px;\n\tbackground-repeat: no-repeat;\n\tbackground-position: 50% 50%;\n\topacity: 0.66;\n\toverflow: hidden;\n\tline-height: 400px;\n\tfloat: right;\n}\n\n.xkit-select-option:hover {\n\topacity: 1;\n}\n\n.xkit-select-option.text {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZGNjZFRUYxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZGNjZFRjAxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkY2NkVFRDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkY2NkVFRTFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsJAvbIAAAGdSURBVHja7NbJK0VhGMfxY8otKUMyRIaNlLmrEEIiEaJY8xdYsFOUlViwtbNhK5EpEkrpWiArC5GFoRQbynB9T/3U6aTc18JQ561P5z3vGZ73fd7ndG9YMBi0frqFW7/QvKBe0P8bNPKzQb/f7x4aRSneMIZdkyCBQODroK6WjkFE6/zONOh30tviCGi3RiSYZs80aLeO27hEChpc98RhGJs4xg7GkfOdoLmoVH/CkdYe18pmMYI6TaoKA1hEomnQDvhwg3WsabxWL7dUYM2wfzl6kYV6PCJP10MOGoEu9TfwpJk/aE9bde0M5ZrIMjJR6Hh3tEnQIpSof41q5ONcY5063iIeQ9rzQ0w6CipoUmldjuv94mw1SEUalrSABczjAnNIMinvKLSpb8/+RPe+KV0ViEGTXmwH3Ee7nslGrOk3ValUWkrbjGuv91CmbGxpPEOTsFTJPvWfQ93TPh1fVETO9opV9e1iOsWRUr0i97jSPQWhrnRa396D0utuU/pmP9LaoFUn40BVXqzzO/fDYd4fMy+oF/TPB30XYAA/FlCkcqgrRwAAAABJRU5ErkJggg==);\n}\n\n.xkit-select-option.photo {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZGNjZFRjMxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZGNjZFRjQxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkY2NkVGMTFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkY2NkVGMjFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PklZnYUAAAF6SURBVHja7JXNKwVRGIfdcRVKIhHJSmQhKWwslBUbWSibG9a3lIWVjaIsxNLKBkluyVcs/AEiO8nGQjefC2woF8V4Tr3qNM3cc+c2WZ23nuZ89f7m954zZ2Ku6xb8d8SsqBW1opGJXgw1qUcdVMlQDaxCuWfpFyThUvqvkG7duvLNGze81CgsaKJBUQobWv8TZmDOb7FjSDYfIJiGTVjT3Km4gWm4htmgpCanFZ6+cjAJO1ALhXAPHbACB+LwGZbyFf3R2mrzE+LyENpk/A7GoQ/WpaQD2ZLGQxy6bTiFc6iUsQyUifMeSMGUKZETQlQdlDERfJMyt0CzuFRHfRe+TYnCOH2AYWmPiMBfHMmzEd7FfSROlcMnOPYI6qHEiqN0OgjLcJtljSpzUZR7mhAniwHzqrQTuSRyQsyXyGHq91nXDXtQnYuoqbyP0KD11d27D2dwInduO/T6GMjkK5qUctZ73HdClzb24flUXrJdg/Z/akWtaKj4FWAAOdZxVglFqeYAAAAASUVORK5CYII=);\n}\n\n.xkit-select-option.quote {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTgwREFEQzYxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTgwREFEQzcxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkY2NkVGNTFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkY2NkVGNjFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp21znIAAAFvSURBVHja7JXNK0RRGMZdH5OSmgk1ZWEjCmUjElnNjiysmFKSBRZIFlZWNpKNz0lCdoqUlSWK3Sws+CuoSdJQXL9T7+J2u+eYMyarc+pXz9z3ueeZ9517z3i+75f99/JcqAt1oSUJzWW8qMt90A77v+yrPCnYjk/7X+FipcUXHIc9qIFPONb4BuEIGqAWVsOG8gIDF+FEAs/gRuNLw4UEXsNllKmQTqdgQ/QmLEDUbzIkHVbBKUzCezGhvbAlWm00r/E1y7hjMoUJyOs2NY03Jp1VwwvM6R5GmUQdfIgvb+rEFDoCXaIrYA1mIRHy9cOwaDX2ZViCxmJC0wEdl5HtwC20BGqjAa2mMgbrcAc9tqGdmusdsBu4t1vja4JD29CEoTYAraLrDb4229A3Q029FknRr7bHoCn00VBTR9uz6GwpQzOG2hU8iT6Ab40vaxt6DisR75w63makW7Xu5XMu5HuQJ979n7pQF/q39SPAAIOXa93gNF/cAAAAAElFTkSuQmCC);\n}\n\n.xkit-select-option.link {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTgwREFEQ0ExQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTgwREFEQ0IxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODBEQURDODFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBODBEQURDOTFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Puk0h+sAAAGqSURBVHja7NZNKARhHMfx3fVyQF6Kg7eUXLQHysUmL+HgtUjhILJRilyk3F04SHJyUBJyk1YSeYkktZID2igHB29Rsl4Om/Wd+h+mzczq2XLYdurT7Owzz/x2Zv7Pv7X6/X7Lf2/WSGgkNDxDG9dHAr8qQyccyIIN93BjEWv6k111Y79eN/qPPy4RE3BKkH7LE+1YQT/uzC5m+0NgElbRY3L+u+ybsSVPIaTQSVQYjO2hCKmowTXsmEOMamg5ug3GHtCCLwziCB1yXIVW1VCnydg2XrCEcUzhGLcy3qsa6jAZ0yo2Bbl4xT5ikSDjBUYTg1VvRsDxE3ZQDK8UUCU8eMMo0uXcZNVQ/ZPYlWXxKJ+1dxeFOPShXmog6BYsVAvIgQ8DSJPlU4ghaRYbBnO9qu/0VPYfuECbPNpvXEq40eZRvdN5NCEepZhGNg7wiQaTuQuqd+rCpry7GQnU1u2yFE2JwbxzzKreqU+KRAvOlwZwJZWZaTDnGV1Szcpt8Aa1unVoNwk8k3Z4EmrvtUhPrZYucyjNQN/stYIbliXjjvxziISGb+iPAAMAcz18wE4/HnIAAAAASUVORK5CYII=);\n}\n\n.xkit-select-option.chat {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTgwREFEQ0UxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTgwREFEQ0YxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODBEQURDQzFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBODBEQURDRDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pmc6aAoAAAEzSURBVHjaYvz//z8DvQHjqKWjlo5aSjVL7ebf4AZSnUAcAsS8BMz6DsRHgLgUiG+DBA4lamBVyELAoG4gziTSA1xA7A/EfEDsCsR/cSlkImBQJBmhZwK1mIFcS7nJjTZ8koSC9x8S+xkQswKxKJT/GIhBCYIDGpSSSHp+UOJTZNABxLOB+A+UfwaIzwFxL1QOBniA2IdalrIB8UpQogbi+UD8E4jfQX3KhqSOGSofQQ1LfwGxIxAXAPF6IL4FxWZAbIAlJbuRG6fI4BsQqyPF3R9o3AkDMTua2hVAnE0NS52AWASIpYDYC4jloBa/gQY1DHwF4lxoYUGWpchJPwqJrYxHz1+kxEZWnJJTMDMRMpeQpdfIsPQ9pfm0BIhfkWAhKG5boYlutD4dtXTUUuoAgAADAGzGZBT0+yuKAAAAAElFTkSuQmCC);\n}\n\n.xkit-select-option.audio {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDAxMTc2OTExQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDAxMTc2OTIxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODBEQUREMDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEMDExNzY5MDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmgJCVkAAAGISURBVHja7NY/KEVRHMDxd3kxyKoMMmCxeFneoje8wSBiMOgVykCkPEYyUCYDBgsRr2SUwkKUyeDPYDBICovVS/l/fU/9bp1u7nvvnluk7qlPt/On8zvn/s49Xcu27chvl6LIH5QwaBj0/waN5upcTx+7m6rRj1bUyKIfcIhlnOmDe+cTgXfajUuM4x2bal14xABOMV3InFEfATO4RjuOXP2NWMAkyjEaNKe1WMQdkj8EVOUcLThBGm1Bg47J6kckf14li2Goy3wi19z5gpahAzfYLmCB6iAdII4606DqhFbiAmuY0foqUKXV1anelbyrkjANmpFnJ3rQrPWlUK/Vk5LXIanPmQZtkPyoyT6Ec+q78KzN8abtOCWpMT5I+3KQ1NgvaYsL9bpnpc35G9iTlBh/p69YQkzqn/JswpXkbVXaLHnuaOONd6pP4EysLoJB3GPLtdNY0Au/1GP8C0rkKnzye6Xme71Tkp9i9Ln6brGi1Z1XvyEHLOs1qRX+DYZBw6B+yrcAAwC9FkublkrqIgAAAABJRU5ErkJggg==);\n}\n\n.xkit-select-option.video {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDAxMTc2OTUxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDAxMTc2OTYxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpEMDExNzY5MzFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEMDExNzY5NDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlXaRegAAAFvSURBVHja7NbNKwRxHMfxXYsL+QdwEScHBxlyVPKQEkkO/oF18XwQKSSHvbg5c/TwH9iLXLQlFwc5SFKK5CGUxXp/63PYNjvGzoTDfOvVtL+Znc9vfvOd2Y1mMpnIb1dR5A8qDA1DA6lit53x6UXb9GEG9bjCOpbQhBU4eMIOZnFnX1pLzBcWSnViCzF9rsGCJtCKKo2XYwSVGMBbwVdKTWQFWp2hDIM5x9kKvKAXLdj3c0+rtb3FPcZxrDF7lV1rOW0tdzVe57eRzrXdQDse0KixKJLoQQodGj/x1UhUAm0YQ5euInuiQ2jWvSzFNg78hibVTHNowA3ec46pwCU2sfzF/h+H1mq54jp5vrJuvcCj+mAUU4WGnmprs/9wOc7u76GWehX9bqHfNZKjk9ljU+LCJp/GsAJ9LW9Kj4uXcvTCCOTdG/MYalf6HFSo1x+FI3TjNYgTpj2G2nO6h0l1cf6uC/+YhaFh6L8P/RRgAJzXR6+2XwoJAAAAAElFTkSuQmCC);\n}\n\n.xkit-select-option.ask {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0YwNkY2NzkyNjEwMTFFM0E4QURBMkY5NDVFMjREMzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0YwNkY2N0EyNjEwMTFFM0E4QURBMkY5NDVFMjREMzgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRjA2RjY3NzI2MTAxMUUzQThBREEyRjk0NUUyNEQzOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozRjA2RjY3ODI2MTAxMUUzQThBREEyRjk0NUUyNEQzOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmiD5J8AAADXSURBVHjaYvz//z8DvQETwwCAUUtHLaUKYCFGkYmJCYwpAMQOQGwA5R8A4gtA/AHEOXPmDPUshQKQRRuAWB5JrB6IHwJxANRyqgavANRXMAs/IsnJQ+UEqG1pAhDzQ9kboRYIIlnODw12qlpqgMSeAKU/oAWpAFUTEtSiBVD2BSTf2yOpuUBtSy9gCe75SPyFtEhIyEABzcJGqCNoWjgEoFnYQI8SCTnBHKBZiYQGNiBZdoEcS8nxKSgl74dig+FV4OPJPh/IsZRxtGE2aumopYPeUoAAAwBfSihME+bbPgAAAABJRU5ErkJggg==);\n}\n\n.xkit-mass-plus-buttons-month-inside {\n\tdisplay: inline-block;\n\tfont-size: 11px;\n\tfont-weight: normal;\n}\n\n.heading {\n\tpadding-top: 6px; font-size: 13px !important;\n\tborder-top: 1px dashed rgba(0,0,0,0.32);\n\tmargin-top: 12px;\n}\n\n.xkit-selector {\n\t/*height: 35px;\n\tborder-left: 1px solid rgba(0,0,0,0.32);\n\tmargin-left: 0 !important;\n\tpadding: 0px 8px;\n\ttext-decoration: none !important;*/\n}\n\n#xkit-mass-count {\n\tfloat: left;\n}\n\n#xkit-mass-count span {\n\tfont-weight: bold;\n}\n\n.xkit-mass-plus-buttons-month-inside .xkit-mass-link,\n.xkit-mass-plus-buttons-month .xkit-mass-link {\n\ttext-decoration: underline;\n\tmargin-left: 15px;\n\tcursor: pointer;\n\tdisplay: inline-block;\n\tcolor: rgb(150,150,150);\n}\n\n.xkit-mass-link.xkit-no-left {\n\tmargin-left: 0px !important;\n}\n\n.xkit-mass-plus-buttons-month-inside .xkit-mass-link:hover,\n.xkit-mass-plus-buttons-month .xkit-mass-link:hover {\n\tcolor: rgb(90,90,90);\n}\n\n.xkit-mass-plus-buttons-month .xkit-mass-separator {\n\tcolor: rgb(170,170,170);\n\tdisplay: inline-block;\n\tmargin-left: 25px;\n}","title":"Mass+","description":"Enhancements for the Mass Editor","developer":"STUDIOXENIX","version":"0.4.8","details":"This extension allows you to select multiple posts by once, by type or month. It also comes with visual enhancements for the mass post editor, such as selected post count and more!","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/messaging_tweaks.json b/Extensions/dist/messaging_tweaks.json new file mode 100644 index 000000000..624bef737 --- /dev/null +++ b/Extensions/dist/messaging_tweaks.json @@ -0,0 +1 @@ +{"id":"messaging_tweaks","script":"//* TITLE Messaging Tweaks **//\n//* VERSION 1.8.3 **//\n//* DESCRIPTION Helpful tweaks for Tumblr IM **//\n//* DETAILS This adds a few helpful tweaks to the Tumblr IM, for example minimising the chat, hiding the IM icon or changing the looks of the chat window. **//\n//* DEVELOPER New-XKit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.messaging_tweaks = new Object({\n\n\trunning: false,\n\n\tnotification_sound: \"data:audio/wav;base64,UklGRtRzAABXQVZFZm10IBAAAAABAAIARKwAABCxAgAEABAAZGF0YbBzAAAIAAAA6//k/97/8v/x//z/AgDw/+r/5f8QAAUAFgAGAPj/BgDy/+T/AwD6/+P/5P/g/+3////4//r/8//7//H/HAAIAAMA/v/t//H/AwD///H/9//X/+3/7P8AAAEA/P/o/+r/CAADABgACQD6/wYA7f/r/wAAAQDj/+//3v/0//v/+//1//L/2//a/wYA+P/3/+3/4v/l/+n/4//q/+j/wf/J/9n/7P/v/+T/4P/b/+n/6/8GAPr/6f/z/+H/2f/l/9X/4P/j/+v/5f/c/+D/6P/p/+T/3//V/+D/xv/V//H/6f/d/97/5v/k//P/6v///+7/0//X/+3/6P/f/93/xf/T/9P/2f/t/+j/1//d/+v/5f///+z/7f/f/9n/1f/w/+f/1P/T/8L/1P/l/+H/7f/e/9v/1v/6/+v/+f/p/9r/1v/m/+H/5P/k/7//0f/N/9L/7v/k/97/4P/h/+T/BQD1/+7/6//V/+D/7P/m/9v/3P/F/9L/3v/e/+r/5//c/9r/+f/v/wkA7f/j/+D/6f/r//D/6v/T/9//yP/Z/+//6//v/+z/6//n/wcA8/////7/6P/k//L/4P/r/+v/z//e/+L/8//8/+z/5f/d//r//v8IAAAA7v/v/+v/6v////b/4v/k/8r/2//1/+7/+f/1/+r/7/8JAAIAAgAFAOn/8//3/+P/+P/z/9X/2//f//f/+//z/+3/4P/w//T/DQAFAPP/9P/t/+3/+//5/+X/5P/O/93/6v/v/wAA7//o//T/AAD6/w4AAwDv//v/8f/n//D/8v/d/+X/1v/x//n/+P/s/93/9P/z/w4AAwABAP7/6//t/wIA9f/2//H/1P/f/+f/8P////r/7f/0/wMA8f8aAAcA+f8DAPb/8v////T/7f/y/9z/6f8CAA4A9//p//b/+P8SAAIACwAMAOv/8f8IAAMA+v/3/+b/7v/o/+7/EAAGAPb/+/8EAAgAIgALAAoAEgD5//D/DQAEAPX/+//j//j/AgAMAAoA9f/6//f/FwALAB8AFAD9//r/DAAEAAcACADq//X/5//0/xAABgD+//n/BgAFACIAEQAPABoA+P/4/wwA+f///wMA5v/x//7/EQAMAP7/9//7/w8AEAAkABEAAwD//woA/v8NAAcA8P/3/+f/9/8IAAIACwAIAP//BgAiABUAFQAVAPn/BgAJAPX/BgAJAOX/8f/9/xEAEQD//wEAAAAJAAYAKgAaAAQAAwAFAAQAEAAFAP3/BADk/+3/CgAJAA8A//8HAAsAHAAJACcAJAD8/wQADwABAAsAAgD0/wAA8/8EABgAEAADAPL/CwANACsAEQAXABEABAABABEAEgD+/wgA5v/9//r/BwATAA0ABQAGAB0ADQAsABwABgAOAAsAAQAQAAoA9/8DAO3/BgAUABoACADy/wwAEQAlABcAGwAjAAIAAQAYABIABQAIAO/////3/wEAGgAWAAUABwAYABgALAAcAAwAIQADAP//FQAOAPz//v/w/wAADgAXABAAAAAFAAUAIwAbACIAHQAAAAgAFQAOABAACwD4/wAA9v8CABgAFQAJAA0AEAAWACgAHAAVACoAAAADABkADQAEAAQA9v8MAAQAEgAVAAsAAAD5/yIAGwAnAB8ACQAQABAACwAWABMA9v8EAO7/BwAOABQAEgAUAAsACQApABsAGgAnAAQABwARAA4ACAATAOr/AwAEABsAGgAHAAoAAwAYABAALwAgAAAACwASAAgAGAASAP7/BwDu/wUADgASABYADgAMAAkALgAXAB8AJgAJABMADQAGABQAEQDw//3/+v8VABsACwAJAAcAEgAQADIAIwAOABMACAANABsAEQAGAA4A4//9/wgAEQAbABkABAAUACEAEgAtACQACAARABgA+f8cABYA/v8BAPb/CwAaACEABQAGAAwAFAAvACAAHQAZAAgABwAZABMAEQAOAPL/+f8FAAgAIwAVAA8AFQAbABIAOAAjAAkAGQAQAP3/FwANAAIACADy/woAFgAfABMA//8LABEAKwAbABoAGgAMAA0AFwAQAA0AEADz//z///8KABcACwANABQAFQATAC8AKgANACIAAwAIABcACwAFAAYA6////x4AKwAxABsAFgAbADoALQA6ADIAGQAhACsAHAAqADQACwAhAAQAFQAuAC0AIAAkAB0AHwBCADgAKQA/ABwAKAAoACEAJQArAAYAGAAcACsALwAZAB0AHQAxACwARgA0ABoAKAApABsAMAAsABEAHgAFACAAKgAlADEAJQAiACYARgAzADIAPAAkACYAJwAaACYALAAEABEAHgAzADIAJgAfABsAMQAzAEkAOQAqACsAIgAgADcAMwAWABkADAAXACgAKQA0ACkAJgAhAEUAKwBBADwAIwApAC4AGwAjACUADwAcABMAKQAvAC4AHwAUACkALgBCADEAJwArAB4AHQA2ACoAEAAZAAQAFAAaACAALgAgABkAJAAvACsAPgAuABwAIwAjAA8AKAAhAAoADAALACQAHwAjABkADQAZAB8ANQAnACMAJQARABQAKgAhABUAEAABAAsABwARACoAHQAXABoAJAAaADIAMQAVACYAFQANACIAHAAFABMA+/8WABoAJgAXAAgAFwATADAAIwAzACQADwATABsAGQAZAB8A/P8JAAQAFwAeACEAEwAdABQAHQA1ACsAIwArABEAEAAeABAAEQASAP7/EQAWACYAGQAMABEADwArACYAMAAmAA8AFAAcABgAIQAUAPr/CAD6/xMAFQAPABcAEQASAA8AMgAlAB8AKgAJABQAHAANABAAGgDu/wEADAAWABkADQAHAAIAFQAeACcAHAAIABQAEAAJABgADAAAAPz/9f/9/wsACQAYABAABQALACQAHgAYAB0AAQAQAAkA+P8NAAsA7P/0//r/EgAOAAgABQD//wkACwAqABYAAgAKAAMA/P8UABEA+v8AAOb/+f8AAAcADQAJAAAABAAcABMAIAAZAP3/AgAFAPn/EAAMAPP/9f/p/wYACQAOAAMA+P8JAAsAGAAHAA8ACAADAAcAEgAOAPX/AgDm////+/8MAAYABQD7//n/GAAVACYAHQD+/wkAAwD3/xUACwDz//X/4f8DAA0AFQAFAPT//v8AACIAEgAYABUA8v/5/xAADQABAAYA6P/0/+7/+f8LAP//AwAHABMAEAAaAA8A8f/5/+X/3f8AAPX/FQAgAAIAFQD0/wMA+v/p//b/8v8cAA8AFwAJAP7/AQADAP//AQD//+f/8v/w//z/CAAMAAMADgAHAAUAHwAGAAgABQDz//L/CgD8//L//f/h//j/8/8NAAcA/P/2//X/EwARABYADgD2/wAA+//2/wcAAQDm/+n/5f/4/////P8FAAYA+P/4/x0AEwAJABUA9f////3/9P/5/woA1P/q/+z/DgD///f/9v/z/wQAAgAgAA8A+f/7/wMA+v8NAAIA7f/z/93/8f/5//7/BQAAAPf///8UAAsA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XQFSAW0BYgFTAWIBRgFVAWIBZAFtAWQBWwFfAXcBagFtAW8BWwFiAWgBYQFiAV0BSwFWAU8BZwFlAV8BWwFXAV8BYAF9AW8BaAF0AVgBUgFnAV0BWAFZATsBUwFUAWMBXwFhAVcBWgFuAWIBegFsAVYBUgFgAV0BYwFfAUQBUwFFAVMBagFoAVkBTwFdAVQBfwFlAWQBbAFVAVEBYwFRAVoBVwE8AU0BSQFVAWYBWAFZAVcBXwFeAXUBaQFXAVsBWQFSAWMBXwFOAU8BOgFWAVcBXwFdAUoBWwFVAXQBXgFrAWQBUQFbAWEBSgFPAVQBPgFIAUQBUgFjAVEBUgFYAVoBXAF1AW0BWAFXAVUBUgFjAV0BTQFSATwBSAFWAV0BXgFQAU4BTwFqAWUBdQFvAVMBWQFTAUUBTQE9ASYBMAEmATwBTgFGAUEBQQFAAUABXAFNAUYBRAE4AT0BQgFAATgBQAEjATcBOQFQAUUBPAExAS0BTAFAAVYBSAE8AUUBNwEtAUMBPwEoATsBJAE3AUIBPgFGATwBOwE2AVgBSgFKAUABMwE2AToBPAE9ATwBHQEoAS8BQQFCATsBNAEwAT4BOgFYAU0BNwFBATgBMAE4ASwBOQE8AT4BOwE1ATwBNwE3ATgBNgEiAS4BFwEpAT4BOQEtATIBOgE5AUcBPQFOAUIBIwExATsBOQEzATABHAEtASYBMQE8AT8BLAExAUMBOQFUAUEBPQE4ASsBLgFFAUABJgEuASEBMAE9ATkBPQE3ATEBMwFQAUABVAFEATgBOAE7ATYBOwE+AR4BMgEnATcBQwFFATYBPQE5AT0BWQFDAUwBRQE0ATUBSQFDATUBNAEiATIBPwE5AUQBPwE7AToBUQFIAVcBTQE7AS8BSAE5AU0BQAEoAS8BIgE4AUEBQwE/AUIBOQE+AVwBSwFLAVABOQE7AUQBMQE/AT8BHwExATEBQQFIAUQBLwEwAUkBPwFbAUsBPgE8AT8BMAFIAUIBKQE1ASQBLwFDAT0BQwE5ATUBNgFUAUkBTwFWAS8BOwFAATQBPwFGASABKgEoAUEBRAFBATkBLgFCAUsBWAFPAUEBSAE4ATUBQgFGATQBPgEZASoBOQE5AVEBSQE8AT4BTgFLAVYBWQE/AVABQQE3AUYBQwEtATwBKAE9AU8BTgE8ATgBRQE9AV4BUAFKAVYBOgE/AVEBRgE9AUABKwE8ATgBQQFQAVEBPAFBAU4BSgFnAVsBSAFTAUMBPAFOAUUBOQE2ASwBPwFNAVMBRgE5AT8BQwFdAVUBVgFPAT4BQAFQAUQBRwFDATABOQE1ATsBUQFLAUIBOgFOAUkBZgFXAUsBVAFFATwBTgFEATcBOgEqATgBQQFVAUwBPAE8AUIBUgFOAV4BUwE8AT8BSwFBAUsBSgEpATkBKAE7AUsBSAFCAUIBQgFFAWEBVAFTAVcBPgE3AVIBOAFAAT8BJgE3AT8BVAFNAT0BOwE4AVMBSAFjAVIBPgFIAUABPwFQAVQBLQE2ASsBOwFHAUUBSgFGAUMBQwFhAVABWgFZAT0BRwFHAToBRwFFASsBMQE4AUsBTwFEAT0BNgFLAUgBZgFPAUcBSQFDAT8BUAFIATsBOgEmATcBQgFGAUYBRQFBAUQBWgFMAV4BXQE+AUgBRwE8AU4BSgEvATQBLgFFAUwBRAFLAS8BRAFGAV4BVgFBAU8BQQFBAVIBSQE9AT0BKAE7ATIBPwFXAU0BPwE+AVMBTwFaAVgBOQFSAUQBNgFGAUEBMwE5AScBNwFPAU4BSQEzAToBRAFbAVQBSgFJAUIBPwFQAT0BQwE/AScBLgEtAToBVwFLATwBPQFKAUoBXwFTAUABTwFCATkBRgFAAS4BOQElAT4BQQFPAUkBNQE9ATwBVwFOAVIBTgEzATkBSwFFAT0BRAEjATIBKQE7AUABTgE2AUMBPQFLAVkBTwFJAU8BPAE3AUgBPwE3ATUBIgE6AToBRAFJATMBOAE0AVIBSAFaAUoBNwFHAT0BPgFDAUYBJAEuASgBNwFCAUIBQAE/ATkBOgFeAUwBSgFRATsBNQFDATMBPwE9ARsBMgE4AUkBRwE5ATcBNgFJAUIBWgFQATYBOwFDATYBQQFCAS0BOQEfATEBPQE9AUUBQAE5AToBUgFOAVABVAEyAT4BQAE4AT4BPgEiASsBLwFCAUgBPQEzATABQwE9AV4BSQE7AUYBNwE6AT0BQAEuAT0BHAEqATcBPwFHAUEBLgE1AVABRgFSAUwBMQFBAToBLAE6AToBIgEvASABOQE9AUEBNAEnAToBNwFVAUkBQgFGAS8BMQE9AUQBMgE0ARYBJgEpATEBQQE8AS4BMwFAAT0BUwFGAT0BSgFNAUYBTgFNATYBQgEvAUMBVAFXAUcBOgFHAU8BYwFZAV8BWwE9AUIBUgFTAUMBSAEqAT8BMwE/AVgBVAFGAUgBWQFYAWoBXQFOAVoBQwE1AVUBRwE6AT8BLgFDAUYBWAFOAUABQgFGAWABXQFgAVkBQwFJAU8BTgFJAVABMQFBATEBPgFTAVABRwFGAU0BUQFiAVsBUgFhAT4BOgFUAUcBQAFFATIBQwFCAVABVQFHAT0BPQFcAVwBYAFWAUYBTwFGAT8BVgFPATABNwEtAUMBRgFIAU4BTgFCAUMBZAFZAVQBVgFBAUcBSgE9AUIBSQErATQBOgFSAUsBQgE4ATMBSgFMAV4BTQFEAUUBOQE4AUkBTAErATkBHgE2ATkBPgFBAUEBNQE/AU8BSgFNAVMBMgE8AToBMwE4AT8BHwEpASoBOwFFATcBNgEnATcBOAFTAUkBNQE/AS0BNgE5ATYBMAEzARgBIgEyATcBPAE1AS8BNwFDATUBUgFNASwBMgE0ASoBNgE0ASEBLQEZASsBPQFCAS0BIwEuATgBSQE9AT8BOgEpASgBQwE6AS8BJgEbASQBIgErAToBNwEqATIBOgE5AVEBRgEwATgBLAEiATkBLgEiASwBFAEmATEBPAExASABLAEsAUQBNgFHAT8BIAEcATMBLQEpASYBEwEgARMBHQE6ATEBKQEiATIBKwFDATQBKwE/ARcBGwEyAScBFwEaAQoBHAEhASUBLwEXAR0BGAE3ATMBOAErARwBIAElAR4BJwEmAQcBEwEIARQBJQElASABHwEcAR4BNwEoAScBMAETARIBIwEbARABGAH9ABUBDgEgASQBGQESAQgBKgEkATEBIQEXASABFgESASUBJgEDAQsBAAERARIBCAEjAR0BFwEUATEBHwEoASIBEgEYAR0BDQEXARwB+gD+AAUBGgEhARkBFQEQARUBFQEzASYBGQEhARABFgEVAQ8BCwESAQIBEwEHAQsBGwEYAREBFgElASIBJQEgARQBHwESAQQBGwEJAf4AAQEDAR0BEgEQARUBAgESARIBMAElARYBFgEHAQwBFAEVARUBHAH6AAQB9wD+APoA8gD3AP8AEgETATUBOwH6AAgBEAEKARgBFwH5AAkB7AD+ABABGgEDAfMACgELASIBEgEhAR4BAQEFARUBFgEEAQcB8QD+APcA/AATAQ8BBAEEAREBDQEjARsBCQEWAQUB/QARAQIB/AAAAewAAwECARcBCAH4AAEB/QAXAREBHAEUAfwA/QARAQkBCQEEAfUAAgHtAPgAEQEMAQQB/wAGAQMBJwESARABFwH9APgAFgECAfcAAQHpAPQABAEWAQQB+AABAfYAFAEUAR0BCAEAAQQBBQEEAQkBAwHuAPoA6ADxAAwBCAEDAQAB/wABAR4BDQETARQB/QD7AAcB+QAAAQAB4QD3APYACAEIAf0A/AD1AAwBBQEdAQ0BAAEDAfoA+wAKAQgB7AD7AOAA9gD5AAABBAEAAfsAAAEVAQMBFwEVAfQAAQEAAfoA9wAEAeQA8wDqAAUBCQEEAf0A6gACAf0AGQELAf8ABQH4APoAAwEEAfIA9gDfAOsA9QD1AAoB+gD3AP4ADQH9ABgBFQH1AAIB+ADyAP8AAwHeAO4A4gD+AAUBAAH0AOkA+QD+ABUBAwEIAQMB8QD0AAQB+QD7APUA1gDoAO0A8wABAfoA9AD2AAYBAQERAQkB8QD+APkA5gACAfcA5gDsANoA6gD9AAYB+ADgAPkA8gAUAfoABwH9AO8A8AAHAfMA9gD0ANcA5ADbAOsAAwH8AO8A9AD4APwAGAEHAfsAAAH1AOYAAAH1AOgA7QDVAOoA8gAGAfYA6QDoAO4ACAH+ABEBAgHsAPEA+wD1AP0A9wDYAO4A1wDlAP0A+wDrAPQA9gD8AA4BAQH/AAEB7QDvAAAB8wDpAOsA3QDiAOYA+ADxANcA2wDYAPUA6AD5AO0A4gDcANsA2QDlAN8AxgDSAMMAzQDnAOAA5QDcAN4A4AD5AOQA7wDnANAA1ADbAM4A0wDdAMQAzADNAOMA6gDgANIA0ADfAOcA8wDvANsA3gDQANIA5gDbAMwAzQC5AMsA2QDbAN0A1wDVANIA7wDYAPIA6wDRANQA1gDHANoA2wC7AMcAxwDeANwA1gDQAMIA2wDaAM8A1QDSAOAA2gDbAMsAzADZANYA9QDqANQA1ADSANkA3ADWAMMAzAC9AMIA1gDXANsA1ADRAM0A6gDnAOgA5ADMANUA2ADWAN8A1QC3AM4AygDXANsA2wDVANwA2ADXAP0A5ADkANwA0wDYAOMA3gDQANEAvADQANcA3wDiAN4A0wDWAOcA5QD2AO8A1wDYANwA4QDiANwAygDQAMkAzQDrAOIA3ADWAN8A5ADzAO4A9QDtANQA1gDjAOkA1gDYALwA0QDLANQA7gDlANwA2ADpAOoA/ADnAN0A4gDfANQA7gDhAM8A1gDGANYA4ADpAOIAzQDUANYA8gD1AO0A9ADYAOMA3wDNAOIA3QDCANIAxADbAOQA5ADdAN8A4QDeAPcA6QDZAN8A3gDYAOkA4wDQANUAwQDVAN8A6ADdANIA1gDZAPIA5AADAe8A4ADoAOIA0ADlAOUAygDSAMEAzgDqAOsA4gDkAOEA3QD/AOwA7ADmAOEA4gDqAOwA3ADhAMUA2QDeAOoA7wDpANgA2wDzAOoAAQH7AOgA7gDgANYA7ADoANEA4ADPAN0A6wDsAPAA5gDjAOQABQH1APUA8wDiAOUA6gDwAOUA9QDKANkA2QDpAPgA6gDhAOAA7gDzAAcB+QDuAP4A4ADSAPUA5QDmAOgAygDUAOgA6gDzAPQA4QDlAPkA7gAAAfgA5QDlAO4A6wDrAPAAzwDZAM8A6QDzAPMA4QDbAOwA8AABAfMA9wD7AN0A5QDrAOoA3wDpAMcA1QDgAOcA9gDnAOQA5QD4AO0A/wD4AOIA5gDmAOcA7gDsANEA3QDVAOIA7QDvAOcA3ADiAOoABQH5APkA+wDhAOsA6gDcAOIA6gDNANoA2ADkAPAA8wDfAOgA6wDqAAgB/QDuAOcA6QDhAPkA9ADeAOAAxQDiAOUA7gDnAOQA4ADjAP4A9gAAAfsA4gDrAOsA2ADrAOoA0wDZANgA4wD0AO8A4wDnAO0A6gAJAfQA+ADxAOEA5AD1APcA3ADjAM0A4QDjAO0A+ADmAOEA2AADAfIABgH5AOgA9QDlANUA8wD2ANAA3QDOAOQA6gDoAO4A6QDiAOUAAgH+APAA7QDkAOQA8QDoAOQA6ADJANoA3QD0APEA5wDjANsA9wDvAAYB+gDuAPcA4wDYAPEA6ADaANwAzgDbAOgA6QDwAO0A3QDjAAUB9gD8APAA3gDrAOsA7ADqAO0AywDUANkA8ADyAOYA5QDeAOgA5AAHAfwA7QD3AOIA4gDoAOQA3ADrAMMA1ADjAOYA8gDhAOMA6gD0AO4A/wDzAOEA4ADuAOcA7QDtAMoA4QDLAOkA6gDxAOIA2gDmAOEABgH2APQA8wDmAN8A6wDbAOUA6QDCANQA3gDtAOsA4wDeAOUA6gDnAAIB/gDcAOAA5QDoAOkA5gDaAOEAyADaAO4A8wDnAM8A5ADhAAAB7gD/AP8A2wDmAOUA3wDnAOsAxgDXANEA6ADsAOQA4gDjAOoA6wACAe8A6gDkAOEA4wDpAOQA2gDeAMQA5QDZAPIA5wDnANgA3wD6AOwA+wD7AN8A5wDkANcA5gDfAM4A0wDOAN0A6wDoAOMA5gDdAOUAAAHwAOwA5ADgANQA8QDmANkA3wDGANIA2gDqAO4A3QDWANsA7QDpAP4A9ADgAO0A2gDTAOcA3wDNANcAwwDRAOUA4wDlAOIA2QDgAPUA7QDsAOEA2gDXAO0A3gD1APIA4gDsAOEA+AD7APQA7ADnAPkA+gAQAQcB8wADAfUA5wD7AO8A6wDwAM8A5wDkAPoA9AD0AOcA7wATAQMBCgEBAe0A9wD7AAAB8QD9ANYA4QDYAPEA/QD4AOwA4gD2APYAEgEFAfkACgHsAPEA/gDsAO4A9QDOAOQA4wD0AP8A8gDwAPAABgH/AAoBAAHtAPMA+gD0APkA/gDaAOwA0ADwAPgA/gD7AOwA7ADxABIBCAEAAQ0B7AD0AP8A7ADwAPMA0wDgAN4A9QD+APMA7gDrAPkA8wAPAQIB6QD2AO4A6wD9APYA5wDnAM0A6wDuAPkA7wDpAOkA5gAFAf0AAAECAeQA8wDoAN0A7gD4AMcA3QDVAOsA7ADpAOsA6QDnAOIABgHzAO0A6ADgAOYA8gDoANkA3gDHANQA4QDsAOoA4ADVAOEA8wDtAPwA+gDaAOUA3ADZAN8A5ADPANQAwwDYAOkA4gDhAN0A3wDbAP0A7QDsAOcA0gDcAOcA5ADYAOAAwADPANMA6QDoANkA1wDTAOsA5gD4AO4A3QDrANgA1ADiANgAzQDZAL0AygDgAOIA4QDeANgA4ADxAOoA5gDmANQA2QDhAN0A3QDgAMEAzADRAOIA4wDYAN0AzADiANoA+QDmAOUA6gDTANIA3ADWAMQA0QC5AMoA0QDUAOAA3QDPANUA5gDlAOsA4gDIANgA0gDSANgA2wC8AL4AvwDZANIA1ADSAMsAywDNAPIA4gDfAOEAywDOANQAwwDMANEAsQC9AMQAzwDTAM0AyADOANQAzQDlANwAwQDEAMkAzwDQAMsAtgC9AKwAxADHANMAyQC9AMIAxwDgANQA2QDZAL8AywDHAL0AxwDMAKkAtQC2AMcAygDDAMcAygDIAMcA4wDYAMQAvwDGAMMAzgDFALsAvQCmALMAxADPAMMAtgC+AMYA0QDIAOEA2wC6AMYAxQC9AMgAxQCrALcAoQCyAM8AyQDFAMIAvADEANoA0ADIAMoAuAC8AMsAxAC7AMEAogCxAL4A0QDBALoAugC1AM4AvwDiANcAvgDMALoAsQDBAMAArgC3AJgApADIAMQAzQDGAK0AsQDFALsA2wDfALYAvQC1ALoApQCmAKUAtAC7ANEAxgDAAL4AtQDMAMsA0AC+ALcAxgCwAKwAxADAAKgAsQCdALMAswC7AMAAvQCxALAA0gDHAM0AwwCsALAAvwC0ALsAuQCZAKgAoAC1AL0AvQC2AK4AtwC4AM8AxwDBAM0AqwCtAL0AswCoALAAmACpAKwArQC/ALcArwCxAMYAwADMALsAsQC0ALcArgDAAL0AmACeAKEAuACzALUAswCtAKwArADQAMUAwgDBAKwAsQC2AKcArwC6AJUAnwCoAK0AvQCrALIAswC3ALQA0ADEAK4ArQCvALMAvAC2AKIApgCaAKUAtAC1ALkApgCsAK4AwwC8AMMAyACsALIAtACeALQAuACSAJ4AnACwALIArQCxALYArwCuANAAxACtAK8ArACvALYAtgCjALEAjwChAKsAvgC1AKEAqgCtAL0AtADMAMYApwCuAK8AoACxAKwAmwClAJMAoQC5ALIArgClAKsAqwDMALsAtQCvAKYAqACzALQAqACnAI0AnwCiALsAsACoAKMApgC3ALIAyADHAKYAtwClAJ4AsQCqAJoApgCOAJsArwCwAKwApQCkAKUAvwCyALkAuACcAJ4ArwCxAKIAqQCMAKAAlACkALYArQCcAJMAsQCwAMMArQCwAL4AnACXAK0AqQCZAKIAiQCeAKQApwCuALMAmACkALwAtAC9AK4AogCoAKkAqACrAKsAjQCZAI8ApgCwALAAogCWAKsAogDIAKwAuAC8AJ4AnACwAJ8AngCcAIkAlQCcAKAAtACrAKAAoQC4ALMAvACuAKMArACiAKYAsAC1AIwAmQCKAKoApgCmAJoAjACIAIIAsgClAKYApwCMAJYAjwCAAJQAmQBuAH0AfwCRAJQAkgCMAJMAmQCTALYApgCQAI8AiQCLAJQAjwA=\",\n\tobserver: null,\n\tchat_window_observer: null,\n\tlast_chat_title: \"\",\n\tread_message_count: -1,\n\tfirst_chat_open: true,\n\tnotification: window.Notification || window.mozNotification || window.webkitNotification,\n\tcan_use_notifications: false,\n\n\tpreferences: {\n\n\t\t\"sep0\": {\n\t\t\ttext: \"Messaging Popout & Button Tweaks\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"reveal_true_face\": {\n\t\t\ttext: \"Tumbley the Tumblr\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"hide_chat_bubble\": {\n\t\t\ttext: \"Hide the chat bubble completely\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"hide_send_post\": {\n\t\t\ttext: \"Hide the send post through IM in the post share menu\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"hide_online_indicators\": {\n\t\t\ttext: \"Hide online indicators from the messaging popout\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\n\t\t\"sep1\": {\n\t\t\ttext: \"Chatbox Tweaks\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"move_self_to_right\": {\n\t\t\ttext: \"Move your own messages to the right\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"move_other_to_right\": {\n\t\t\ttext: \"Move your chat partner's messages to the right\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"allow_minimising\": {\n\t\t\ttext: \"Allow minimising a chat by clicking on the title\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"minimise_hotkey\": {\n\t\t\ttext: \"Use Alt+[Down Arrow] to minimise and Alt+[Up Arrow] to bring the chatbox back\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"allow_emojis\": {\n\t\t\ttext: \"Enable Emojis in the chat\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"remove_message_headers\": {\n\t\t\ttext: \"Remove usernames from messages\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"make_icons_round\": {\n\t\t\ttext: \"Round user icons\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"rectangle_icons_on_hover\": {\n\t\t\ttext: \"Make icons rectangular on hover\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\n\t\t\"sep2\": {\n\t\t\ttext: \"Notification Tweaks\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"sound_notification\": {\n\t\t\ttext: \"Make a sound if you receive a new message\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"desktop_notification\": {\n\t\t\ttext: \"Show a desktop notification\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"tab_title_notification\": {\n\t\t\ttext: \"Show <[!!]> in Tab when you receive a new message.\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\n\t\t\"sep3\": {\n\t\t\ttext: \"CSS Tweaks\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"my_chat_bubble_background\": {\n\t\t\ttext: \"Background for my chat bubbles\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"rgba(0,0,0,.05)\"\n\t\t},\n\t\t\"other_chat_bubble_background\": {\n\t\t\ttext: \"Background for other people's chat bubbles\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"rgba(0,0,0,.1)\"\n\t\t},\n\t\t\"my_chat_bubble_text\": {\n\t\t\ttext: \"Text color for my chat bubbles\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"rgb(68,68,68)\"\n\t\t},\n\t\t\"other_chat_bubble_text\": {\n\t\t\ttext: \"Text color for other people's chat bubbles\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"rgb(68,68,68)\"\n\t\t},\n\t\t\"background_override\": {\n\t\t\ttext: \"Change chat background color\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t}\n\n\t},\n\n\tvisibilityHandler: function() {\n\t\tif (!document.hidden) {\n\t\t\tdocument.title = document.title.replace(\"<[!!]>\", \"\");\n\t\t}\n\t},\n\n\tget_current_chat_user: function() {\n\t\tif ($(\".title\").text().indexOf(\"+\") !== -1) {\n\t\t\treturn $($(\".title\").find(\"a\").get(0)).data(\"js-tumblelog-name\");\n\t\t} else {\n\t\t\treturn XKit.tools.get_current_blog();\n\t\t}\n\t},\n\n\tget_chat_partner_name: function() {\n\t\tif ($(\".title\").text().indexOf(\"+\") !== -1) {\n\t\t\treturn $($(\".title\").find(\"a\").get(1)).data(\"js-tumblelog-name\");\n\t\t} else {\n\t\t\treturn $($(\".title\").find(\"a\").get(0)).data(\"js-tumblelog-name\");\n\t\t}\n\t},\n\n\tdo_messages: function() {\n\t\tXKit.extensions.messaging_tweaks.observer.disconnect();\n\t\tvar icons = $(\".messaging-conversation-popovers .avatar:not(.xkit-my_messaging_icon, .xkit-others_messaging_icon)\");\n\n\t\tfunction img_onload(msg_div, emoji_text, emoji) {\n\t\t\tmsg_div.html(msg_div.html().replace(new RegExp(emoji_text, \"g\"), emoji.outerHTML));\n\t\t}\n\t\ticons.each(function() {\n\t\t\tif ($(this).parents(\".conversation-compose\").length !== 0) { return; }\n\t\t\tif ($(this).parent().find(\"[data-js-tumblelog-name]:not(.icon)\").attr(\"data-js-tumblelog-name\") === XKit.extensions.messaging_tweaks.get_current_chat_user()) {\n\t\t\t\t$(this).addClass(\"xkit-my_messaging_icon\");\n\t\t\t\t$(this).parents(\".conversation-message\").addClass(\"xkit-my_messaging_message\");\n\t\t\t} else {\n\t\t\t\t$(this).addClass(\"xkit-others_messaging_icon\");\n\t\t\t\t$(this).parents(\".conversation-message\").addClass(\"xkit-others_messaging_message\");\n\t\t\t}\n\t\t\tif (XKit.extensions.messaging_tweaks.preferences.allow_emojis.value) {\n\t\t\t\tvar msg_div = $(this).parents(\".conversation-message\").find(\".message-bubble .message\");\n\n\t\t\t\t// Use regex to find emoji patterns in the chat message\n\t\t\t\t// Find the string between the two \":\" to find which image to use\n\t\t\t\t// but only if there are emoji tags found\n\t\t\t\tvar emojis = msg_div.text().match(/:(.*?):/gi);\n\t\t\t\tif (emojis) {\n\t\t\t\t\tvar already_replaced = {};\n\t\t\t\t\tfor (var i = 0; i < emojis.length; i++) {\n\t\t\t\t\t\tif (already_replaced[emojis[i]]) { continue; }\n\t\t\t\t\t\talready_replaced[emojis[i]] = true;\n\t\t\t\t\t\tvar emoji_tag = emojis[i].toLowerCase().substring(1, emojis[i].length - 1);\n\t\t\t\t\t\tvar emoji_url = \"http://www.emoji-cheat-sheet.com/graphics/emojis/\" + emoji_tag + \".png\";\n\t\t\t\t\t\tif (emoji_tag === \"tobdog\") {\n\t\t\t\t\t\t\temoji_url = \"http://vignette1.wikia.nocookie.net/steamtradingcards/images/2/21/Tobdog.png/revision/latest?cb=20151011230955\";\n\t\t\t\t\t\t} else if (emoji_tag === \"+1\") {\n\t\t\t\t\t\t\temoji_url = \"http://www.emoji-cheat-sheet.com/graphics/emojis/plus1.png\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar emoji = new Image();\n\t\t\t\t\t\temoji.alt = \":\" + emoji_tag + \":\";\n\t\t\t\t\t\temoji.title = \":\" + emoji_tag + \":\";\n\t\t\t\t\t\temoji.height = \"22\";\n\t\t\t\t\t\temoji.onload = img_onload.bind(this, msg_div, emojis[i].replace(\"+\", \"\\\\+\"), emoji);\n\t\t\t\t\t\temoji.src = emoji_url;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif (XKit.extensions.messaging_tweaks.preferences.move_self_to_right.value) {\n\t\t\t$(\".xkit-my_messaging_icon\").each(function() {\n\t\t\t\t$(this).parent().append($(this));\n\t\t\t});\n\t\t}\n\t\tif (XKit.extensions.messaging_tweaks.preferences.move_other_to_right.value) {\n\t\t\t$(\".xkit-others_messaging_icon\").each(function() {\n\t\t\t\t$(this).parent().append($(this));\n\t\t\t});\n\t\t}\n\n\t\tif (XKit.extensions.messaging_tweaks.last_chat_title !== $(\".messaging-conversation-popovers .title\").text()) {\n\t\t\tXKit.extensions.messaging_tweaks.last_chat_title = $(\".messaging-conversation-popovers .title\").text();\n\t\t\tXKit.extensions.messaging_tweaks.first_chat_open = true;\n\t\t\tXKit.extensions.messaging_tweaks.read_message_count = 0;\n\t\t\tif (XKit.extensions.messaging_tweaks.preferences.allow_minimising.value) {\n\t\t\t\t$(\".conversation-header-main\").on(\"click.minimise_header\", function(e) {\n\t\t\t\t\tif ($('.minimize').length) {\n\t\t\t\t\t\t$('.minimize').get(0).click();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif ($(\".xkit-others_messaging_icon\").length > XKit.extensions.messaging_tweaks.read_message_count && $(\".messaging-conversation-popovers .avatar:not(.pinned-target)\").length > 1) {\n\t\t\tif (XKit.extensions.messaging_tweaks.first_chat_open) {\n\t\t\t\tXKit.extensions.messaging_tweaks.first_chat_open = false;\n\t\t\t\tXKit.extensions.messaging_tweaks.read_message_count = $(\".xkit-others_messaging_icon\").length;\n\t\t\t} else {\n\t\t\t\tvar new_message_count = ($(\".xkit-others_messaging_icon\").length - XKit.extensions.messaging_tweaks.read_message_count);\n\t\t\t\tif (XKit.extensions.messaging_tweaks.preferences.sound_notification.value) {\n\t\t\t\t\tnew Audio(XKit.extensions.messaging_tweaks.notification_sound).play();\n\t\t\t\t}\n\t\t\t\tif (document.hidden || $(\".conversation-header-main\").hasClass(\"minimised\")) {\n\t\t\t\t\tif (XKit.extensions.messaging_tweaks.preferences.tab_title_notification.value) {\n\t\t\t\t\t\tdocument.title = \"<[!!]> Tumblr\";\n\t\t\t\t\t}\n\t\t\t\t\tif (XKit.extensions.messaging_tweaks.preferences.desktop_notification.value) {\n\t\t\t\t\t\tif (XKit.extensions.messaging_tweaks.can_use_notifications) {\n\t\t\t\t\t\t\tfor (var i = 1; i <= new_message_count; i++) {\n\t\t\t\t\t\t\t\tnew XKit.extensions.messaging_tweaks.notification(XKit.extensions.messaging_tweaks.get_chat_partner_name(), {\n\t\t\t\t\t\t\t\t\tbody: $(\".xkit-others_messaging_message:eq(-\" + i + \") .message-bubble .message\").text(),\n\t\t\t\t\t\t\t\t\ticon: $(\".xkit-others_messaging_icon img\").attr(\"src\"),\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tXKit.extensions.messaging_tweaks.read_message_count = $(\".xkit-others_messaging_icon\").length;\n\t\t\t}\n\t\t}\n\n\t\tif ($(\".conversation-main\").get(0) !== null && typeof($(\".conversation-main\").get(0)) !== \"undefined\") {\n\t\t\tXKit.extensions.messaging_tweaks.observer.observe($(\".conversation-main\").get(0), { subtree: true, childList: true });\n\t\t}\n\t},\n\n\thook_chat_window: function() {\n\t\tXKit.extensions.messaging_tweaks.observer.observe($(\".conversation-main\").get(0), { subtree: true, childList: true });\n\t\tXKit.extensions.messaging_tweaks.read_message_count = $(\".xkit-others_messaging_icon\").length;\n\t},\n\n\trun: function() {\n\t\tif (!XKit.interface.is_tumblr_page()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (XKit.extensions.messaging_tweaks.preferences.minimise_hotkey.value) {\n\t\t\t$(document).on(\"keydown.minimise_header\", function(e) {\n\t\t\t\tif (!e.altKey) { return; }\n\t\t\t\tif (e.which === 40) {\n\t\t\t\t\tif ($('.minimize').length) {\n\t\t\t\t\t\t $('.minimize').get(0).click();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.which === 38) {\n\t\t\t\t\tif ($('.conversation-minimized').length) {\n\t\t\t\t\t\t$('.conversation-minimized').get(0).click();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (XKit.extensions.messaging_tweaks.preferences.desktop_notification.value) {\n\t\t\tXKit.extensions.messaging_tweaks.notification.requestPermission(function(result) {\n\t\t\t\tif (result === \"granted\") {\n\t\t\t\t\tXKit.extensions.messaging_tweaks.can_use_notifications = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif (XKit.extensions.messaging_tweaks.preferences.tab_title_notification.value) {\n\t\t\tdocument.addEventListener(\"visibilitychange\", XKit.extensions.messaging_tweaks.visibilityHandler);\n\t\t}\n\t\tXKit.extensions.messaging_tweaks.observer = new MutationObserver(XKit.extensions.messaging_tweaks.do_messages);\n\t\tXKit.extensions.messaging_tweaks.chat_window_observer = new MutationObserver(function(mutations, observer) {\n\t\t\tmutations.forEach(function(mutation) {\n\t\t\t\tvar i, node;\n\t\t\t\t// Check if Chat Window has been added\n\t\t\t\tif (mutation.addedNodes.length) {\n\t\t\t\t\tfor (i = 0; i < mutation.addedNodes.length; i++) {\n\t\t\t\t\t\tnode = $(mutation.addedNodes[i]);\n\t\t\t\t\t\tif (node.hasClass(\"messaging-conversation-popovers\")) {\n\t\t\t\t\t\t\tXKit.extensions.messaging_tweaks.hook_chat_window();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Check if chat window has been removed\n\t\t\t\t} else if (mutation.removedNodes.length) {\n\t\t\t\t\tfor (i = 0; i < mutation.removedNodes.length; i++) {\n\t\t\t\t\t\tnode = $(mutation.removedNodes[i]);\n\t\t\t\t\t\tif (node.hasClass(\"messaging-conversation-popovers\")) {\n\t\t\t\t\t\t\tXKit.extensions.messaging_tweaks.observer.disconnect();\n\t\t\t\t\t\t\tXKit.extensions.messaging_tweaks.last_chat_title = \"\";\n\t\t\t\t\t\t\tXKit.extensions.messaging_tweaks.first_chat_open = true;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tXKit.extensions.messaging_tweaks.chat_window_observer.observe(document.body, {\n\t\t\tchildList: true,\n\t\t\tsubtree: true,\n\t\t\tattributes: false,\n\t\t\tcharacterData: false\n\t\t});\n\t\tXKit.tools.init_css(\"messaging_tweaks\");\n\t\tif (XKit.extensions.messaging_tweaks.preferences.reveal_true_face.value) {\n\t\t\t$(\".tab.iconic.tab_messaging .tab_anchor\").addClass(\"true-icon\");\n\t\t}\n\t\tif (XKit.extensions.messaging_tweaks.preferences.hide_chat_bubble.value) {\n\t\t\t$(\".tab.iconic.tab_messaging\").hide();\n\t\t}\n\t\tif (XKit.extensions.messaging_tweaks.preferences.background_override.value !== \"\") {\n\t\t\tXKit.tools.add_css(\".conversation-main { background: \" + XKit.extensions.messaging_tweaks.preferences.background_override.value + \" !important; }\", \"messaging_tweaks\");\n\t\t}\n\t\tif (XKit.extensions.messaging_tweaks.preferences.move_self_to_right.value) {\n\t\t\tXKit.tools.add_css(\".xkit-my_messaging_icon { position: absolute; right: 0px; margin-right: 0px !important; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".xkit-my_messaging_message .message-bubble { margin-left: 0px !important; margin-right: 40px; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".xkit-my_messaging_message .message-container { justify-content: flex-end !important; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".xkit-my_messaging_message .conversation-message-post .message-bubble { margin-right: unset; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".xkit-my_messaging_message .conversation-message-post .avatar { position: relative; right: unset; margin-left: 10px; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".xkit-my_messaging_message .conversation-message-post .thumbnail { margin-left: unset; margin-right: 40px; }\", \"messaging_tweaks\");\n\t\t}\n\t\tif (XKit.extensions.messaging_tweaks.preferences.move_other_to_right.value) {\n\t\t\tXKit.tools.add_css(\".xkit-others_messaging_icon { position: absolute; right: 0px; margin-right: 0px !important; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".xkit-others_messaging_message .message-bubble { margin-left: 0px !important; margin-right: 40px; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".xkit-others_messaging_message .message-container { justify-content: flex-end !important; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".xkit-others_messaging_message .conversation-message-post .message-bubble { margin-right: unset; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".xkit-others_messaging_message .conversation-message-post .avatar { position: relative; right: unset; margin-left: 10px; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".xkit-others_messaging_message .conversation-message-post .thumbnail { margin-left: unset; margin-right: 40px; }\", \"messaging_tweaks\");\n\t\t}\n\t\tif (XKit.extensions.messaging_tweaks.preferences.remove_message_headers.value) {\n\t\t\tXKit.tools.add_css(\".conversation-message-text .message-bubble-header a {display:none;}\", \"messaging_tweaks\");\n\t\t}\n\t\tif (XKit.extensions.messaging_tweaks.preferences.hide_send_post.value) {\n\t\t\tXKit.tools.add_css(\".messaging-share-post-search, .messaging-share-post-main {display:none;}\", \"messaging_tweaks\");\n\t\t}\n\t\tif (XKit.extensions.messaging_tweaks.preferences.hide_online_indicators.value) {\n\t\t\tXKit.tools.add_css(\".status-indicator-wrapper, .chat-status-banner {display:none;}\", \"messaging_tweaks\");\n\t\t}\n\t\tif (XKit.extensions.messaging_tweaks.preferences.make_icons_round.value) {\n\t\t\tXKit.tools.add_css(\".avatar > img { border-radius: 30px !important; transition: border-radius 0.5s; }\", \"messaging_tweaks\");\n\t\t\tif (XKit.extensions.messaging_tweaks.preferences.rectangle_icons_on_hover.value) {\n\t\t\t\tXKit.tools.add_css(\".avatar > img:hover { border-radius: 2px !important; }\", \"messaging_tweaks\");\n\t\t\t}\n\t\t}\n\n\t\tif (XKit.extensions.messaging_tweaks.preferences.other_chat_bubble_background.value) {\n\t\t\tXKit.tools.add_css(\".messaging-conversation .xkit-others_messaging_message .conversation-message-text .message-bubble { background: \" + XKit.extensions.messaging_tweaks.preferences.other_chat_bubble_background.value + \" !important; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".messaging-conversation .xkit-others_messaging_message .conversation-message-post .message-bubble { background: \" + XKit.extensions.messaging_tweaks.preferences.other_chat_bubble_background.value + \" !important; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".messaging-conversation .xkit-others_messaging_message .conversation-message-post .icon { background: \" + XKit.extensions.messaging_tweaks.preferences.other_chat_bubble_background.value + \" !important; }\", \"messaging_tweaks\");\n\t\t}\n\t\tif (XKit.extensions.messaging_tweaks.preferences.my_chat_bubble_background.value) {\n\t\t\tXKit.tools.add_css(\".messaging-conversation .xkit-my_messaging_message .conversation-message-text .message-bubble { background: \" + XKit.extensions.messaging_tweaks.preferences.my_chat_bubble_background.value + \" !important; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".messaging-conversation .xkit-my_messaging_message .conversation-message-post .message-bubble { background: \" + XKit.extensions.messaging_tweaks.preferences.my_chat_bubble_background.value + \" !important; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".messaging-conversation .xkit-my_messaging_message .conversation-message-post .icon { background: \" + XKit.extensions.messaging_tweaks.preferences.my_chat_bubble_background.value + \" !important; }\", \"messaging_tweaks\");\n\t\t}\n\t\tif (XKit.extensions.messaging_tweaks.preferences.other_chat_bubble_text.value) {\n\t\t\tXKit.tools.add_css(\".messaging-conversation .xkit-others_messaging_message .conversation-message-text .message-bubble { color: \" + XKit.extensions.messaging_tweaks.preferences.other_chat_bubble_text.value + \" !important; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".messaging-conversation .xkit-others_messaging_message .conversation-message-text .message-bubble-header a { color: \" + XKit.extensions.messaging_tweaks.preferences.other_chat_bubble_text.value + \" !important; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".messaging-conversation .xkit-others_messaging_message .conversation-message-post .message-bubble { color: \" + XKit.extensions.messaging_tweaks.preferences.other_chat_bubble_text.value + \" !important; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".messaging-conversation .xkit-others_messaging_message .conversation-message-post .icon::before { color: \" + XKit.extensions.messaging_tweaks.preferences.other_chat_bubble_text.value + \" !important; }\", \"messaging_tweaks\");\n\t\t}\n\t\tif (XKit.extensions.messaging_tweaks.preferences.my_chat_bubble_text.value) {\n\t\t\tXKit.tools.add_css(\".messaging-conversation .xkit-my_messaging_message .conversation-message-text .message-bubble { color: \" + XKit.extensions.messaging_tweaks.preferences.my_chat_bubble_text.value + \" !important; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".messaging-conversation .xkit-my_messaging_message .conversation-message-text .message-bubble-header a { color: \" + XKit.extensions.messaging_tweaks.preferences.my_chat_bubble_text.value + \" !important; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".messaging-conversation .xkit-my_messaging_message .conversation-message-post .message-bubble { color: \" + XKit.extensions.messaging_tweaks.preferences.my_chat_bubble_text.value + \" !important; }\", \"messaging_tweaks\");\n\t\t\tXKit.tools.add_css(\".messaging-conversation .xkit-my_messaging_message .conversation-message-post .icon::before { color: \" + XKit.extensions.messaging_tweaks.preferences.my_chat_bubble_text.value + \" !important; }\", \"messaging_tweaks\");\n\t\t}\n\n\t\t// There's either 1 or no messaging-conversation-popovers on extension start\n\t\t$(\".messaging-conversation-popovers\").each(function() {\n\t\t\tXKit.extensions.messaging_tweaks.hook_chat_window();\n\t\t\tXKit.extensions.messaging_tweaks.do_messages();\n\t\t});\n\n\t\tthis.running = true;\n\t},\n\n\tdestroy: function() {\n\t\tif (XKit.extensions.messaging_tweaks.preferences.tab_title_notification.value) {\n\t\t\tdocument.removeEventListener(\"visibilitychange\", XKit.extensions.messaging_tweaks.visibilityHandler);\n\t\t\tdocument.title = document.title.replace(\"<[!!]>\", \"\");\n\t\t}\n\t\tXKit.extensions.messaging_tweaks.observer.disconnect();\n\t\tXKit.extensions.messaging_tweaks.chat_window_observer.disconnect();\n\t\tXKit.extensions.messaging_tweaks.last_chat_title = \"\";\n\t\tif (!XKit.extensions.messaging_tweaks.preferences.move_self_to_right.value) {\n\t\t\t$(\".xkit-my_messaging_icon\").each(function() {\n\t\t\t\t$(this).parent().prepend($(this));\n\t\t\t});\n\t\t}\n\t\tif (!XKit.extensions.messaging_tweaks.preferences.move_other_to_right.value) {\n\t\t\t$(\".xkit-others_messaging_icon\").each(function() {\n\t\t\t\t$(this).parent().prepend($(this));\n\t\t\t});\n\t\t}\n\t\t$(\".true-icon\").removeClass(\"true-icon\");\n\t\t$(\".tab.iconic.tab_messaging\").show();\n\t\t$(\".xkit-others_messaging_message, .xkit-my_messaging_message\").each(function() {\n\t\t\tvar msg_div = $(this).find(\".message-bubble .message\");\n\t\t\tmsg_div.find(\"img\").each(function() {\n\t\t\t\tvar img_html = $('
    ').append($(this).clone()).html();\n\t\t\t\tvar img_alt = $(this).attr(\"alt\");\n\t\t\t\tmsg_div.html(msg_div.html().replace(img_html, img_alt));\n\t\t\t});\n\t\t});\n\t\t$(\".xkit-others_messaging_message\").removeClass(\"xkit-others_messaging_message\");\n\t\t$(\".xkit-others_messaging_icon\").removeClass(\"xkit-others_messaging_icon\");\n\t\t$(\".xkit-my_messaging_message\").removeClass(\"xkit-my_messaging_message\");\n\t\t$(\".xkit-my_messaging_icon\").removeClass(\"xkit-my_messaging_icon\");\n\t\tXKit.tools.remove_css(\"messaging_tweaks\");\n\t\t$(\".conversation-header-main\").off(\"click.minimise_header\");\n\t\t$(document).off(\"keydown.minimise_header\");\n\t\tthis.running = false;\n\t},\n\n\tcpanel: function(cp) {\n\t\tfunction update() {\n\t\t\tif (round_icons_setting.hasClass(\"selected\")) {\n\t\t\t\trectangle_icons_setting.show();\n\t\t\t} else {\n\t\t\t\trectangle_icons_setting.hide();\n\t\t\t}\n\t\t}\n\t\tvar round_icons_setting = cp.find(\"[data-setting-id=make_icons_round]\");\n\t\tvar rectangle_icons_setting = cp.find(\"[data-setting-id=rectangle_icons_on_hover]\");\n\t\tupdate();\n\t\tround_icons_setting.click(update);\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","css":".tab.iconic.tab_messaging .true-icon {\n\tbackground: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAVCAYAAABCIB6VAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACxSURBVEhLrZNRDsMwCEN7/0tnwGLmAaHplidZsTD4L9cYo9Md1Y2pHIqekjrSQPQP3sOFKqaaRZZ3CMrwbbdeeODFFTznvXjD3olLDLJqp8uMGCwXN/i6jSUIWR3LfTcTDuF3pLD/mElc5FepPL+e8yLAAjLeqTx2OcsDgWfwnRT2RhoIPHvywhtpMMEcWfdCzPJLK5x1qmiLf8X6Thd738li7jpWzD2mNAi6o7oRjesFZ0tq6opXmBsAAAAASUVORK5CYII=') no-repeat !important;\n\tmargin-left: -6px;\n\tmargin-right: -15px;\n\twidth: 46px;\n\tbackground-size: 27px !important;\n\tbackground-attachment: fixed;\n\tbackground-position: center !important;\n}\n\n.tab_bar .tab_messaging .true-icon:before {\n\tcontent: \"\" !important;\n}\n","title":"Messaging Tweaks","description":"Helpful tweaks for Tumblr IM","developer":"New-XKit","version":"1.8.3","details":"This adds a few helpful tweaks to the Tumblr IM, for example minimising the chat, hiding the IM icon or changing the looks of the chat window.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/mirrorposts.json b/Extensions/dist/mirrorposts.json new file mode 100644 index 000000000..f2199abd4 --- /dev/null +++ b/Extensions/dist/mirrorposts.json @@ -0,0 +1 @@ +{"id":"mirrorposts","script":"//* TITLE Mirror Button **//\n//* VERSION 1.0.1 **//\n//* DESCRIPTION\tA button to easily backup posts **//\n//* DETAILS This extension provides a button that will create a mirror of a post on either archive.org or archive.is **//\n//* DEVELOPER Legoben **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.mirrorposts = new Object({\n\n\trunning: false,\n\n\tpreferences: {\n\t\t\"archiveis\": {\n\t\t\ttext: \"Use archive.is instead of The WayBack Machine\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"menu\": {\n\t\t\ttext: \"Create a mirror button below each post instead of having it in the share menu\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tXKit.tools.init_css(\"mirrorposts\");\n\t\tXKit.post_listener.add(\"archivebutton_addButton\", XKit.extensions.mirrorposts.addButton);\n\t\tXKit.extensions.mirrorposts.addButton();\n\n\t},\n\n\tdestroy: function() {\n\t\tXKit.post_listener.remove(\"archivebutton_addButton\");\n\t\tXKit.tools.remove_css(\"mirrorposts\");\n\t\t$(\".archivebutton-button\").remove();\n\t\t\n\t\t$(\".archivebutton_applied .share_social_button\").unbind();\n\t\t$(\".archivebutton_applied\").removeClass(\"archivebutton_applied\");\n\t\t\n\t\t\n\t\tthis.running = false;\n\n\t},\n\n\taddButton: function() {\n\t\t$(\".post\").not(\".archivebutton_applied\").each(function() {\n\t\t\t$(this).addClass(\"archivebutton_applied\");\n\n\n\t\t\tvar posturl = $(\".post_permalink\", this).attr(\"href\");\n\n\t\t\tvar archiveurl;\n\t\t\tif (XKit.extensions.mirrorposts.preferences.archiveis.value) {\n\t\t\t\tarchiveurl = \"https://archive.is/?run=1&url=\" + encodeURIComponent(posturl);\n\t\t\t} else {\n\t\t\t\tarchiveurl = \"https://web.archive.org/save/\" + posturl;\n\t\t\t}\n\n\n\t\t\tif (XKit.extensions.mirrorposts.preferences.menu.value) {\n\n\t\t\t\tvar button = $(\"
    \");\n\t\t\t\t$(button).addClass(\"post_control archivebutton-button\");\n\t\t\t\t$(button).attr(\"archiveurl\", archiveurl);\n\t\t\t\t$(button).attr(\"title\", \"Mirror Button\");\n\t\t\t\t$(button).click(function() {\n\t\t\t\t\twindow.open(archiveurl, '_blank');\n\t\t\t\t});\n\t\t\t\t$(\".post_controls_inner\", this).prepend(button);\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t$(\".share_social_button\", this).click(function() {\n\t\t\t\t\tvar menuitem = $('
  • Archive this post
  • ');\n\t\t\t\t\t$(\"a\", menuitem).attr(\"href\", archiveurl);\n\t\t\t\t\t$(\"a\", menuitem).attr(\"target\", \"_blank\");\n\n\t\t\t\t\tsetTimeout(function() { //Make sure the pop-up has popped up\n\t\t\t\t\t\t$(\".share_reddit\", \"#dashboard_index > div.popover--post-share-popover\").after(menuitem);\n\t\t\t\t\t}, 10);\n\t\t\t\t});\n\t\t\t}\n\n\t\t});\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABtlBMVEUWWYsWWYwXWYwXWY0XWo0YWo4YW44YW48YXI8YXJAZXJAZXJEZXZEZXZIZXpIaXpIaXpMaX5MaX5QbX5QbX5UbYJUbYZYbYpccYpgcY5gcY5kcY5odZJodZZsdZZweZp0eZp4eZ58fZ58faJ8faKAfaKEfaaEfaaIgaqMgaqQga6Qga6UgbKUhbachbagibqkib6kib6oicKwjca4jcq4kaZ0kaZ4kc7Akc7EkdLIkdbMldrUld7Uld7Yld7cleLcmebkmebome7sme7wne7wnfL0nfL4nfb4ofsAofsEof8IogMMpgMQpgcQpgcUpgsYwdKg3eatThaxTha1Thq1Th65Th69Uh7BUiLBUibBVibJVibNVirNWi7NWjLRWjLZXjbhXjrdXj7lYj7pYkLxYkbxZkr1Zkr9Zk79ZlMFalcJblcFblsRbmMZcmMhcmclcmslcm8tcnMxcnM1dnc5enMtzosV3psp3p8x5rNN5rNR6psh6q9GFq8eOss2QssyWt9Cfv9ihw96tx9uuyNy70eLE1+XK2+fU4u3f6vHj7fXj7vbk7PPq8fbs8vfv9Pjx9fn///9KfHrSAAAB5klEQVQ4EQXBTQqoYxgG4Ot5fTgSM5L8Fs6RQqeOY2APBnaADViMLEAWQMnESIyOsQUgvxEZ8X3vfbuueRsAAABwbFNjVKcDdNCBI6YTQydGwdRop46YTgHAFJjiyLRTrz4NwOfo6uzBca2wXn36vwc+nZrO68/sTmcPxZHgtWd/PZ8KENvUZAqraV5/7pev/9Om2a2d3Sa7O+lx4XlPvMM1SiLAFI5Sf/+OttPxqNsA3xrHht/umQJ3HvMCwL1Oj92p7Bod3njx3wc/Rrl785zOEaWh1N2bP//zUoBqdSXZkuzuvd+49dMX226ys6PZPbah0da87Ml3SUantdlHOyQF/vqx02qnapseF/RiuuL7b6x45/wMsaeO6Gim7NHM5ZXH3fpuWm1mnTun5trJPvW8cr7Jm+fecZ3J6r4q13WdZyK5zvdvZD/03rnr2td5pMbt24BWH/7jxt6PNFV6JGvfYzrqTlKf/PTB+dFTaVwrc1ziS4A7vcwP7j/yPZFwBAAk8GeCas1R1aWGSjudD4dOpea4pmNTg+wsZTpi49h1316ZkRVvvQUAV6dHsk6t6WxfTcZUVzvTa8zcmJaFrKyYrhgjqyNrHgzTMTEKWLFiZcUcyAKALACYhU6s6XSaBTJjarb/AQ4eh7vhlccfAAAAAElFTkSuQmCC","css":".archivebutton-button{\n\theight: 26px;\n\twidth: 26px;\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAA21BMVEUAAAChoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaFRSdv6AAAASHRSTlMAAQIDBAUHCAsNDg8QExQYGyIjJCUmKC4vMTQ2O0BERUdJVlliZ2lrbXx/hYyPlJ6ipairur7Dx87R2dzg4ujr7e/x8/X5+/21Zql0AAAAwklEQVQYGb3BeT8CQQDH4W/FOmLcWkdi3DkjZzmy6Pf+X5GZ3cZ8on95Hv5KZW3/eG+1xG87mbzuEj81FdQZ1lA0SzLJt3JP0U1LepxjYFm5fjrVUeE9obAt72MRJh5UqFM4kpPN44zfKbeFVzqV82rIjbXlTeOdycmqDJTbcu43gAV5b7vWJoC19la5AzhXYABFK3QUGEDRJS8KDKCoR0uBARQ9sa7gsFbbVHQC1xqpPwOVK43wmeKlF88a1m1W+VdfLdJV4tB4RlMAAAAASUVORK5CYII=);\n}","title":"Mirror Button","description":"A button to easily backup posts","developer":"Legoben","version":"1.0.1","details":"This extension provides a button that will create a mirror of a post on either archive.org or archive.is","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/mute.json b/Extensions/dist/mute.json new file mode 100644 index 000000000..3a831cd83 --- /dev/null +++ b/Extensions/dist/mute.json @@ -0,0 +1 @@ +{"id":"mute","script":"//* TITLE Mute! **//\n//* VERSION 2.4.0 **//\n//* DESCRIPTION Better than "shut up!" **//\n//* DETAILS This extension allows you to hide text and answer posts by an user while still seeing their other posts. Useful if a blogger has nice posts but a bad personality. Please note that you'll need to re-mute them if a user changes their URL. **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n//* SLOW true **//\n\nXKit.extensions.mute = new Object({\n\n\trunning: false,\n\tslow: true,\n\n\tpreferences: {\n\t\t\"title\": {\n\t\t\ttext: `Muted users 
    Add
    `,\n\t\t\ttype: \"separator\"\n\t\t}\n\t},\n\n\tmuted: [],\n\n\tframe_run: function() {\n\n\t\tif ($(\".btn.icon.unfollow\").length > 0) {\n\n\t\t\tXKit.extensions.mute.load_muted();\n\n\t\t\t$(\"#xkit-mute-button\").remove();\n\n\t\t\tif ($(\".btn.icon.unfollow\").hasClass(\"hidden\")) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$(\".btn.icon.dashboard, .btn.icon.unfollow, .btn.icon.reblog, .btn.icon.follow\").html(\"\");\n\t\t\t$(\".btn.icon.dashboard, .btn.icon.unfollow, .btn.icon.reblog, .btn.icon.follow\").addClass(\"no_label\");\n\n\t\t\tvar m_username = $(\".btn.unfollow\").attr('data-tumblelog-name');\n\n\t\t\tvar m_caption = \"Mute\";\n\n\t\t\tif (XKit.extensions.mute.return_user_object(m_username) !== -1) {\n\t\t\t\tm_caption = \"Unmute\";\n\t\t\t}\n\n\t\t\tvar m_html = \"\" + m_caption + \"\";\n\n\t\t\t$(\"#iframe_controls\").find(\".btn.icon.unfollow\").before(m_html);\n\n\t\t\t$(\"#xkit-mute-button\").click(function() {\n\n\t\t\t\tvar user_url = $(this).attr('data-username');\n\n\t\t\t\tif (XKit.extensions.mute.return_user_object(user_url) !== -1) {\n\n\t\t\t\t\tfor (var i = 0; i < XKit.extensions.mute.muted.length; i++) {\n\n\t\t\t\t\t\tif (XKit.extensions.mute.muted[i].username === user_url) {\n\t\t\t\t\t\t\t//console.log(\"User found, removing from list.\");\n\t\t\t\t\t\t\tXKit.extensions.mute.muted.splice(i, 1);\n\t\t\t\t\t\t\tXKit.extensions.mute.save();\n\t\t\t\t\t\t\t//XKit.extensions.mute.do_posts(true);\n\t\t\t\t\t\t\tXKit.extensions.mute.frame_run();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//console.log(\"User could not be found on the list!..\");\n\n\t\t\t\t} else {\n\n\t\t\t\t\t//console.log(\"Adding user to mute list.\");\n\n\t\t\t\t\tif (XKit.extensions.mute.muted.length >= 101) {\n\t\t\t\t\t\tXKit.window.show(\"Can't mute!\",\n\t\t\t\t\t\t\t\"You have over a hundred muted blogs. Please remove some before muting people.\",\n\t\t\t\t\t\t\t\"error\",\n\t\t\t\t\t\t\t'
    OK
    '\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar m_obj = {};\n\t\t\t\t\tm_obj.username = user_url;\n\t\t\t\t\tm_obj.regular = true;\n\t\t\t\t\tm_obj.photo = false;\n\t\t\t\t\tm_obj.quote = true;\n\t\t\t\t\tm_obj.link = true;\n\t\t\t\t\tm_obj.chat = true;\n\t\t\t\t\tm_obj.video = false;\n\t\t\t\t\tm_obj.audio = false;\n\n\t\t\t\t\tXKit.extensions.mute.muted.push(m_obj);\n\t\t\t\t\tXKit.extensions.mute.save();\n\t\t\t\t\t//XKit.extensions.mute.do_posts(true);\n\n\t\t\t\t}\n\n\t\t\t\tXKit.extensions.mute.frame_run();\n\n\t\t\t});\n\n\n\n\t\t}\n\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tXKit.tools.init_css(\"mute\");\n\n\t\tXKit.extensions.mute.load_muted();\n\n\t\tXKit.post_listener.add(\"mute\", XKit.extensions.mute.do_posts);\n\t\tXKit.extensions.mute.do_posts();\n\n\t\tXKit.installed.when_running('show_more', function(show_more) {\n\t\t\tif (show_more.preferences.use_classic_menu.value) {\n\t\t\t\tshow_more.add_custom_menu(\"mute\", function(data) {\n\t\t\t\t\tvar user_url = data.name;\n\t\t\t\t\tvar m_class = \"\";\n\t\t\t\t\tvar m_sentence = \"Mute\";\n\t\t\t\t\tif (XKit.extensions.mute.return_user_object(user_url) !== -1) {\n\t\t\t\t\t\tm_sentence = \"Unmute\";\n\t\t\t\t\t\tm_class = \"already_muted\";\n\t\t\t\t\t}\n\n\t\t\t\t\t$(document).off(\"click\", \".xkit-mute-button-\" + user_url, XKit.extensions.mute.menu_clicked);\n\t\t\t\t\t$(document).on(\"click\", \".xkit-mute-button-\" + user_url, XKit.extensions.mute.menu_clicked);\n\t\t\t\t\treturn \"
    \" + m_sentence + \"
    \";\n\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tshow_more.add_custom_menu(\"mute\", function(data) {\n\t\t\t\t\tvar user_url = data.name;\n\t\t\t\t\tvar m_class = \"\";\n\t\t\t\t\tvar m_sentence = \"Mute\";\n\t\t\t\t\tif (XKit.extensions.mute.return_user_object(user_url) !== -1) {\n\t\t\t\t\t\tm_sentence = \"Unmute\";\n\t\t\t\t\t\tm_class = \"already_muted\";\n\t\t\t\t\t}\n\n\t\t\t\t\t$(document).off(\"click\", \".xkit-mute-button-\" + user_url, XKit.extensions.mute.menu_clicked_new);\n\t\t\t\t\t$(document).on(\"click\", \".xkit-mute-button-\" + user_url, XKit.extensions.mute.menu_clicked_new);\n\n\t\t\t\t\treturn \"
  • \" +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\t\"\" + m_sentence + \"\" +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\"
  • \";\n\t\t\t\t});\n\t\t\t}\n\t\t}, function() {\n\t\t\t$(document).on('click mouseover', '.tumblelog_popover .info_popover_button', XKit.extensions.mute.add_links_wo_usermenus);\n\t\t});\n\t},\n\n\tadd_links_wo_usermenus: function(e) {\n\n\t\t//console.log($(\".tumblelog_popover_v1\").html());\n\t\tvar m_parent = \"\";\n\t\tvar user_url = \"\";\n\t\tif ($(\".tumblelog_popover_v1\").length > 0) {\n\t\t//\tuser_url = $(\".tumblelog_popover_v1\").find(\".follow_nav\").find(\".follow\").attr('href').replace(\"/follow/\",\"\");\n\t\t//\tm_parent = $(\".tumblelog_popover_v1\").find(\".tumblelog_menu_popover\").find(\"ul\");\n\t\t} else {\n\t\t//\tuser_url = $(\".tumblelog_popover\").find(\".follow_nav\").find(\".follow\").attr('href').replace(\"/follow/\",\"\");\n\t\t//\tm_parent = $(\".tumblelog_popover\").find(\".tumblelog_menu_popover\").find(\"ul\");\n\t\t}\n\n\t\tif ($(\".info_popover\").length > 0) {\n\t\t\tm_parent = $(\".info_popover\").find(\"ul\");\n\t\t\tuser_url = m_parent.parent().parent().parent().find(\".name\").html();\n\t\t}\n\t\tif (m_parent.find(\".xkit-mute\").length > 0) { return; }\n\n\t\tvar m_html = \"\";\n\t\tconsole.log(\"===>\" + user_url);\n\n\t\tvar m_class = \"\";\n\t\tvar m_sentence = \"Mute\";\n\t\tif (XKit.extensions.mute.return_user_object(user_url) !== -1) {\n\t\t\tm_sentence = \"Unmute\";\n\t\t\tm_class = \"already_muted\";\n\t\t}\n\n\t\t$(document).off(\"click\", \".xkit-mute-button-\" + user_url, XKit.extensions.mute.menu_clicked_new);\n\t\t$(document).on(\"click\", \".xkit-mute-button-\" + user_url, XKit.extensions.mute.menu_clicked_new);\n\n\t\tm_html = \"
  • \" +\n\t\t\t\t\"\" +\n\t\t\t\t\t\"\" + m_sentence + \"\" +\n\t\t\t\t\"\" +\n\t\t\t\"
  • \";\n\n\t\t$(m_parent).append(m_html);\n\n\t},\n\n\tmenu_clicked_new: function(e) {\n\n\t\tvar m_object = $(e.target);\n\n\t\tif (!m_object.hasClass(\"xkit-mute\")) {\n\n\t\t\twhile (!m_object.hasClass(\"xkit-mute\")) {\n\t\t\t\tm_object = m_object.parent();\n\t\t\t}\n\n\t\t}\n\n\t\tvar user_url = $(m_object).attr('data-url');\n\t\t//XKit.extensions.mute.toggle_mute(user_url);\n\t\t$(\".tumblelog_popover_glass\").trigger('click');\n\t\tsetTimeout(function() { $(\".tumblelog_popover_glass\").trigger('click'); }, 10);\n\t\t$(\".popover\").hide();\n\n\t\t/*var m_sentence = \"muted.\";\n\t\tif (XKit.extensions.mute.return_user_object(user_url) === -1) {\n\t\t\tm_sentence = \"unmuted.\";\n\t\t}\n\t\tXKit.notifications.add(\"User \" + user_url + \" is now \" + m_sentence,\"ok\");\t*/\n\n\t\tif (XKit.extensions.mute.return_user_object(user_url) === -1) {\n\t\t\tXKit.extensions.mute.show_window(user_url, true);\n\t\t} else {\n\t\t\tXKit.extensions.mute.toggle_mute(user_url);\n\t\t\tXKit.notifications.add(\"User \" + user_url + \" is removed from mute list.\", \"ok\");\n\t\t}\n\n\t},\n\n\tmenu_clicked: function(e) {\n\n\t\tvar m_object = $(e.target);\n\n\t\tif (!m_object.hasClass(\"xkit-mute\")) {\n\n\t\t\twhile (!m_object.hasClass(\"xkit-mute\")) {\n\t\t\t\tm_object = m_object.parent();\n\t\t\t}\n\n\t\t}\n\n\t\tvar user_url = $(m_object).attr('data-url');\n\t\t//XKit.extensions.mute.toggle_mute(user_url);\n\t\tXKit.extensions.show_more.hide_classic_menu();\n\n\t\t/*var m_sentence = \"muted.\";\n\t\tif (XKit.extensions.mute.return_user_object(user_url) === -1) {\n\t\t\tm_sentence = \"unmuted.\";\n\t\t}\n\t\tXKit.notifications.add(\"User \" + user_url + \" is now \" + m_sentence,\"ok\");*/\n\n\t\tif (XKit.extensions.mute.return_user_object(user_url) === -1) {\n\t\t\tXKit.extensions.mute.show_window(user_url, true);\n\t\t} else {\n\t\t\tXKit.extensions.mute.toggle_mute(user_url);\n\t\t\tXKit.notifications.add(\"User \" + user_url + \" is removed from mute list.\", \"ok\");\n\t\t}\n\n\t},\n\n\tload_muted: function() {\n\n\t\tvar m_list = XKit.storage.get(\"mute\", \"muted_list\", \"\");\n\t\tif (m_list === \"\") {\n\t\t\tXKit.extensions.mute.muted = [];\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tvar m_parsed = JSON.parse(m_list);\n\t\t\t\tvar m_convert = false;\n\n\t\t\t\tif (typeof m_parsed.list === \"undefined\" || typeof m_parsed.version === \"undefined\") {\n\t\t\t\t\t//console.log(\"list or version undefined, converting mute list.\");\n\t\t\t\t\tm_convert = true;\n\t\t\t\t} else {\n\t\t\t\t\tif (m_parsed.version !== \"2\") {\n\t\t\t\t\t\t//console.log(\"version !== 2, converting mute list.\");\n\t\t\t\t\t\tm_convert = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//console.log(\"::::::::MUTE LIST::::::::\\n\" + JSON.stringify(m_parsed));\n\n\t\t\t\tif (m_convert) {\n\t\t\t\t\tvar new_array = [];\n\t\t\t\t\tfor (var i = 0; i < m_parsed.length; i++) {\n\t\t\t\t\t\tvar m_obj = {};\n\t\t\t\t\t\tm_obj.username = m_parsed[i];\n\t\t\t\t\t\tm_obj.regular = true;\n\t\t\t\t\t\tm_obj.photo = false;\n\t\t\t\t\t\tm_obj.quote = true;\n\t\t\t\t\t\tm_obj.link = true;\n\t\t\t\t\t\tm_obj.chat = true;\n\t\t\t\t\t\tm_obj.video = false;\n\t\t\t\t\t\tm_obj.audio = false;\n\t\t\t\t\t\tnew_array.push(m_obj);\n\t\t\t\t\t}\n\t\t\t\t\tXKit.extensions.mute.muted = new_array;\n\t\t\t\t\tXKit.notifications.add(\"Mute has migrated your old muted users list to the new version.\", \"ok\");\n\t\t\t\t\tXKit.extensions.mute.save();\n\t\t\t\t} else {\n\t\t\t\t\tXKit.extensions.mute.muted = m_parsed.list;\n\t\t\t\t}\n\n\t\t\t} catch (e) {\n\t\t\t\tXKit.extensions.mute.muted = [];\n\t\t\t\tXKit.extensions.mute.save();\n\t\t\t}\n\t\t}\n\n\t},\n\n\tshould_be_removed: function(type, username, reblogged_post, original_post) {\n\n\t\t// console.log(\" checking, type = \" + type + \" || username = \" + username);\n\n\t\tif (XKit.interface.where().inbox === true) { return false; }\n\n\t\tfor (var i = 0; i < XKit.extensions.mute.muted.length; i++) {\n\n\t\t\tif (typeof XKit.extensions.mute.muted[i].username === \"undefined\") {continue; }\n\n\t\t\tif (XKit.extensions.mute.muted[i].username !== username) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (type === \"note\" && XKit.extensions.mute.muted[i].asks === true) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (type === \"photoset\" && XKit.extensions.mute.muted[i].photo === true) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (type === \"conversation\" && XKit.extensions.mute.muted[i].chat === true) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (typeof XKit.extensions.mute.muted[i].reblogs !== \"undefined\") {\n\t\t\t\tif (XKit.extensions.mute.muted[i].reblogs === true && reblogged_post === true) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof XKit.extensions.mute.muted[i].originals !== \"undefined\") {\n\t\t\t\tif (XKit.extensions.mute.muted[i].originals === true && original_post === true) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (XKit.extensions.mute.muted[i][type] === true) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tdo_posts: function(rethink) {\n\n\t\t$('.tumblelog_menu_button').unbind('click', XKit.extensions.mute.add_mute_link);\n\t\t$('.tumblelog_menu_button').bind('click', XKit.extensions.mute.add_mute_link);\n\n\t\tvar update_rects = false;\n\n\t\tif (rethink === true) {\n\n\t\t\t$(\".xmute-muted\").each(function() {\n\t\t\t\t$(this).attr('class', $(this).attr(\"data-xkit-mute-old-classes\"));\n\t\t\t});\n\n\t\t\t$(\".xmute-done, .xmute-muted\").removeClass(\"xmute-muted\").removeClass(\"xmute-done\");\n\n\t\t}\n\n\t\tvar posts = XKit.interface.get_posts(\"xmute-done\");\n\n\t\t$(posts).each(function() {\n\n\t\t\t$(this).addClass(\"xmute-done\");\n\n\t\t\tvar m_post = XKit.interface.post($(this));\n\t\t\tif (m_post.is_mine === true) { return; }\n\n\t\t\tif ($(this).hasClass(\"xkit_view_on_dash_post\")) { return; }\n\n\t\t\tif (XKit.extensions.mute.should_be_removed(m_post.type, m_post.owner, m_post.is_reblogged, !m_post.is_reblogged) === true) {\n\t\t\t\tupdate_rects = true;\n\t\t\t\t$(this).attr(\"data-xkit-mute-old-classes\", $(this).attr(\"class\"));\n\t\t\t\t$(this).attr(\"class\", \"xmute-muted xmute-done\");\n\t\t\t} else {\n\t\t\t\tif (rethink === true) {\n\t\t\t\t\t$(this).attr('class', $(this).attr(\"data-xkit-mute-old-classes\"));\n\t\t\t\t\t$(this).removeClass(\"xmute-muted\");\n\t\t\t\t\tupdate_rects = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t});\n\n\t\tif (update_rects === true) {\n\t\t\tXKit.tools.add_function(function() {\n\t\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t\t}, true, \"\");\n\t\t}\n\n\t},\n\n\tadd_mute_link: function(e) {\n\n\t\tvar menu_box = $(e.target).parent().find(\".tumblelog_menu_popover\");\n\t\tvar user_url = $(menu_box).parent().find(\".tumblelog_menu_link\").attr('data-tumblelog-name');\n\t\tvar m_class = \"\";\n\n\t\tvar m_sentence = \"Mute\";\n\t\tif (XKit.extensions.mute.return_user_object(user_url) !== -1) {\n\t\t\tm_sentence = \"Unmute\";\n\t\t\tm_class = \"already_muted\";\n\t\t}\n\n\t\tif ($(menu_box).find(\".xkit-mute-button\").length > 0) {\n\t\t\t// Remove first.\n\t\t\t$(menu_box).find(\".xkit-mute-button\").parent().remove();\n\t\t}\n\n\t\t/*\n\n\t\tThe new menu structure:\n\n\t\t\n\n\t\t*/\n\n\n\t\tvar m_html = \"\";\n\n\t\t$(menu_box).find(\".open_in_tab\").parent().before(m_html);\n\n\t\tvar m_target = e.target;\n\n\t\t$(\".xkit-mute-button-\" + user_url).unbind('click');\n\t\t$(\".xkit-mute-button-\" + user_url).bind('click', function() {\n\n\t\t\tXKit.extensions.mute.toggle_mute(user_url);\n\t\t\tsetTimeout(function() { $(\"#glass_overlay\").trigger('click'); }, 10);\n\t\t\t$(\"#glass_overlay\").removeClass(\"show\");\n\t\t\t$(m_target).trigger('click');\n\n\t\t});\n\n\t},\n\n\ttoggle_mute: function(user_url) {\n\n\t\tif (XKit.extensions.mute.return_user_object(user_url) !== -1) {\n\n\t\t\tfor (var i = 0; i < XKit.extensions.mute.muted.length; i++) {\n\n\t\t\t\tif (XKit.extensions.mute.muted[i].username === user_url) {\n\t\t\t\t\tconsole.log(\"User found, removing from list.\");\n\t\t\t\t\tXKit.extensions.mute.muted.splice(i, 1);\n\t\t\t\t\tXKit.extensions.mute.save();\n\t\t\t\t\tXKit.extensions.mute.do_posts(true);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.log(\"User could not be found on the list!..\");\n\n\t\t} else {\n\n\t\t\tconsole.log(\"Adding user to mute list.\");\n\n\t\t\tif (XKit.extensions.mute.muted.length >= 101) {\n\t\t\t\tXKit.window.show(\"Can't mute.\", \"You have over a hundred muted blogs.
    Please remove some before muting people.\", \"error\", \"
    OK
    \");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar m_obj = {};\n\t\t\tm_obj.username = user_url;\n\t\t\tm_obj.regular = true;\n\t\t\tm_obj.photo = false;\n\t\t\tm_obj.quote = true;\n\t\t\tm_obj.link = true;\n\t\t\tm_obj.chat = true;\n\t\t\tm_obj.video = false;\n\t\t\tm_obj.audio = false;\n\n\t\t\tXKit.extensions.mute.muted.push(m_obj);\n\t\t\tXKit.extensions.mute.save();\n\t\t\tXKit.extensions.mute.do_posts(true);\n\n\t\t}\n\n\t},\n\n\tsave: function() {\n\n\t\tvar m_object = {};\n\t\tm_object.version = \"2\";\n\t\tm_object.list = XKit.extensions.mute.muted;\n\t\tXKit.storage.set(\"mute\", \"muted_list\", JSON.stringify(m_object));\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.tools.remove_css(\"mute\");\n\t\t$('.user_menu_info_button').unbind('click', XKit.extensions.mute.add_mute_link);\n\t\t$(\".xkit-mute-button\").remove();\n\t\t$(\".xmute-muted\").each(function() {\n\t\t\t$(this).attr('class', $(this).attr(\"data-xkit-mute-old-classes\"));\n\t\t});\n\n\t\tXKit.tools.add_function(function() {\n\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t}, true, \"\");\n\n\t\t$(document).off('click', '.tumblelog_menu_btn', XKit.extensions.mute.add_links_wo_usermenus);\n\n\t\ttry {\n\t\t\tXKit.extensions.show_more.remove_custom_menu(\"mute\");\n\t\t} catch (e) {\n\t\t\tconsole.error(\"Can't remove custom menu, \" + e.message);\n\t\t}\n\n\t},\n\n\tcreate_div: function(ud) {\n\n\t\tif (typeof ud.username === \"undefined\") {return \"\"; }\n\t\treturn \"
    \" + ud.username + \"
    \";\n\n\t},\n\n\treturn_user_object: function(ud) {\n\n\t\tfor (var i = 0; i < XKit.extensions.mute.muted.length; i++) {\n\t\t\tif (XKit.extensions.mute.muted[i].username === ud) {\n\t\t\t\treturn XKit.extensions.mute.muted[i];\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\n\t},\n\n\tshow_window: function(ud, from_user_menu) {\n\n\t\tvar m_regular_class = \"\";\n\t\tvar m_photo_class = \"\";\n\t\tvar m_quote_class = \"\";\n\t\tvar m_link_class = \"\";\n\t\tvar m_chat_class = \"\";\n\t\tvar m_audio_class = \"\";\n\t\tvar m_video_class = \"\";\n\t\tvar m_asks_class = \"\";\n\t\tvar m_reblogs_class = \"\";\n\t\tvar m_originals_class = \"\";\n\n\t\tvar user_object = XKit.extensions.mute.return_user_object(ud);\n\n\t\tif (user_object !== -1) {\n\t\t\tif (user_object.regular === true) { m_regular_class = \"selected\"; }\n\t\t\tif (user_object.photo === true) { m_photo_class = \"selected\"; }\n\t\t\tif (user_object.quote === true) { m_quote_class = \"selected\"; }\n\t\t\tif (user_object.link === true) { m_link_class = \"selected\"; }\n\t\t\tif (user_object.chat === true) { m_chat_class = \"selected\"; }\n\t\t\tif (user_object.audio === true) { m_audio_class = \"selected\"; }\n\t\t\tif (user_object.video === true) { m_video_class = \"selected\"; }\n\t\t\tif (user_object.asks === true) { m_asks_class = \"selected\"; }\n\t\t\tif (typeof user_object.reblogs !== \"undefined\") {\n\t\t\t\tif (user_object.reblogs === true) { m_reblogs_class = \"selected\"; }\n\t\t\t}\n\t\t\tif (typeof user_object.originals !== \"undefined\") {\n\t\t\t\tif (user_object.originals === true) { m_originals_class = \"selected\"; }\n\t\t\t}\n\t\t}\n\n\n\t\tvar m_html =\t\"
    \" +\n\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\"
    \";\n\n\t\tXKit.window.show(\"Muting options for \" + ud,\n\t\t\t\"Hide the following types of posts:\" +\n\t\t\tm_html +\n\t\t\t\"
     Hide original posts by this user (applies to all post types)

    \" +\n\t\t\t\"
     Hide posts this user reblogs (applies to all post types)
    \" +\n\t\t\t\"Posts with the selected type will not be shown on your dashboard, without any indication that they are hidden.\",\n\n\t\t\t\"question\",\n\n\t\t\t'
    Save
    ' +\n\t\t\t'
    Cancel
    ');\n\n\t\tfunction updateSaveButton() {\n\t\t\tif ( $(\".xkit-mute-option.selected\").length <= 0 && !$(\"#xkit-mute-hide-originals-checkbox\").hasClass(\"selected\") && !$(\"#xkit-mute-hide-reblogs-checkbox\").hasClass(\"selected\")) {\n\t\t\t\t$(\"#xkit-mute-save-changes\").addClass(\"disabled\");\n\t\t\t} else {\n\t\t\t\t$(\"#xkit-mute-save-changes\").removeClass(\"disabled\");\n\t\t\t}\n\t\t}\n\n\t\t$(\"#xkit-mute-hide-reblogs-checkbox\").click(function() {\n\n\t\t\t$(this).toggleClass(\"selected\");\n\n\t\t\tif ($(\"#xkit-mute-hide-originals-checkbox\").hasClass(\"selected\") && $(this).hasClass(\"selected\")) {\n\t\t\t\t$(\"#xkit-mute-hide-originals-checkbox\").removeClass(\"selected\");\n\t\t\t}\n\n\t\t\tupdateSaveButton();\n\n\t\t});\n\n\t\t$(\"#xkit-mute-hide-originals-checkbox\").click(function() {\n\n\t\t\t$(this).toggleClass(\"selected\");\n\n\t\t\tif ($(\"#xkit-mute-hide-reblogs-checkbox\").hasClass(\"selected\") && $(this).hasClass(\"selected\")) {\n\t\t\t\t$(\"#xkit-mute-hide-reblogs-checkbox\").removeClass(\"selected\");\n\t\t\t}\n\n\t\t\tupdateSaveButton();\n\n\t\t});\n\n\n\n\t\t$(\".xkit-mute-option\").click(function() {\n\n\t\t\t$(this).toggleClass(\"selected\");\n\t\t\tupdateSaveButton();\n\n\t\t});\n\n\t\t$(\"#xkit-mute-save-changes\").click(function() {\n\t\t\tif ($(\"#xkit-mute-save-changes\").hasClass(\"disabled\")) { return; }\n\n\t\t\tvar m_object = {};\n\t\t\tm_object.username = ud;\n\t\t\tm_object.regular = $(\".xkit-mute-option.regular\").hasClass(\"selected\");\n\t\t\tm_object.photo = $(\".xkit-mute-option.photo\").hasClass(\"selected\");\n\t\t\tm_object.quote = $(\".xkit-mute-option.quote\").hasClass(\"selected\");\n\t\t\tm_object.link = $(\".xkit-mute-option.link\").hasClass(\"selected\");\n\t\t\tm_object.chat = $(\".xkit-mute-option.chat\").hasClass(\"selected\");\n\t\t\tm_object.audio = $(\".xkit-mute-option.audio\").hasClass(\"selected\");\n\t\t\tm_object.video = $(\".xkit-mute-option.video\").hasClass(\"selected\");\n\t\t\tm_object.asks = $(\".xkit-mute-option.asks\").hasClass(\"selected\");\n\n\t\t\tm_object.reblogs = $(\"#xkit-mute-hide-reblogs-checkbox\").hasClass(\"selected\");\n\t\t\tm_object.originals = $(\"#xkit-mute-hide-originals-checkbox\").hasClass(\"selected\");\n\n\t\t\tvar found_user = false;\n\n\t\t\tfor (var i = 0; i < XKit.extensions.mute.muted.length; i++) {\n\t\t\t\tif (XKit.extensions.mute.muted[i].username === ud) {\n\t\t\t\t\tfound_user = true;\n\t\t\t\t\tXKit.extensions.mute.muted[i] = m_object;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!found_user) {\n\t\t\t\tif (from_user_menu) {\n\t\t\t\t\tXKit.notifications.add(\"User \" + ud + \" is added to mute list.\", \"ok\");\n\t\t\t\t}\n\t\t\t\tXKit.extensions.mute.muted.push(m_object);\n\t\t\t}\n\n\t\t\tXKit.extensions.mute.save();\n\t\t\tXKit.extensions.mute.cpanel(XKit.extensions.mute.control_panel_div);\n\t\t\tXKit.extensions.mute.do_posts(true);\n\n\t\t\tXKit.window.close();\n\n\t\t});\n\n\t},\n\n\tcontrol_panel_div: \"\",\n\n\tcpanel: function(mdiv) {\n\t\t$(\"#xkit-mute-user\").unbind(\"click\");\n\t\t$(\"#xkit-mute-user\").click(() => {\n\t\t\tXKit.window.show(\"Mute user\",\n\t\t\t\t\"Enter a username to show muting options.\" +\n\t\t\t\t``,\n\t\t\t\t\"question\",\n\t\t\t\t`
    Mute →
    ` +\n\t\t\t\t`
    Cancel
    `);\n\n\t\t\tfunction complain(reason) {\n\t\t\t\t$(\"#xkit-muting-user\")\n\t\t\t\t.val(\"\")\n\t\t\t\t.attr(\"placeholder\", reason)\n\t\t\t\t.css(\"border-color\", \"red\")\n\t\t\t\t.click(function() {\n\t\t\t\t\t$(this)\n\t\t\t\t\t.unbind(\"click\")\n\t\t\t\t\t.removeAttr(\"style\")\n\t\t\t\t\t.attr(\"placeholder\", \"e.g. new-xkit-discussion\");\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t$(\"#xkit-mute-continue\").click(() => {\n\t\t\t\tconst username = $(\"#xkit-muting-user\").val().trim().toLowerCase();\n\n\t\t\t\tif (username.length == 0) {\n\t\t\t\t\tcomplain(\"This can't be blank!\");\n\t\t\t\t} else if (!/^[A-Za-z0-9-]+$/.test(username)) {\n\t\t\t\t\tcomplain(\"Usernames are only comprised of letters, numbers and dashes.\");\n\t\t\t\t} else {\n\t\t\t\t\tXKit.extensions.mute.show_window(username);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tif ($(\"#xkit-control-panel-mute\").length > 0) {\n\t\t\t$(\"#xkit-control-panel-mute\").remove();\n\t\t}\n\n\t\tXKit.extensions.mute.control_panel_div = mdiv;\n\n\t\tvar found_count = 0;\n\t\tfor (var j = 0; j < XKit.extensions.mute.muted.length; j++) {\n\t\t\t//console.log(XKit.extensions.mute.muted[i].username);\n\t\t\tif (typeof XKit.extensions.mute.muted[j].username !== \"undefined\") {\n\t\t\t\tif (XKit.extensions.mute.muted[j].username !== \"\") {\n\t\t\t\t\tfound_count++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (found_count <= 0) {\n\t\t\t$(mdiv).append(`
    You have no muted users.
    `);\n\t\t\treturn;\n\t\t}\n\n\t\tvar m_html = \"\";\n\t\tXKit.extensions.mute.muted.forEach(function(muted) {\n\t\t\tm_html = m_html + XKit.extensions.mute.create_div(muted);\n\t\t});\n\n\t\t$(mdiv).append(\"
    \" + m_html + \"
    \");\n\n\t\tif (XKit.extensions.mute.muted.length >= 4) {\n\t\t\t$(\".xkit-muted-user:last-child\").css(\"border-bottom\", \"0\");\n\t\t}\n\n\t\t$(\".xkit-unmute-user-button\").unbind(\"click\");\n\t\t$(\".xkit-unmute-user-button\").bind(\"click\", function() {\n\n\t\t\tvar m_username = $(this).attr('data-user-name');\n\n\t\t\tfor (var i = 0; i < XKit.extensions.mute.muted.length; i++) {\n\t\t\t\tif (XKit.extensions.mute.muted[i].username === m_username) {\n\t\t\t\t\tXKit.extensions.mute.muted.splice(i, 1);\n\t\t\t\t\tXKit.extensions.mute.save();\n\t\t\t\t\tXKit.extensions.mute.do_posts(true);\n\t\t\t\t\tXKit.extensions.mute.cpanel(mdiv);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t});\n\n\t\t$(\".xkit-muted-user\").unbind(\"click\");\n\t\t$(\".xkit-muted-user\").bind(\"click\", function() {\n\n\t\t\tvar m_username = $(this).attr('data-user-name');\n\t\t\tXKit.extensions.mute.show_window(m_username);\n\n\t\t});\n\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTUzRDRDRjhCQ0Q4MTFFMjlEODhCN0Q1MDg3NTkwRDkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTUzRDRDRjlCQ0Q4MTFFMjlEODhCN0Q1MDg3NTkwRDkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxNTNENENGNkJDRDgxMUUyOUQ4OEI3RDUwODc1OTBEOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxNTNENENGN0JDRDgxMUUyOUQ4OEI3RDUwODc1OTBEOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgIQgzkAAAiRSURBVHjafFZbiCVH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","css":".tumblelog_menu .tumblelog_menu_link.xkit-mute-button:before {\n\tbackground: no-repeat 50% 50% url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTNENEM3OEJDMUE5MTFFMkEzOTZFQzEzOTg3NzFDMDUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTNENEM3OENDMUE5MTFFMkEzOTZFQzEzOTg3NzFDMDUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpEQ0EwMzY5RUMxNUQxMUUyQTM5NkVDMTM5ODc3MUMwNSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFM0Q0Qzc4QUMxQTkxMUUyQTM5NkVDMTM5ODc3MUMwNSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ptqh5IgAAAEQSURBVHjaYvz//z8DJYCJgYZAAoirgFgAnyIWHOKaQFwMxHxA/IdUA1yAOAWIWYH4MxAzQsV5oXwYABn+GWSAGhCLQAVVgdgPSRFI828glgLiGiA+AsTLgFgUiJuA+DjIgFog5sLjSpAB+kAsDsTBQMwOxLpALAbE5iAD/hEITE4g3g7EHEAcCcQ+UPEHQNxDTDTCwuAkEP9CEr8DxM9ZoIGFD/yChk0p1DUfgJgfGtg/QS54DBX8iMOAv0AsC8TCQPwIatAcqJweIzQqWaGpEhT/6UAsBFXwBYizobQV1NmvoHLWQHybEUcKzANidTQDsAJmLGJfoPENcoUKEG8G+ZXc/GBHII0wMFKanQECDACKtzHz2ySXWwAAAABJRU5ErkJggg==');\n}\n\n.tumblelog_menu .tumblelog_menu_link.xkit-mute-button.already_muted:before {\n\tbackground: no-repeat 50% 50% url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTNENEM3OEZDMUE5MTFFMkEzOTZFQzEzOTg3NzFDMDUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTNENEM3OTBDMUE5MTFFMkEzOTZFQzEzOTg3NzFDMDUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFM0Q0Qzc4REMxQTkxMUUyQTM5NkVDMTM5ODc3MUMwNSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFM0Q0Qzc4RUMxQTkxMUUyQTM5NkVDMTM5ODc3MUMwNSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Puh+nEYAAAEdSURBVHjatNMxSwJxGMfxu+M0Ko2KiKxFUINoanKppuYaGnsBDYYQDlIQbb0HR4caBIdeQtAeRO1CSFNhGA1qXt8fPIODd1dIf/gMd8fz8Dz/5zk3CAJnkuM5/3hWcI55VRnGDwneQAVzGPy1hT1cYgFfcDmOySCPGop6pwrWsWTBBeyPJHPRx6pVcopH3KKsZyW4wExElUpwiGVc48wqfMGBWhjGXOY0bpDFLB6wg3ts/maMauMNbWTwai134StBIiZBzwLWLFhJ3pHWvXjWSwcfIQm+1StaNpUt3GEbzyrPtyo8m/8xFi34EyUkoZ2v4skqOLKpjN3AKzRRR2rkm1rJoYZiVN9TOEFD2xi1ynFnVzsSlcCd9Hf+EWAAZgtynxHTlewAAAAASUVORK5CYII=');\n}\n\n.xkit-mute {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODJBQzQ2QzMwMjczMTFFM0IwRTREQUE2OUI0ODg5QzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODJBQzQ2QzQwMjczMTFFM0IwRTREQUE2OUI0ODg5QzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4MkFDNDZDMTAyNzMxMUUzQjBFNERBQTY5QjQ4ODlDMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MkFDNDZDMjAyNzMxMUUzQjBFNERBQTY5QjQ4ODlDMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrLU4L4AAAB/SURBVHjaYvz//z8DJYCJgUIwiA1gZGSUAuIiQgaw4NDsBqTckPiCwMB+j85GMQAo0YPDMEEgVQ2kV0CFIoDsVpghLIScCFII1RwBFVqB7AKKA5GgC6BeANmO7IW78DDBlhKRAxEoX4IvEEEKsGIgkALiIlzyMMw4mhcYAAIMAOJZXu4qGZEQAAAAAElFTkSuQmCC);\n}\n\n.xkit-mute.already_muted {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjQ0NzQyNEMwMjg0MTFFM0IwRTREQUE2OUI0ODg5QzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjQ0NzQyNEQwMjg0MTFFM0IwRTREQUE2OUI0ODg5QzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4MkFDNDZDNTAyNzMxMUUzQjBFNERBQTY5QjQ4ODlDMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MkFDNDZDNjAyNzMxMUUzQjBFNERBQTY5QjQ4ODlDMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkhDTFMAAACfSURBVHjaYvz//z8DJYCJgUJAXwMYGRkFiTYAqFgKiItgGqGaq4G0CUEDgIrcgBRIsxRUCMY+DcRuyGpZkDT14HH9YSA2BeJdIBrkOmDsPSMlDO4CsQ5MExBw0j0WdID4CsjpUP53jDAAOq8ELRCRA0sbiDcCsS0Qv0PyClgjVgwN9SIoWxCKm4HYBFkdIyl5AZQWgOrfo4gN/cwEEGAAjjpHufip7t0AAAAASUVORK5CYII=);\n}\n\n.xmute-muted {\n\tdisplay: none !important;\n}\n\n.xkit-muted-user {\n\tborder-bottom: 1px dotted rgb(190,190,190);\n\tpadding: 0px 15px 0px 35px;\n\tfont-size: 12px;\n\theight: 34px;\n\tline-height: 34px;\n\tposition: relative;\n\tcursor: pointer;\n\tcolor: rgb(120,120,120);\n}\n\n.xkit-mute-options {\n\twidth: 100%;\n\theight: 40px;\n\tmargin-top: 10px;\n\tmargin-bottom: 10px;\n}\n\n.xkit-mute-option {\n\tfloat: left;\n\twidth: 50px;\n\theight: 40px;\n\tdisplay: inline-block;\n\tbackground: rgb(240,240,240);\n\tborder: 1px solid rgb(190,190,190);\n\tborder-left: 0; background-repeat: no-repeat;\n\tbackground-position: 50% 50%; cursor: pointer;\n\tbox-shadow: inset 0px 1px 2px rgba(255,255,255,0.73), 0px 1px 2px rgba(0,0,0,0.11);\n}\n\n.xkit-mute-option:hover {\n\tbackground-color: rgb(245,245,245);\n}\n\n.xkit-mute-option:active {\n\tbox-shadow: 0px 1px 2px rgba(0,0,0,0.11);\n\tbackground-color: rgb(237,237,237);\n}\n\n.xkit-mute-option.selected {\n\tbackground-color: rgb(230,230,230);\n\tbox-shadow: inset 0px 1px 1px rgba(0,0,0,0.21), 0px 1px 2px rgba(0,0,0,0.11), inset 0px -1px 1px rgba(255,255,255,0.23) !important;\n}\n\n.xkit-mute-option.regular {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZGNjZFRUYxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZGNjZFRjAxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkY2NkVFRDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkY2NkVFRTFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsJAvbIAAAGdSURBVHja7NbJK0VhGMfxY8otKUMyRIaNlLmrEEIiEaJY8xdYsFOUlViwtbNhK5EpEkrpWiArC5GFoRQbynB9T/3U6aTc18JQ561P5z3vGZ73fd7ndG9YMBi0frqFW7/QvKBe0P8bNPKzQb/f7x4aRSneMIZdkyCBQODroK6WjkFE6/zONOh30tviCGi3RiSYZs80aLeO27hEChpc98RhGJs4xg7GkfOdoLmoVH/CkdYe18pmMYI6TaoKA1hEomnQDvhwg3WsabxWL7dUYM2wfzl6kYV6PCJP10MOGoEu9TfwpJk/aE9bde0M5ZrIMjJR6Hh3tEnQIpSof41q5ONcY5063iIeQ9rzQ0w6CipoUmldjuv94mw1SEUalrSABczjAnNIMinvKLSpb8/+RPe+KV0ViEGTXmwH3Ee7nslGrOk3ValUWkrbjGuv91CmbGxpPEOTsFTJPvWfQ93TPh1fVETO9opV9e1iOsWRUr0i97jSPQWhrnRa396D0utuU/pmP9LaoFUn40BVXqzzO/fDYd4fMy+oF/TPB30XYAA/FlCkcqgrRwAAAABJRU5ErkJggg==);\n}\n\n.xkit-mute-option.photo {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZGNjZFRjMxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZGNjZFRjQxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkY2NkVGMTFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkY2NkVGMjFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PklZnYUAAAF6SURBVHja7JXNKwVRGIfdcRVKIhHJSmQhKWwslBUbWSibG9a3lIWVjaIsxNLKBkluyVcs/AEiO8nGQjefC2woF8V4Tr3qNM3cc+c2WZ23nuZ89f7m954zZ2Ku6xb8d8SsqBW1opGJXgw1qUcdVMlQDaxCuWfpFyThUvqvkG7duvLNGze81CgsaKJBUQobWv8TZmDOb7FjSDYfIJiGTVjT3Km4gWm4htmgpCanFZ6+cjAJO1ALhXAPHbACB+LwGZbyFf3R2mrzE+LyENpk/A7GoQ/WpaQD2ZLGQxy6bTiFc6iUsQyUifMeSMGUKZETQlQdlDERfJMyt0CzuFRHfRe+TYnCOH2AYWmPiMBfHMmzEd7FfSROlcMnOPYI6qHEiqN0OgjLcJtljSpzUZR7mhAniwHzqrQTuSRyQsyXyGHq91nXDXtQnYuoqbyP0KD11d27D2dwInduO/T6GMjkK5qUctZ73HdClzb24flUXrJdg/Z/akWtaKj4FWAAOdZxVglFqeYAAAAASUVORK5CYII=);\n}\n\n.xkit-mute-option.quote {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTgwREFEQzYxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTgwREFEQzcxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkY2NkVGNTFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkY2NkVGNjFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp21znIAAAFvSURBVHja7JXNK0RRGMZdH5OSmgk1ZWEjCmUjElnNjiysmFKSBRZIFlZWNpKNz0lCdoqUlSWK3Sws+CuoSdJQXL9T7+J2u+eYMyarc+pXz9z3ueeZ9517z3i+75f99/JcqAt1oSUJzWW8qMt90A77v+yrPCnYjk/7X+FipcUXHIc9qIFPONb4BuEIGqAWVsOG8gIDF+FEAs/gRuNLw4UEXsNllKmQTqdgQ/QmLEDUbzIkHVbBKUzCezGhvbAlWm00r/E1y7hjMoUJyOs2NY03Jp1VwwvM6R5GmUQdfIgvb+rEFDoCXaIrYA1mIRHy9cOwaDX2ZViCxmJC0wEdl5HtwC20BGqjAa2mMgbrcAc9tqGdmusdsBu4t1vja4JD29CEoTYAraLrDb4229A3Q029FknRr7bHoCn00VBTR9uz6GwpQzOG2hU8iT6Ab40vaxt6DisR75w63makW7Xu5XMu5HuQJ979n7pQF/q39SPAAIOXa93gNF/cAAAAAElFTkSuQmCC);\n}\n\n.xkit-mute-option.link {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTgwREFEQ0ExQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTgwREFEQ0IxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODBEQURDODFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBODBEQURDOTFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Puk0h+sAAAGqSURBVHja7NZNKARhHMfx3fVyQF6Kg7eUXLQHysUmL+HgtUjhILJRilyk3F04SHJyUBJyk1YSeYkktZID2igHB29Rsl4Om/Wd+h+mzczq2XLYdurT7Owzz/x2Zv7Pv7X6/X7Lf2/WSGgkNDxDG9dHAr8qQyccyIIN93BjEWv6k111Y79eN/qPPy4RE3BKkH7LE+1YQT/uzC5m+0NgElbRY3L+u+ybsSVPIaTQSVQYjO2hCKmowTXsmEOMamg5ug3GHtCCLwziCB1yXIVW1VCnydg2XrCEcUzhGLcy3qsa6jAZ0yo2Bbl4xT5ikSDjBUYTg1VvRsDxE3ZQDK8UUCU8eMMo0uXcZNVQ/ZPYlWXxKJ+1dxeFOPShXmog6BYsVAvIgQ8DSJPlU4ghaRYbBnO9qu/0VPYfuECbPNpvXEq40eZRvdN5NCEepZhGNg7wiQaTuQuqd+rCpry7GQnU1u2yFE2JwbxzzKreqU+KRAvOlwZwJZWZaTDnGV1Szcpt8Aa1unVoNwk8k3Z4EmrvtUhPrZYucyjNQN/stYIbliXjjvxziISGb+iPAAMAcz18wE4/HnIAAAAASUVORK5CYII=);\n}\n\n.xkit-mute-option.chat {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTgwREFEQ0UxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTgwREFEQ0YxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODBEQURDQzFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBODBEQURDRDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pmc6aAoAAAEzSURBVHjaYvz//z8DvQHjqKWjlo5aSjVL7ebf4AZSnUAcAsS8BMz6DsRHgLgUiG+DBA4lamBVyELAoG4gziTSA1xA7A/EfEDsCsR/cSlkImBQJBmhZwK1mIFcS7nJjTZ8koSC9x8S+xkQswKxKJT/GIhBCYIDGpSSSHp+UOJTZNABxLOB+A+UfwaIzwFxL1QOBniA2IdalrIB8UpQogbi+UD8E4jfQX3KhqSOGSofQQ1LfwGxIxAXAPF6IL4FxWZAbIAlJbuRG6fI4BsQqyPF3R9o3AkDMTua2hVAnE0NS52AWASIpYDYC4jloBa/gQY1DHwF4lxoYUGWpchJPwqJrYxHz1+kxEZWnJJTMDMRMpeQpdfIsPQ9pfm0BIhfkWAhKG5boYlutD4dtXTUUuoAgAADAGzGZBT0+yuKAAAAAElFTkSuQmCC);\n}\n\n.xkit-mute-option.audio {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDAxMTc2OTExQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDAxMTc2OTIxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODBEQUREMDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEMDExNzY5MDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmgJCVkAAAGISURBVHja7NY/KEVRHMDxd3kxyKoMMmCxeFneoje8wSBiMOgVykCkPEYyUCYDBgsRr2SUwkKUyeDPYDBICovVS/l/fU/9bp1u7nvvnluk7qlPt/On8zvn/s49Xcu27chvl6LIH5QwaBj0/waN5upcTx+7m6rRj1bUyKIfcIhlnOmDe+cTgXfajUuM4x2bal14xABOMV3InFEfATO4RjuOXP2NWMAkyjEaNKe1WMQdkj8EVOUcLThBGm1Bg47J6kckf14li2Goy3wi19z5gpahAzfYLmCB6iAdII4606DqhFbiAmuY0foqUKXV1anelbyrkjANmpFnJ3rQrPWlUK/Vk5LXIanPmQZtkPyoyT6Ec+q78KzN8abtOCWpMT5I+3KQ1NgvaYsL9bpnpc35G9iTlBh/p69YQkzqn/JswpXkbVXaLHnuaOONd6pP4EysLoJB3GPLtdNY0Au/1GP8C0rkKnzye6Xme71Tkp9i9Ln6brGi1Z1XvyEHLOs1qRX+DYZBw6B+yrcAAwC9FkublkrqIgAAAABJRU5ErkJggg==);\n}\n\n.xkit-mute-option.video {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDAxMTc2OTUxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDAxMTc2OTYxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpEMDExNzY5MzFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEMDExNzY5NDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlXaRegAAAFvSURBVHja7NbNKwRxHMfxXYsL+QdwEScHBxlyVPKQEkkO/oF18XwQKSSHvbg5c/TwH9iLXLQlFwc5SFKK5CGUxXp/63PYNjvGzoTDfOvVtL+Znc9vfvOd2Y1mMpnIb1dR5A8qDA1DA6lit53x6UXb9GEG9bjCOpbQhBU4eMIOZnFnX1pLzBcWSnViCzF9rsGCJtCKKo2XYwSVGMBbwVdKTWQFWp2hDIM5x9kKvKAXLdj3c0+rtb3FPcZxrDF7lV1rOW0tdzVe57eRzrXdQDse0KixKJLoQQodGj/x1UhUAm0YQ5euInuiQ2jWvSzFNg78hibVTHNowA3ec46pwCU2sfzF/h+H1mq54jp5vrJuvcCj+mAUU4WGnmprs/9wOc7u76GWehX9bqHfNZKjk9ljU+LCJp/GsAJ9LW9Kj4uXcvTCCOTdG/MYalf6HFSo1x+FI3TjNYgTpj2G2nO6h0l1cf6uC/+YhaFh6L8P/RRgAJzXR6+2XwoJAAAAAElFTkSuQmCC);\n}\n\n.xkit-mute-option.asks {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0YwNkY2NzkyNjEwMTFFM0E4QURBMkY5NDVFMjREMzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0YwNkY2N0EyNjEwMTFFM0E4QURBMkY5NDVFMjREMzgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRjA2RjY3NzI2MTAxMUUzQThBREEyRjk0NUUyNEQzOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozRjA2RjY3ODI2MTAxMUUzQThBREEyRjk0NUUyNEQzOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmiD5J8AAADXSURBVHjaYvz//z8DvQETwwCAUUtHLaUKYCFGkYmJCYwpAMQOQGwA5R8A4gtA/AHEOXPmDPUshQKQRRuAWB5JrB6IHwJxANRyqgavANRXMAs/IsnJQ+UEqG1pAhDzQ9kboRYIIlnODw12qlpqgMSeAKU/oAWpAFUTEtSiBVD2BSTf2yOpuUBtSy9gCe75SPyFtEhIyEABzcJGqCNoWjgEoFnYQI8SCTnBHKBZiYQGNiBZdoEcS8nxKSgl74dig+FV4OPJPh/IsZRxtGE2aumopYPeUoAAAwBfSihME+bbPgAAAABJRU5ErkJggg==);\n}\n\n.xkit-mute-option:first-child {\n\tborder-radius: 6px 0px 0px 6px;\n\tborder-left: 1px solid rgb(190,190,190);\n}\n\n.xkit-mute-option:last-child {\n\tborder-radius: 0px 6px 6px 0px;\n}\n\n.xkit-muted-user:hover {\n\tcolor: black;\n\tbackground: rgb(245,245,245);\n}\n\n.xkit-unmute-user-button {\n\tposition: absolute;\n\ttop: 0; left: 15px;\n\tcolor: red; opacity: 0.7;\n\tcursor: pointer;\n}\n\n.xkit-unmute-user-button:hover {\n\topacity: 1;\n}\n\n#xkit-control-panel-mute.no-muted-users {\n\tpadding: 15px; font-size: 12px;\n\tcolor: rgb(110,110,110);\n\ttext-align: center;\n\tline-height: 24px; padding-top: 33px;\n}","title":"Mute!","description":"Better than "shut up!"","developer":"STUDIOXENIX","version":"2.4.0","details":"This extension allows you to hide text and answer posts by an user while still seeing their other posts. Useful if a blogger has nice posts but a bad personality. Please note that you'll need to re-mute them if a user changes their URL.","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/mutualchecker.json b/Extensions/dist/mutualchecker.json new file mode 100644 index 000000000..fa8317d42 --- /dev/null +++ b/Extensions/dist/mutualchecker.json @@ -0,0 +1 @@ +{"id":"mutualchecker","script":"//* TITLE Mutual Checker **//\n//* VERSION 2.0.4 **//\n//* DESCRIPTION A simple way to see who follows you back **//\n//* DETAILS Adds a small icon and "[user] follows you" hovertext to URLs you see in post headers (when appropriate).

    Only checks the URL when the person directly made/reblogged/submitted/published the post, and can only check main blogs. **//\n//* DEVELOPER New-XKit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.mutualchecker = new Object({\n\n\trunning: false,\n\tmutuals: {},\n\n\tpreferences: {\n\t\t\"main_blog\": {\n\t\t\ttext: \"Blog to check for follow-backs on:\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\",\n\t\t\ttype: \"blog\"\n\t\t},\n\t\t\"put_in_front\": {\n\t\t\ttext: \"Place mutual icon before, not after usernames\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\n\tcpanel: function() {\n\t\t$('select[data-setting-id=\"main_blog\"] option').first().remove();\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tXKit.blog_listener.add(\"mutualchecker\", this.init);\n\t\tlet today = new Date();\n\t\tif (today.getMonth() === 3 && today.getDate() === 1) {\n\t\t\t$(document.body).addClass(\"xkit-april-fools\");\n\t\t}\n\t},\n\n\tinit: function(blogs) {\n\t\tif ($.inArray(this.preferences.main_blog.value, blogs) === -1) {\n\t\t\tthis.preferences.main_blog.value = blogs[0];\n\t\t}\n\t\tXKit.tools.init_css(\"mutualchecker\");\n\t\tthis.add_follower_icons();\n\t\tthis.add_post_icons();\n\t\tXKit.post_listener.add(\"mutualchecker\", this.add_post_icons);\n\t},\n\n\tadd_follower_icons: function() {\n\t\tvar following = XKit.interface.where().following;\n\t\t$(\".follower\").each(function() {\n\t\t\tif (following || !$(this).find(\".follow_button\").length) {\n\t\t\t\tvar $name_div = $(this).find(\".name-link\");\n\t\t\t\tvar url = $name_div.text();\n\t\t\t\tXKit.interface.is_following(url, XKit.extensions.mutualchecker.preferences.main_blog.value)\n\t\t\t\t.then(follow => follow && XKit.extensions.mutualchecker.add_label($name_div, url));\n\t\t\t}\n\t\t});\n\t},\n\n\tadd_post_icons: function() {\n\t\t$(XKit.interface.get_posts(\"mutualchecker-done\")).each(function() {\n\t\t\tvar $post = $(this).addClass(\"mutualchecker-done\"), json_obj;\n\t\t\tif ($post.hasClass(\"is_private_answer\")) {\n\t\t\t\ttry {\n\t\t\t\t\tjson_obj = JSON.parse($post.find(\".post_avatar_link\").attr(\"data-tumblelog-popover\"));\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tXKit.extensions.mutualchecker.check(json_obj, $post.find(\".post_info_submissions\").first());\n\t\t\t} else {\n\t\t\t\t$post.find(\".post_info_link[data-tumblelog-popover]:not(.reblog_icon + .post_info_link, .tf2_icon + .post_info_link), .post-info-tumblelog > a[data-tumblelog-popover]\").each(function() {\n\t\t\t\t\tvar $link = $(this);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tjson_obj = JSON.parse($link.attr(\"data-tumblelog-popover\"));\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tXKit.extensions.mutualchecker.check(json_obj, $link);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t},\n\n\tcheck: function(json_obj, $link) {\n\t\tif (json_obj.following && !json_obj.customizable) {\n\t\t\tif (typeof this.mutuals[json_obj.name] === \"undefined\") {\n\t\t\t\tXKit.interface.is_following(json_obj.name, this.preferences.main_blog.value)\n\t\t\t\t.then(follow => {\n\t\t\t\t\tif (follow) {\n\t\t\t\t\t\tthis.add_label($link, json_obj.name);\n\t\t\t\t\t\tthis.mutuals[json_obj.name] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.mutuals[json_obj.name] = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (this.mutuals[json_obj.name]) {\n\t\t\t\tthis.add_label($link, json_obj.name);\n\t\t\t}\n\t\t}\n\t},\n\n\tadd_label: function($name_div, user) {\n\t\tif ($name_div.hasClass(\"post_info_submissions\")) {\n\t\t\t$name_div.html('' + user + '' + $name_div.text().trim().substring(user.length));\n\t\t} else {\n\t\t\t$name_div.addClass(\"mutuals\").attr(\"title\", user + \" follows you\");\n\t\t\tif (XKit.extensions.mutualchecker.preferences.put_in_front.value) {\n\t\t\t\t$name_div.addClass(\"mutuals-front\");\n\t\t\t}\n\t\t}\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tthis.mutuals = {};\n\t\tXKit.post_listener.remove(\"mutualchecker\");\n\t\t$(\".mutuals\").removeAttr(\"title\").removeClass(\"mutuals\").removeClass(\"mutuals-front\");\n\t\t$(\".mutualchecker-done\").removeClass(\"mutualchecker-done\");\n\t\tXKit.tools.remove_css(\"mutualchecker\");\n\t}\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAACGUlEQVRIS7XTzU8TQRgG8PeP62GzaW3TLxMFCR68SPDQBS4YoQYOiKCiFxMPbWH5iJAaAwmVCATx4gE8EBJNKX6gUMCP+HV1Z+fZnTrTylCyv9sz77zzpJuU/gSMfgcs+IJfAaOf9Ryvj7UbIS3nsvNYqo9+qI7ms7GQGUtpyeS2sFYffZdVn/bHQqGW0TXkM1ILXt695Pzya7kK8hnRN9m6W9AEM903u4NHBPoqe3GnFRun1zONRwT6IltzC3qmEPVsP7rqFqhbdCzjBd2TiJomu1lBnS06EvgljxFJXB4ovsXsJF4BolBbsHzvSjKZiPj/MDM9UNzD7CSNCw5lq6PuJ7IRfW9meuNutxHveLiKQ5/NC5StQ6rKVkZYQZeN6LO72BNc68gKTj18qm5V6UCGgglE38S/BTj18Km6dUD7suXbLezqOKJve/ZmW9j5Rka4re/xaxz6xnmBsrWvX/B/jQs+y56jAFGTV4Ao0Cdh+kbSEWffwWFGkxeu21uYbT4Zs9qjJhsY4fOdw3OvdjHhChYbWQVEgfYEfslnpjrvlypssFGwojj0Ra3ChrvFeQWIAn2ULQ2zT2TlER0Lg2m2LUsPLuCCI88LaraAPsie3WIFmTyiI59hyyr1Tu0J6BTomOmNNCh4LyvxghyipoZb9E5WGrroXG1KIlvEIwLtyhabLDBTHQ8W8UYNqgQs+IKdgFE5UOXyX4UwNMSHFXXQAAAAAElFTkSuQmCC","css":".mutuals::after, .mutuals::before {\n\tfont-family: tumblr-icons, None;\n\tfont-weight: normal;\n\tfont-size: 1.23em;\n\tline-height: 0;\n}\n\n.mutuals:not(.mutuals-front)::after {\n\tcontent: \"\\EA59\";\n\tpadding-left: 0.3em;\n}\n\n.mutuals.mutuals-front::before {\n\tcontent: \"\\EA59\";\n\tpadding-right: 0.3em;\n}\n\nbody.xkit-april-fools .mutuals:not(.mutuals-front)::after,\nbody.xkit-april-fools .mutuals.mutuals-front::before {\n\tcontent: \"\\EAA7\";\n\tcolor: #00b8ff;\n}\n","title":"Mutual Checker","description":"A simple way to see who follows you back","developer":"New-XKit","version":"2.0.4","details":"Adds a small icon and "[user] follows you" hovertext to URLs you see in post headers (when appropriate).

    Only checks the URL when the person directly made/reblogged/submitted/published the post, and can only check main blogs.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/norecommended.json b/Extensions/dist/norecommended.json new file mode 100644 index 000000000..406ed43e6 --- /dev/null +++ b/Extensions/dist/norecommended.json @@ -0,0 +1 @@ +{"id":"norecommended","script":"//* TITLE No Recommended **//\n//* VERSION 2.3.4 **//\n//* DESCRIPTION Removes recommended posts **//\n//* DETAILS This extension removes recommended posts from your dashboard. To remove Recommended Blogs on the sidebar, please use Tweaks extension. **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.norecommended = new Object({\n\n\trunning: false,\n\n\tpreferences: {\n\t\t\"sep-0\": {\n\t\t\ttext: \"Options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"no_search\": {\n\t\t\ttext: \"Hide recommended posts from followed searches\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"no_pinned\": {\n\t\t\ttext: \"Hide pinned posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"hide_recommended_on_blogs\": {\n\t\t\ttext: \"Hide recommended posts under permalinked posts on user blogs\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"hide_posts_completely\": {\n\t\t\ttext: \"Hide posts completely (may break endless scrolling)\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tslow: true\n\t\t}\n\t},\n\n\tcpanel: function(div) {\n\t\t$(\"#norecommended-completely-hide-help\").click(function() {\n\t\t\tXKit.window.show(\"Completely hiding posts\", 'If you have endless scrolling enabled and XKit completely hides every single post on the first \"page\" of your dashboard, you may become unable to scroll down to load more posts. Disable this option if you experience an empty dashboard with the loading icon appearing forever.', \"info\", \"
    OK
    \");\n\t\t});\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (XKit.interface.where().explore) { return; }\n\n\t\tif (XKit.page.react) {\n\t\t\tif (this.preferences.hide_posts_completely.value) {\n\t\t\t\tXKit.interface.hide(\".norecommended-hidden, .norecommended-hidden + :not([data-id])\", \"norecommended\");\n\t\t\t} else {\n\t\t\t\tXKit.interface.react.init_collapsed('norecommended');\n\t\t\t}\n\t\t\tXKit.post_listener.add('norecommended', this.react_do);\n\t\t\tthis.react_do();\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.preferences.hide_recommended_on_blogs.value) {\n\t\t\tthis.hide_recommended_on_blogs();\n\t\t}\n\t},\n\n\treact_do: function() {\n\t\tif (XKit.interface.where().explore) { return; }\n\n\t\t$('[data-id]:not(.norecommended-done)').each(async function() {\n\t\t\tconst $this = $(this).addClass('norecommended-done');\n\t\t\tconst {no_search, no_pinned, hide_posts_completely} = XKit.extensions.norecommended.preferences;\n\t\t\tconst {recommendationReason, blogName} = await XKit.interface.react.post_props($this.attr('data-id'));\n\n\t\t\tif (recommendationReason && recommendationReason.hasOwnProperty('loggingReason')) {\n\t\t\t\tconst {loggingReason} = recommendationReason;\n\t\t\t\tconst is_search = loggingReason.startsWith('search:');\n\t\t\t\tconst is_pinned = loggingReason.startsWith('pin:');\n\n\t\t\t\tif ((no_search.value && is_search) || (no_pinned.value && is_pinned) || (!is_search && !is_pinned)) {\n\t\t\t\t\t$this.addClass('norecommended-hidden');\n\n\t\t\t\t\tif (!hide_posts_completely.value) {\n\t\t\t\t\t\tlet note_text = loggingReason.startsWith('pin:') ?\n\t\t\t\t\t\t\t`pinned post by ${blogName}` : `recommended post by ${blogName}`;\n\t\t\t\t\t\tXKit.interface.react.collapse($this, note_text, 'norecommended');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\thide_recommended_on_blogs: function() {\n\t\tif (!XKit.interface.is_tumblr_page()) {\n\t\t\t//We're not going to expect other themes have this class as well.\n\t\t\tXKit.tools.add_css(\".related-posts-wrapper, .recommended-posts-wrapper {display:none;}\", \"norecommended\");\n\t\t}\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\t$('.norecommended-done').removeClass('norecommended-done');\n\t\t$('.norecommended-hidden').removeClass('norecommended-hidden');\n\t\tXKit.interface.react.destroy_collapsed('norecommended');\n\t\tXKit.post_listener.remove('norecommended');\n\t\tXKit.tools.remove_css(\"norecommended\");\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","title":"No Recommended","description":"Removes recommended posts","developer":"STUDIOXENIX","version":"2.3.4","details":"This extension removes recommended posts from your dashboard. To remove Recommended Blogs on the sidebar, please use Tweaks extension.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/notificationblock.json b/Extensions/dist/notificationblock.json new file mode 100644 index 000000000..e2239be9a --- /dev/null +++ b/Extensions/dist/notificationblock.json @@ -0,0 +1 @@ +{"id":"notificationblock","script":"//* TITLE NotificationBlock **//\n//* VERSION 1.4.2 **//\n//* DESCRIPTION Blocks notifications from a post **//\n//* DEVELOPER new-xkit **//\n//* DETAILS One post got way too popular and now just annoying you? Click on the notification block icon on that post to hide the notifications from that post. If you have Go-To-Dash installed, you can click on a notification, then click View button on top-right corner to quickly go back to the post on your dashboard. **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.notificationblock = new Object({\n\n\trunning: false,\n\tbutton_icon: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAAXNSR0IArs4c6QAAAblJREFUOBGdk0soRFEcxi9NKUpWVmxYYoGU51KWhI2NZmNPsZpoNrPRpBHWrCSPslRsp4jFZMpKVhaKkGcJ4/fduWc6d+bOFf/65vv+z3POPWccJ8RisVgaHISU+FIRn4dDcw+USyQSx3BvcT7MLxlG8RH4ArV2I4vs4L+ySNSO2zpoWLVdYOlxdA5ErZhPVvq8352KsJK/DnNnceQ4mC4eHHTM4pogf4HgG0jZyX/tjAE6bo09SDrCdofgAbDITT0pKCPemleubjPaYveiqGsidkhvs465DfQMGkAUGMsaAZ8bTXOSRvci0MPEV4D7jHTMS69wkmS3p8tRnEGzSlL7Au2DRrAMHO1sC3QArbYKylk9g24ZUkfBPTDPJINOqkk7WwfvcrDOPJX+eoPmyDwAM0iFGXLPEpWIO3hDToilvdx8QM0Eu71W3DyNJfRnQKEJ9UmwsD70qQl6XAWfSLvDKNIlrClQzljdLNxl1TyiZ+gfU8wUSOsIVxIBtknDNwP3rJx2OEg8ZWKFYQT1EUfAjUlarA8vG82TcwH303Pm+S4VhskjmYXawS7Qf8+YvcAUdS3gwyQN/wCrsHgfRS7nugAAAABJRU5ErkJggg==\",\n\tbutton_ok: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0FDNkNDNzYxNkVEMTFFM0E2RkFCMjhCQTdGQjEwOTAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0FDNkNDNzcxNkVEMTFFM0E2RkFCMjhCQTdGQjEwOTAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3QUM2Q0M3NDE2RUQxMUUzQTZGQUIyOEJBN0ZCMTA5MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3QUM2Q0M3NTE2RUQxMUUzQTZGQUIyOEJBN0ZCMTA5MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhNHAxwAAAFhSURBVHjaYsxeqs2ABxwF4s9A7IFLwZSoK3A2CxZ5SyD+D8QngNiKgQSAzbA9QPwXiPnQxFcD8VcgTiDFMC4cakOgLsZpGBMDaYARnySphsFAAxAXEONNYkAdEH8D4gnUcBnIu9zYvOkOxC1YYk8Hia2LK6JylukoAfFdmDdXQQ2SQYupy0jsS0jsHqSI8AfiyTCHgFx2ByoRB8QWRAR8CZT9BYg3ALEsEE+EuWwFEBtBbZuCxyAxIH4NxAJA/A7JdRegrgW7bD4Qf4dKGOMxDGRQKRC/R0tvF4D58zPMsDdAvICA945C6VoscpHACHiCnDT6gPgPHsOsoTQooE+jybED8Ulkw0CRMJWA62BqTZHEPgBxIdCbweiJFuSFezgMWgbE/4B4LZIYyIWuQIMmYMsBoEAMAOIXWAwrhdJBUPoaENsA8Rl82QmUUA2BeA0078EAsgWpQAwqnn+h2wgQYAAh60jncAp2xAAAAABJRU5ErkJggg==\",\n\tblacklisted: [],\n\n\tpreferences: {\n\n\t\task: {\n\t\t\ttext: \"Show the confirmation window\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\n\t},\n\n\trun: async function() {\n\n\t\tthis.running = true;\n\n\t\tif (XKit.interface.where().inbox === true) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait XKit.css_map.getCssMap();\n\t\tXKit.tools.init_css(\"notificationblock\");\n\n\t\tvar storage = XKit.storage.get_all(\"notificationblock\");\n\t\tif (storage && storage.posts) {\n\t\t\tthis.blacklisted = storage.posts.value.split(\",\").filter(i => i);\n\t\t}\n\n\t\tXKit.interface.react.create_control_button(\"xnotificationblockbutton\",\n\t\t\tthis.button_icon, \"NotificationBlock\",\n\t\t\tthis.on_click.bind(this), this.button_ok\n\t\t);\n\n\t\tXKit.post_listener.add(\"notificationblock\", this.do.bind(this));\n\t\tthis.do();\n\n\t\tif (XKit.interface.where().activity === true) {\n\t\t\tconsole.log(\"In activity, repeat block mode\");\n\t\t\tsetInterval(this.do.bind(this), 1000);\n\t\t}\n\n\t},\n\n\trecheck_all: function() {\n\t\tconst notificationClasses = [\n\t\t\t\"notification\",\n\t\t\t...XKit.css_map.keyToClasses('notification'),\n\t\t];\n\n\t\t$(notificationClasses.map(cls => `.${cls}.xnotificationblockchecked`).join(\", \")).\n\t\t\tremoveClass(\"xnotificationblockchecked\").removeAttr('data-xkit-notificationblock-blocked');\n\n\t\tthis.do();\n\t},\n\n\tunblock: function(post_id) {\n\t\tvar m_index = this.blacklisted.indexOf(post_id);\n\t\tif (m_index !== -1) {\n\t\t\tthis.blacklisted.splice(m_index, 1);\n\t\t\tXKit.storage.set(\"notificationblock\", \"posts\", this.blacklisted.join(\",\"));\n\t\t}\n\n\t\tthis.recheck_all();\n\t},\n\n\tblock: function(post_id) {\n\t\tif (this.blacklisted.indexOf(post_id) === -1) {\n\t\t\tthis.blacklisted.push(post_id);\n\t\t\tXKit.storage.set(\"notificationblock\", \"posts\", this.blacklisted.join(\",\"));\n\t\t}\n\n\t\tthis.recheck_all();\n\n\t},\n\n\ton_click: function(e) {\n\t\tconst self = this;\n\t\tconst $block_button = $(e.target || e.srcElement);\n\t\tconst post_id = $block_button.attr('data-post-id');\n\n\t\tif (this.preferences.ask.value === false) {\n\t\t\tif ($block_button.hasClass(\"xkit-interface-completed\")) {\n\t\t\t\tthis.unblock(post_id);\n\t\t\t\tXKit.interface.completed_control_button($block_button, false);\n\t\t\t} else {\n\t\t\t\tthis.block(post_id);\n\t\t\t\tXKit.interface.completed_control_button($block_button, true);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ($block_button.hasClass(\"xkit-interface-completed\")) {\n\t\t\tXKit.window.show(\"Unblock notifications from this post?\",\n\t\t\t\t\"Notifications from this post will be shown. You may have to refresh the page for changes to take effect\",\n\t\t\t\t\"question\",\n\t\t\t\t'
    Unblock Notifications
    Cancel
    ');\n\n\t\t\t$(\"#xkit-notification-block-ok\").click(function() {\n\t\t\t\tself.unblock(post_id);\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.interface.completed_control_button($block_button, false);\n\t\t\t});\n\n\t\t} else {\n\t\t\tXKit.window.show(\"Block notifications from this post?\",\n\t\t\t\t\"Notifications originating from this post will be blocked on the dashboard and activity page, without any indication that they were blocked.\",\n\t\t\t\t\"question\",\n\t\t\t\t'
    Block Notifications
    Cancel
    ');\n\n\t\t\t$(\"#xkit-notification-block-ok\").click(function() {\n\t\t\t\tself.block(post_id);\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.interface.completed_control_button($block_button, true);\n\t\t\t});\n\t\t}\n\t},\n\n\tpopulate_notification_props: function() {\n\t\treturn XKit.tools.async_add_function(async () => {\n\t\t\t/* globals tumblr */\n\n\t\t\tconst keyStartsWith = (obj, prefix) =>\n\t\t\t\tObject.keys(obj).find(key => key.startsWith(prefix));\n\n\t\t\tconst cssMap = await tumblr.getCssMap();\n\t\t\tconst elements = document.querySelectorAll(\n\t\t\t\tcssMap.notification.map(cls => `.${cls}:not([data-target-id])`).join(',')\n\t\t\t);\n\n\t\t\telements.forEach(element => {\n\t\t\t\tlet fiber = element[keyStartsWith(element, '__reactFiber')];\n\t\t\t\tconst notificationProp = () => fiber.memoizedProps && fiber.memoizedProps.notification;\n\n\t\t\t\twhile (fiber && !notificationProp()) {\n\t\t\t\t\tfiber = fiber.return;\n\t\t\t\t}\n\n\t\t\t\tif (fiber) {\n\t\t\t\t\tconst {targetPostId} = notificationProp();\n\t\t\t\t\telement.dataset.targetId = targetPostId;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t},\n\n\tdo: async function() {\n\t\tconst self = this;\n\n\t\tif (self.blacklisted.some(i => i)) {\n\t\t\tconst blacklisted_post_regexp = new RegExp(`\\\\b(${self.blacklisted.join('|')})\\\\b`);\n\n\t\t\tawait self.populate_notification_props();\n\n\t\t\t$(`.notification, ${XKit.css_map.keyToCss('notification')}`).\n\t\t\t\tnot(\".xnotificationblockchecked\").\n\t\t\t\teach(function() {\n\t\t\t\t\tconst $note = $(this);\n\n\t\t\t\t\t$note.addClass(\"xnotificationblockchecked\");\n\n\t\t\t\t\tlet target_url = $note.children('a').attr('href') || $note.find(\".notification_target\").attr('href');\n\n\t\t\t\t\tif ($note.attr('data-target-id')) {\n\t\t\t\t\t\ttarget_url = target_url + \" \" + $note.attr('data-target-id');\n\t\t\t\t\t}\n\n\t\t\t\t\tif ($note.attr('data-url-original')) {\n\t\t\t\t\t\ttarget_url = target_url + \" \" +\t$note.attr('data-url-original');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (blacklisted_post_regexp.test(target_url)) {\n\t\t\t\t\t\tconsole.log(`Blocking ${target_url} with regex ${blacklisted_post_regexp}`);\n\t\t\t\t\t\tthis.dataset.xkitNotificationblockBlocked = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\t$(\".xkit-old-notifications, .notification\").first().addClass(\"first_notification\");\n\t\t$(\".xkit-old-notifications, .notification\").first().each(function() {\n\t\t\tif ($(this).is(\":last\")) {\n\t\t\t\t$(this).removeClass(\"first_notification\").addClass(\"single_notification\");\n\t\t\t}\n\t\t});\n\n\t\tif ($(\"[data-id]\").length > 0) {\n\t\t\tconst posts = await XKit.interface.react.get_posts(\"xnotificationblockchecked\", !!'can_edit');\n\t\t\t$(posts).each(async function() {\n\t\t\t\t$(this).addClass(\"xnotificationblockchecked\");\n\t\t\t\tvar post_id = this.dataset.id;\n\n\t\t\t\tawait XKit.interface.react.add_control_button($(this), \"xnotificationblockbutton\");\n\n\t\t\t\tif (XKit.extensions.notificationblock.blacklisted.indexOf(post_id) !== -1) {\n\t\t\t\t\tXKit.interface.completed_control_button(\n\t\t\t\t\t\t$(this).find(\".xnotificationblockbutton div\"), true\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.post_listener.remove(\"notificationblock\");\n\t\t$(\".xnotificationblockbutton\").remove();\n\t\t$(\".xnotificationblockchecked\").removeClass(\"xnotificationblockchecked\");\n\t\t$(\".xkit-notification-notification-block-button\").remove();\n\t\tXKit.tools.remove_css(\"notificationblock_notfix\");\n\t}\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NTY1ODZDODM4QzQxMUUzQTFDQUFDOThEMTlDRUY3OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NTY1ODZDNzM4QzQxMUUzQTFDQUFDOThEMTlDRUY3OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZCN0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+lGIJ0gAAAmpJREFUeNpi/Kpkw0BLwMRAYzBqAUHAwsDIRGsLGIlUyr5s2v8v336llVDZB0yaOgwM//9dv8psqgXk/iLRx4R9wLGim+Hv32/GvlA+IyNbb8P/bz9+13YQaQEzASWc7GBzYcoYmVl8bBn+//9d103VSIYrgzCA/iZOIwsDE3EWwJUhMVjTYv99+vJ3xXp8FjASZwFcGTKDNS+C4fvP76s24vUBMzNRPoArQ2YAA4qLA78JTCAvYyAmcxOWzDgGbl54gDAqKkIZSkrIYfXdIgLIYJSSYt88C6tR2COZvbeEgYeTUULkd9MkaGJdPwHKWNcP9Xte0nfjYJBFtpaslUlM3FxYjQIGERbRf49eMGkpsvjZ/Vm3C6vHf89Y82feSqBezoNLIOn498y1WI0CWsCCKfp39wmgBaA8VZ6CKfvdPZ3h0ycGPj7O3XMg+fTfzYd/Vm7FahQwmJgx0Z8dhxh+/gJJaylicf+XryxR/px75sJLgX+3H4HUYzOKiYGFGQv69u3P1qNYA+ffpdtABazJASjh4GbJvmEyVqOwpyIg+rNmB8Pff1i8rKcKlP3unfnv+n2EKBvLv2v3caQiHKn4/6u3v9fvZw1xxiLHysLw7z+TJiz0vnz7vXDLn/W7sBqFL6P9WbKJ2VqfSVIERXDfaWByZG3IhIbYjQe/Ji//f+cBLnOYGFmYcaLfv383zfz/7hNKApu3DijFYmMAMv3h81/lfQwPHuMxhAUUFbjB/2cvfhZ0saaHMptoMrCzgUQ+f4Vo+T15xd894ISA1wTG7wH5NK6TWZiHugXMNPcBy1D3ASttfQAQYADCE7PREUA/jAAAAABJRU5ErkJggg==","css":".xkit-notification-notification-block-button {\n\tposition: absolute;\n\tright: 35px; top: 7px;\n\tbackground: rgba(255,255,255,.38) !important;\n\tdisplay: none;\n\tcolor: #3d546b !important;\n\tfont-weight: bold;\n\tfont-size: 9px !important;\n\tpadding: 0px 2px; border-radius: 2px;\n\ttext-decoration: none;\n\ttext-transform: uppercase !important;\n\tline-height: 12px !important; height: 12px !important;\n}\n\n[data-xkit-notificationblock-blocked] {\n\tdisplay: none;\n}\n\n.notification:hover .xkit-notification-notification-block-button {\n\tdisplay: block;\n}\n\n.xkit-notification-notification-block-button:hover {\n\tbackground-color: rgba(255,255,255,.75) !important;\n}\n","title":"NotificationBlock","description":"Blocks notifications from a post","developer":"new-xkit","version":"1.4.2","details":"One post got way too popular and now just annoying you? Click on the notification block icon on that post to hide the notifications from that post. If you have Go-To-Dash installed, you can click on a notification, then click View button on top-right corner to quickly go back to the post on your dashboard.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/notifications_plus.json b/Extensions/dist/notifications_plus.json new file mode 100644 index 000000000..ae6b388a1 --- /dev/null +++ b/Extensions/dist/notifications_plus.json @@ -0,0 +1 @@ +{"id":"notifications_plus","script":"//* TITLE Notifications+ **//\n//* VERSION 1.5.7 **//\n//* DESCRIPTION Enhances the notifications **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n//* DETAILS This extension replaces both XPreview and Only Replies extensions of XKit 6. Using this, you can hover over notifications to get post notes, and toggle the option that dims non-reply notifications. **//\n//* SLOW true **//\n\nXKit.extensions.notifications_plus = new Object({\n\n\trunning: false,\n\tslow: true,\n\tapiKey: XKit.api_key,\n\n\tlast_post_id: \"\",\n\tlast_post_notes: 0,\n\tcurrent_post_id: \"\",\n\n\tpreferences: {\n\t\t\"sep_0\": {\n\t\t\ttext: \"FollowDot\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"follow_glow\": {\n\t\t\ttext: \"Highlight the dashboard notifications from people I follow\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"sep_1\": {\n\t\t\ttext: \"XPreview\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"show_notes\": {\n\t\t\ttext: \"Show notes when I hover on a notification\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"show_bigger_preview\": {\n\t\t\ttext: \"Show bigger preview when I hover on a notification\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"sep_4\": {\n\t\t\ttext: \"Dim Notifications\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"only_replies\": {\n\t\t\ttext: \"Dim non-reply notifications\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"dont_dim_on_reblogs\": {\n\t\t\ttext: \"Don't dim notifications on reblogs with new text\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tslow: true\n\t\t},\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (XKit.extensions.notifications_plus.preferences.only_replies.value === true) {\n\t\t\tXKit.tools.add_css(\"ol#posts .notification { opacity: 0.29; } ol#posts .notification_answer, ol#posts .notification_reply, ol#posts .notification_photo_reply ol#posts .notification:hover { opacity: 1; } \", \"notifications_plus_only_replies\");\n\t\t}\n\n\t\tif (XKit.extensions.notifications_plus.preferences.dont_dim_on_reblogs.value === true) {\n\t\t\tXKit.post_listener.add(\"notifications_plus\", XKit.extensions.notifications_plus.dedim);\n\t\t\tXKit.extensions.notifications_plus.dedim();\n\t\t}\n\n\t\tif (XKit.interface.where().dashboard === true || XKit.interface.where().channel === true) {\n\n\t\t\tif (XKit.extensions.notifications_plus.preferences.follow_glow.value === true) {\n\t\t\t\tXKit.post_listener.add(\"notifications_plus\", XKit.extensions.notifications_plus.follow_glow);\n\t\t\t\tXKit.extensions.notifications_plus.follow_glow();\n\t\t\t}\n\n\t\t}\n\n\t\tif (XKit.extensions.notifications_plus.preferences.show_notes.value === true) {\n\t\t\tXKit.tools.init_css(\"notifications_plus\");\n\t\t\tXKit.extensions.notifications_plus.xpreview_init();\n\t\t}\n\t},\n\n\tfollow_glow: function() {\n\n\t\t$(\".notification\").not(\".notifications-follow-glow-plus-done\").each(function() {\n\n\t\t\t$(this).addClass(\"notifications-follow-glow-plus-done\");\n\n\t\t\tvar check_div = $(this).find(\".control.avatar_frame\");\n\n\t\t\tif (typeof $(check_div).attr('data-tumblelog-popover') !== \"undefined\") {\n\n\t\t\t\tvar u_obj = JSON.parse($(check_div).attr('data-tumblelog-popover'));\n\n\t\t\t\tif (u_obj.following === true) {\n\n\t\t\t\t\t$(this).addClass(\"xkit-notifications-plus-follow-glow\");\n\t\t\t\t\t$(this).append(\"
     
    \");\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Probably old notifications.\n\n\t\t\t\tif ($(this).hasClass(\"xkit_notification_follower_is_friend\")) {\n\n\t\t\t\t\t$(this).addClass(\"xkit-notifications-plus-follow-glow\");\n\t\t\t\t\t$(this).append(\"
     
    \");\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t});\n\n\t},\n\n\tdedim: function() {\n\n\t\t$(\".notification_reblog\").not(\".notifications-plus-done\").each(function() {\n\n\t\t\t$(this).addClass(\".notifications-plus-done\");\n\t\t\tif ($(this).find(\"blockquote\").length > 0) {\n\t\t\t\t$(this).css(\"opacity\", \"1\");\n\t\t\t}\n\n\t\t});\n\n\t},\n\n\txpreview_init: function() {\n\n\t\tif (XKit.extensions.notifications_plus.preferences.show_bigger_preview.value === true) {\n\t\t\t$(\"body\").append(\"
    ♥ 302
    \");\n\t\t} else {\n\t\t\t$(\"body\").append(\"
    ♥ 302
    \");\n\t\t}\n\n\t\t$(document).on(\"mouseenter\", \".notification, .ui_note\", function() {\n\t\t\tXKit.extensions.notifications_plus.xpreview_show($(this));\n\t\t});\n\n\t\t$(document).on(\"mouseleave\", \".notification, .ui_note\", function(e) {\n\t\t\t$(\"#xpreview-container\").css(\"display\", \"none\");\n\t\t});\n\n\t},\n\n\txpreview_show: function(obj) {\n\n\t\t/*var obj = $(e.target);\n\n\t\tif ($(obj).hasClass(\"notification\") !== true) {\n\t\t\tobj = $(obj).parentsUntil('#posts')[0];\n\t\t}*/\n\n\t\t// get post URL.\n\t\tvar post_url = $(obj).find(\".preview_frame\").attr('href');\n\t\tif ($(obj).hasClass(\"ui_note\") === true) {\n\t\t\tpost_url = $(obj).find(\".part_glass\").attr('href');\n\t\t}\n\n\t\tif ($(obj).hasClass(\"is_follower\") === true) { return; }\n\n\t\tvar using_preview = false;\n\n\t\tif (XKit.extensions.notifications_plus.preferences.show_bigger_preview.value === true) {\n\t\t\tif ($(obj).hasClass(\"ui_note\") === true) {\n\t\t\t\tif ($(obj).find(\".ui_post_badge\").hasClass(\"photo\")) {\n\t\t\t\t\tusing_preview = true;\n\t\t\t\t\tvar m_preview = $(obj).find(\".ui_post_badge\").css(\"background-image\");\n\t\t\t\t\tm_preview = m_preview.substring(4, m_preview.length - 1);\n\t\t\t\t\tm_preview = XKit.tools.replace_all(m_preview, \"\\\\\\\"\", \"\");\n\t\t\t\t\t$(\"#xpreview-image\").attr('src', m_preview);\n\t\t\t\t\t$(\"#xpreview-image\").css(\"display\", \"block\");\n\t\t\t\t\t$(\"#xpreview-container\").addClass(\"with-preview\");\n\t\t\t\t} else {\n\t\t\t\t\t$(\"#xpreview-container\").removeClass(\"with-preview\");\n\t\t\t\t\t$(\"#xpreview-image\").css(\"display\", \"none\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!$(obj).find(\".preview_frame\").hasClass(\"icon\")) {\n\t\t\t\t\t$(\"#xpreview-image\").attr('src', $(obj).find(\".preview_frame\").find(\"img\").attr('src'));\n\t\t\t\t\t$(\"#xpreview-image\").css(\"display\", \"block\");\n\t\t\t\t\t$(\"#xpreview-container\").addClass(\"with-preview\");\n\t\t\t\t\tusing_preview = true;\n\t\t\t\t} else {\n\t\t\t\t\t$(\"#xpreview-container\").removeClass(\"with-preview\");\n\t\t\t\t\t$(\"#xpreview-image\").css(\"display\", \"none\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (post_url === \"\" || typeof post_url === \"undefined\") {\n\t\t\t// XReply is here! (Compatibility with XKit 6)\n\t\t\tpost_url = $(obj).attr('data-old-href');\n\t\t\tif (post_url === \"\") {\n\t\t\t\t// Something awful happened.\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconsole.log(\"Notifications+: Post URL is \" + post_url);\n\n\t\t// Break it down.\n\t\tpost_url = post_url.replace(/https?:\\/\\//, '');\n\n\t\tvar parts = post_url.split('/');\n\t\tvar blog_id = parts[0];\n\t\tvar post_id = parts[2];\n\n\n\t\t// Position the window.\n\t\tvar offset = $(obj).offset();\n\t\t// Box position\n\t\tvar box_left = offset.left + $(obj).width();\n\n\t\tvar box_top = offset.top + 7;\n\t\tif (using_preview === true) {\n\t\t\tbox_top = offset.top - 34;\n\t\t}\n\t\t$(\"#xpreview-container\").css(\"top\", box_top + \"px\");\n\t\t$(\"#xpreview-container\").css(\"left\", box_left + \"px\");\n\t\t$(\"#xpreview-container\").css(\"display\", \"block\");\n\t\t$(\"#xpreview-container\").addClass(\"loading\");\n\t\t$(\"#xpreview-notes\").html(\"loading\");\n\n\t\tconsole.log(\"Notifications+: Post ID is \" + post_id + \" | blog_id = \" + blog_id);\n\n\t\tXKit.extensions.notifications_plus.xpreview_load(post_id, blog_id);\n\n\t},\n\n\txpreview_load: function(post_id, blog_id) {\n\n\t\tXKit.extensions.notifications_plus.current_post_id = post_id;\n\n\t\tif (XKit.extensions.notifications_plus.last_post === post_id) {\n\t\t\t$(\"#xpreview-notes\").html(\"♥ \" + XKit.extensions.notifications_plus.last_post_notes);\n\t\t\t$(\"#xpreview-container\").removeClass(\"loading\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (blog_id === \"\") {\n\t\t\tconsole.log(\"Can't do XPreview, no blog_id\");\n\t\t\t$(\"#xpreview-container\").css(\"display\", \"none\");\n\t\t\t$(\"#xpreview-container\").removeClass(\"loading\");\n\t\t\treturn;\n\t\t}\n\n\t\tvar api_url = \"https://api.tumblr.com/v2/blog/\" + blog_id + \"/posts\" + \"?api_key=\" + XKit.extensions.notifications_plus.apiKey + \"&id=\" + post_id;\n\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: api_url,\n\t\t\tjson: true,\n\t\t\tonerror: function() {\n\t\t\t\tconsole.log(\"Can not load page to load notes.\");\n\t\t\t},\n\t\t\tonload: function(response) {\n\t\t\t\ttry {\n\t\t\t\t\tvar data = JSON.parse(response.responseText).response;\n\t\t\t\t\t$(\"#xpreview-container\").removeClass(\"loading\");\n\t\t\t\t\t$(\"#xpreview-notes\").html(\"♥ \" + data.posts[0].note_count);\n\t\t\t\t\tXKit.extensions.notifications_plus.last_post = post_id;\n\t\t\t\t\tXKit.extensions.notifications_plus.last_post_notes = data.posts[0].note_count;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.error(e.message);\n\t\t\t\t}\n\n\t\t\t}\n\t\t});\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.post_listener.remove(\"notifications_plus\");\n\t\tXKit.tools.remove_css(\"notifications_plus_only_replies\");\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyRUE5M0U2NTZDRjQxMUUzOUM1NkIzMjQ0OERGQUU5RCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyRUE5M0U2NDZDRjQxMUUzOUM1NkIzMjQ0OERGQUU5RCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTE4QkRBRjU5ODYxRUUyRjREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","css":"#xpreview-notes {\n\theight: 24px; line-height: 24px;\n\ttext-align: center;\n\tcolor: #1f5a80;\n\tfont-size: 12px;\n\ttext-shadow: 0px 1px 0px rgba(255,255,255,0.44);\n}\n#xpreview-container.loading {\n\topacity: 0.55;\n}\n\n#xpreview-container.with-preview {\n\n\theight: 105px;\n\n}\n\n#xpreview-container.with-preview #xpreview-notes {\n\n\tposition: absolute;\n\twidth: 100%;\n\tbottom: 2px;\n\tleft: 0px;\n\n}\n\n#xpreview-image {\n\n\twidth: 72px;\n\theight: 72px;\n\tborder-radius: 4px;\n\tposition: absolute;\n\ttop: 4px; left: 4px;\n\tbox-shadow: 0px 0px 1px 0px rgba(0,0,0,0.44), 0px 1px 3px rgba(0,0,0,0.21);\n\n}\n\n#xpreview-container {\n\tposition: absolute;\n\tdisplay: none;\n\tbackground: #88b7d5;\n\tborder: 1px solid #c2e1f5;\n\ttop: 30px; left: 30px;\n\twidth: 80px; height: 24px;\n\tborder-radius: 4px;\n\tbox-shadow: 0px 1px 2px rgba(0,0,0,0.22);\n}\n\n.xkit-notifications-plus-follow-glow {\n\n\tbackground: rgba(255,255,255,0.08);\n\n}\n\n.xkit-notifications-plus-follow-dot {\n\n\tposition: absolute;\n\twidth: 5px;\n\theight: 5px;\n\tbackground: #3399ff;\n\ttop: 20px;\n\tleft: 0px;\n\tz-index: 10;\n\tborder-radius: 40px;\n\tborder: 1px solid rgba(0,0,0,0.31);\n\n}\n\n#xpreview-container:after, #xpreview-container:before {\n\tright: 100%;\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n\n#xpreview-container:after {\n\tborder-color: rgba(136, 183, 213, 0);\n\tborder-right-color: #88b7d5;\n\tborder-width: 7px;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n#xpreview-container:before {\n\tborder-color: rgba(194, 225, 245, 0);\n\tborder-right-color: #c2e1f5;\n\tborder-width: 8px;\n\ttop: 50%;\n\tmargin-top: -9px;\n}","title":"Notifications+","description":"Enhances the notifications","developer":"STUDIOXENIX","version":"1.5.7","details":"This extension replaces both XPreview and Only Replies extensions of XKit 6. Using this, you can hover over notifications to get post notes, and toggle the option that dims non-reply notifications.","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/old_blue.json b/Extensions/dist/old_blue.json new file mode 100644 index 000000000..fc1e56149 --- /dev/null +++ b/Extensions/dist/old_blue.json @@ -0,0 +1 @@ +{"id":"old_blue","script":"//* TITLE Old Blue **//\n//* VERSION 2.1.5 **//\n//* DESCRIPTION No more dark blue background! **//\n//* DETAILS Reverts the colour scheme and font to that of 2018 Tumblr. Overrides any Tumblr-provided color palettes. **//\n//* DEVELOPER New-XKit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.old_blue = new Object({\n\n\trunning: false,\n\n\tpreferences: {\n\t\told_font: {\n\t\t\ttext: \"Use the old font family\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\told_font_size: {\n\t\t\ttext: \"Set the base font size back to 14px\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tif (XKit.interface.is_tumblr_page()) {\n\t\t\tif (!XKit.page.react) {\n\t\t\t\tXKit.tools.init_css(\"old_blue\");\n\t\t\t} else {\n\t\t\t\tconst old_font_family_rule = this.preferences.old_font.value ? '--font-family: \"Helvetica Neue\", \"HelveticaNeue\", Helvetica, Arial, sans-serif' : '';\n\t\t\t\tconst old_font_size_rule = this.preferences.old_font_size.value ? ':root { --base-font-size: 14px !important; }' : '';\n\n\t\t\t\tXKit.tools.add_css(`\n\t\t\t\t\t.xkit--react {\n\t\t\t\t\t\t--rgb-white: 255, 255, 255;\n\t\t\t\t\t\t--rgb-white-on-dark: 191, 191, 191;\n\t\t\t\t\t\t--rgb-black: 68, 68, 68;\n\n\t\t\t\t\t\t--navy: 54, 70, 93;\n\t\t\t\t\t\t--red: 217, 94, 64;\n\t\t\t\t\t\t--orange: 242, 153, 46;\n\t\t\t\t\t\t--yellow: 232, 215, 56;\n\t\t\t\t\t\t--green: 86, 188, 138;\n\t\t\t\t\t\t--blue: 82, 158, 204;\n\t\t\t\t\t\t--purple: 167, 125, 194;\n\t\t\t\t\t\t--pink: 116, 128, 137;\n\n\t\t\t\t\t\t--deprecated-accent: 82, 158, 204;\n\t\t\t\t\t\t--secondary-accent: 229, 231, 234;\n\t\t\t\t\t\t--follow: 243, 248, 251;\n\n\t\t\t\t\t\t--white: var(--rgb-white);\n\t\t\t\t\t\t--white-on-dark: var(--rgb-white-on-dark);\n\t\t\t\t\t\t--black: var(--rgb-black);\n\n\t\t\t\t\t\t--transparent-white-65: rgba(var(--rgb-white-on-dark), 0.65);\n\t\t\t\t\t\t--transparent-white-40: rgba(var(--rgb-white-on-dark), 0.4);\n\t\t\t\t\t\t--transparent-white-25: rgba(var(--rgb-white-on-dark), 0.25);\n\t\t\t\t\t\t--transparent-white-13: rgba(var(--rgb-white-on-dark), 0.13);\n\t\t\t\t\t\t--transparent-white-7: rgba(var(--rgb-white-on-dark), 0.07);\n\n\t\t\t\t\t\t--gray-65: rgba(var(--rgb-black), 0.65);\n\t\t\t\t\t\t--gray-40: rgba(var(--rgb-black), 0.4);\n\t\t\t\t\t\t--gray-25: rgba(var(--rgb-black), 0.25);\n\t\t\t\t\t\t--gray-13: rgba(var(--rgb-black), 0.13);\n\t\t\t\t\t\t--gray-7: rgba(var(--rgb-black), 0.07);\n\n\t\t\t\t\t\t${old_font_family_rule}\n\t\t\t\t\t}\n\n\t\t\t\t\t${old_font_size_rule}\n\t\t\t\t`, \"old_blue\");\n\t\t\t}\n\t\t}\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.tools.remove_css(\"old_blue\");\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjEuNWRHWFIAAABeSURBVGhD7c8BCQAgEAAxUxnhW3z/GsYYwsEK7NzZrxXQCmgFtAJaAa2AVkAroBXQCmgFtAJaAa2AVkAroBXQCmgFtAJaAa2AVkAroBXQCmgFtAJaAa2AVkD7PDD7AO0ekMT8f38lAAAAAElFTkSuQmCC","css":":root {\n\t--old-blue: #36465d;\n\t--old-accent: #529ecc;\n\t--old-red: #d95e40;\n\t--old-green: #56bc8a;\n\t--old-purple: #a77dc2;\n\t--old-orange: #f2992e;\n\t--old-grey: #8f8f8f;\n\t--old-vidgrey: #748089;\n\t--old-text: #444;\n}\n\n/* global.css */\n\n.chrome.white[disabled],\n.chrome.white[disabled]:active {\n\tcolor: var(--old-grey);\n}\n\n.chrome.green {\n\tborder-color: var(--old-green);\n\tbackground: var(--old-green);\n}\n\n.chrome.green.disabled,\n.chrome.green.disabled:active,\n.chrome.green[disabled],\n.chrome.green[disabled]:active {\n\tbackground: var(--old-green);\n}\n\n.chrome.red,\n.chrome.red.ui_button {\n\tborder-color: var(--old-red);\n\tbackground: var(--old-red);\n}\n\n.chrome.red.disabled,\n.chrome.red.disabled:active,\n.chrome.red[disabled],\n.chrome.red[disabled]:active {\n\tbackground: var(--old-red);\n}\n\n.chrome.blue {\n\tborder-color: var(--old-accent);\n\tbackground: var(--old-accent);\n}\n\n.chrome.blue.disabled,\n.chrome.blue.disabled:active,\n.chrome.blue[disabled],\n.chrome.blue[disabled]:active {\n\tbackground: var(--old-accent);\n}\n\n.chrome.other_blue {\n\tborder-color: var(--old-accent);\n\tbackground: var(--old-accent);\n}\n\n.sponsored_label {\n\tcolor: var(--old-grey);\n}\n\n#tab_switching .tab_blog .tab_notice {\n\tbackground-color: var(--old-accent);\n}\n\n.tab_post_type .post_type_icon {\n\tbackground-image: url(\"https://new-xkit.github.io/XKit/Extensions/dist/old_blue/quick_compose_sprite.png\");\n}\n\n@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {\n\t.tab_post_type .post_type_icon {\n\t\tbackground-image: url(\"https://new-xkit.github.io/XKit/Extensions/dist/old_blue/quick_compose_sprite_2x.png\");\n\t\tbackground-size: 200px 700px;\n\t}\n}\n\n.flat_select select:focus ~ .icon {\n\tcolor: var(--old-accent);\n}\n\n.flat_radio input[type=\"radio\"]:focus ~ .flat_radio_marker {\n\tborder-color: var(--old-accent);\n}\n\n.flat_radio input[type=\"radio\"]:checked:focus ~ .flat_radio_marker {\n\tbackground-color: var(--old-accent);\n}\n\n.binary_switch input[type=\"checkbox\"]:checked ~ .binary_switch_track {\n\tbackground: var(--old-accent);\n}\n\n#tumblelog_select .txt {\n\tcolor: var(--old-grey);\n}\n\n.split .chrome.blue.ui_disabled,\n.split .chrome.blue.ui_disabled:active,\n.split .chrome.blue[disabled],\n.split .chrome.blue[disabled]:active {\n\tbackground: var(--old-accent);\n}\n\n#post_header .reblog_source {\n\tcolor: var(--old-grey);\n}\n\n#post_header .reblog_source a {\n\tcolor: var(--old-grey);\n}\n\n.input_field label {\n\tcolor: var(--old-grey);\n}\n\n#post_form .advanced_post_options .option input.placeholder {\n\tcolor: var(--old-grey);\n}\n\n#post_form .advanced_post_options .option input::-webkit-input-placeholder {\n\tcolor: var(--old-grey);\n}\n\n#post_form .advanced_post_options .option input:-moz-placeholder {\n\tcolor: var(--old-grey);\n}\n\n#post_form .editor_note {\n\tcolor: var(--old-grey);\n}\n\n.tag_editor {\n\tcolor: var(--old-grey);\n}\n\nlabel.optional {\n\tcolor: var(--old-grey);\n}\n\n#post_form::-webkit-input-placeholder {\n\tcolor: var(--old-grey);\n}\n\n#post_form .placeholder {\n\tcolor: var(--old-grey);\n}\n\n#post_form input:-moz-placeholder,\n#post_form textarea:-moz-placeholder {\n\tcolor: var(--old-grey);\n}\n\n#post_content ul.info {\n\tcolor: var(--old-accent);\n}\n\n#post_content .post_type::-webkit-input-placeholder {\n\tcolor: var(--old-grey);\n}\n\n#post_content .post_type::-moz-placeholder {\n\tcolor: var(--old-grey);\n}\n\n.inset_label .label {\n\tcolor: var(--old-grey);\n}\n\n.file_upload {\n\tcolor: var(--old-grey);\n}\n\n.audio_tabs li a {\n\tcolor: var(--old-grey);\n}\n\n.audio_search_error {\n\tcolor: var(--old-grey);\n}\n\n.audio-search-with-copyright {\n\tcolor: var(--old-accent);\n}\n\n.audio_search_results li .artist:before {\n\tcontent: '— ';\n}\n\n#upload_tos {\n\tcolor: var(--old-grey);\n}\n\n#upload_tos a {\n\tcolor: var(--old-grey);\n}\n\n.video_preview_loading {\n\tcolor: var(--old-grey);\n}\n\n.btn_remove {\n\tcolor: var(--old-grey);\n}\n\n.control_reblog_tree .btn_show_tree {\n\tcolor: var(--old-grey);\n}\n\n.ui_peepr_glass {\n\tbackground-color: rgba(54,70,93,0.95);\n}\n\n.ui_peepr_glass.opaque {\n\tbackground-color: var(--old-blue);\n}\n\nbody.flag--always-opaque-peepr .ui_peepr_glass {\n\tbackground-color: var(--old-blue);\n}\n\n.indash_header_wrapper .editable_text {\n\tborder-color: var(--old-accent);\n}\n\n.indash_header_wrapper .avatar .popover .avatar_shape.selected {\n\tcolor: var(--old-accent);\n}\n\n\n/* dashboard.css */\n\n.notification .notification_right .preview_frame.audio,.ui_post_badge.audio {\n background-color: var(--old-purple);\n}\n\n.notification .notification_right .preview_frame.conversation,.ui_post_badge.conversation {\n background-color: var(--old-accent);\n}\n\n.notification .notification_right .preview_frame.link,.ui_post_badge.link {\n background-color: var(--old-green);\n}\n\n.notification_like .avatar_frame::before,.notes .note.like .avatar_frame::before,.ui_avatar .frame.like::before {\n background: var(--old-red);\n}\n\n.notification_follower .avatar_frame::before,.notification_group_member .avatar_frame::before,.notes .note.follower .avatar_frame::before,.ui_avatar .frame.follower::before {\n background: var(--old-accent);\n}\n\n.notification_reblog .avatar_frame::before,.notes .note.reblog .avatar_frame::before,.ui_avatar .frame.reblog::before {\n background: var(--old-green);\n}\n\n.notification_user_mention .avatar_frame::before,.notes .note.user_mention .avatar_frame::before,.ui_avatar .frame.user_mention::before,.ui_avatar .frame.note_mention::before {\n background: var(--old-purple);\n}\n\n.post.new_post .new_post_label {\n color: #696969;\n}\n\n.new_post_label i.icon_post_text {\n color: var(--old-text);\n}\n\n.new_post_label i.icon_post_photo {\n color: var(--old-red);\n}\n\n.new_post_label i.icon_post_quote {\n color: var(--old-orange);\n}\n\n.new_post_label i.icon_post_link {\n color: var(--old-green);\n}\n\n.new_post_label i.icon_post_chat {\n color: var(--old-accent);\n}\n\n.new_post_label i.icon_post_audio {\n color: var(--old-purple);\n}\n\n.new_post_label i.icon_post_video {\n color: var(--old-vidgrey);\n}\n\n.new_post_label i.icon_money_bubble {\n color: var(--old-green);\n}\n\n.video_preview.no_thumbnail {\n background-color: #afb5be;\n}\n\n.post_full .post_header,.post_full .post_header .post_info .post_info_link {\n color: var(--old-grey);\n}\n\n.post_full .post_header .post_info .post_info_link:first-child {\n color: var(--old-text);\n}\n\n.post_full .post_info .post_info_fence .reblog_source .post_info_link {\n color: var(--old-grey);\n}\n\n.post_full .post_header_discover_button {\n color: #b0b0b0;\n}\n.post_full .post_tags,.post_full .post_tags a {\n color: var(--old-grey);\n}\n\n.post_full .post_tags .post_tag {\n color: var(--old-grey);\n}\n\n.post_full .post_tags .post_tag.post_tag_color_4,.post_full .post_tags .post_tag.post_tag_color_4:active,.post_full .post_tags .post_tag.post_tag_color_4:hover {\n color: var(--old-accent);\n}\n\n.post_full .post_footer {\n color: var(--old-grey);\n}\n\n.post_full .post_header_text_link {\n color: var(--old-grey);\n font-weight: bold;\n text-decoration: none;\n}\n\n.post_micro.is_audio .post_content {\n background: var(--old-purple);\n}\n\n.post_brick .post_tags .post_tag {\n color: var(--old-grey);\n display: inline-block;\n}\n\n.post_brick .post_tags .post_tag.post_tag_color_4,.post_brick .post_tags .post_tag.post_tag_color_4:active,.post_brick .post_tags .post_tag.post_tag_color_4:hover {\n color: var(--old-accent);\n}\n\n.post_brick .post_footer {\n color: var(--old-grey);\n}\n\n.post_brick.is_video .post_media .no_poster::before,.post_brick.is_regular .post_media .no_poster::before {\n background: #afb5be;\n}\n\n.post_brick.is_link .link-button.link-button--title-over-image .publisher>span::before {\n background: var(--old-green);\n}\n\n.radar .radar_controls .note_count>a {\n color: var(--old-grey);\n}\n\n.radar .radar_tumblelog_label .name {\n color: rgba(255,255,255,0.5);\n}\n\n.radar .radar_tumblelog_label .subheading {\n color: rgba(255,255,255,0.3);\n}\n\n.radar.radar_type_quote .header_flag {\n background: var(--old-orange);\n}\n\n.radar .radar_footer .radar_avatar::before {\n background-image: linear-gradient(to right, rgba(54,70,93,0), var(--old-blue));\n}\n\n.radar .radar_button {\n color: var(--old-grey);\n}\n\n.radar .radar_button.reblog.reblogged {\n color: var(--old-green);\n}\n\n.radar .radar_button.like.liked::before {\n color: var(--old-red);\n}\n\n.takeover-container .sponsored-day-video-container .sponsored-day-video-cta {\n color: var(--old-accent);\n}\n\n@keyframes flash {\n 0% {\n\tcolor: var(--old-accent);\n\tbackground-color: #fff;\n }\n\n 100% {\n\tcolor: #fff;\n\tbackground-color: var(--old-accent);\n }\n}\n\n.takeover-container .sponsored-day-media-section .sponsored-day-text-section {\n background-color: rgba(54,70,93,0.4);\n}\n\n.gdpr-guce-announcement .gdpr-guce-manage-options {\n color: var(--old-orange);\n}\n\n.gdpr-guce-announcement .gdpr-guce-accept-defaults {\n background-color: var(--old-orange);\n}\n\n\n.project-x-filtered-view-banner,.project-x-announcement {\n background: var(--old-accent);\n}\n\n\n.project-x-filtered-view-banner .actions .project-x-more-details,.project-x-announcement .actions .project-x-more-details {\n color: var(--old-accent);\n}\n\n.project-x-filtered-view-announcement {\n background: var(--old-accent);\n}\n\n/* global.build.css */\n\n.white.tx-button {\n border-color: rgba(0,0,0,.2);\n background-color: #fff;\n color: var(--old-grey);\n}\n\n.white.tx-button:focus {\n border-color: rgba(0,0,0,.1);\n background-color: #fafafa;\n color: hsla(0,0%,56%,.9);\n}\n\n.white.tx-button:active {\n border-color: rgba(0,0,0,.2);\n background-color: #f5f5f5;\n color: hsla(0,0%,56%,.8);\n}\n\n.white.disabled.active.tx-button,.white.disabled.tx-button,.white[disabled].tx-button,.white[disabled].tx-button:active {\n border-color: #fff;\n background-color: #fff;\n color: hsla(0,0%,56%,.5);\n cursor: default;\n}\n\n .tumblr-blue.tx-button {\n border-color: var(--old-blue);\n background-color: var(--old-blue);\n color: #fff;\n}\n\n.tumblr-blue.tx-button:focus {\n border-color: #324157;\n background-color: #324157;\n color: hsla(0,0%,100%,.9);\n}\n\n.tumblr-blue.tx-button:active {\n border-color: #2f3c50;\n background-color: #2f3c50;\n color: hsla(0,0%,100%,.8);\n}\n\n.tumblr-blue.disabled.active.tx-button,.tumblr-blue.disabled.tx-button,.tumblr-blue[disabled].tx-button,.tumblr-blue[disabled].tx-button:active {\n border-color: var(--old-blue);\n background-color: var(--old-blue);\n color: hsla(0,0%,100%,.5);\n cursor: default;\n}\n\n .red.tx-button {\n border-color: var(--old-red);\n background-color: var(--old-red);\n color: #fff;\n}\n\n.red.tx-button:focus {\n border-color: #d75737;\n background-color: #d75737;\n color: hsla(0,0%,100%,.9);\n}\n\n.red.tx-button:active {\n border-color: #d6502f;\n background-color: #d6502f;\n color: hsla(0,0%,100%,.8);\n}\n\n.red.disabled.active.tx-button,.red.disabled.tx-button,.red[disabled].tx-button,.red[disabled].tx-button:active {\n border-color: var(--old-red);\n background-color: var(--old-red);\n color: hsla(0,0%,100%,.5);\n cursor: default;\n}\n\n .orange.tx-button {\n border-color: var(--old-orange);\n background-color: var(--old-orange);\n color: #fff;\n}\n\n.orange.tx-button:focus {\n border-color: #f19424;\n background-color: #f19424;\n color: hsla(0,0%,100%,.9);\n}\n\n.orange.tx-button:active {\n border-color: #f1901b;\n background-color: #f1901b;\n color: hsla(0,0%,100%,.8);\n}\n\n.orange.disabled.active.tx-button,.orange.disabled.tx-button,.orange[disabled].tx-button,.orange[disabled].tx-button:active {\n border-color: var(--old-orange);\n background-color: var(--old-orange);\n color: hsla(0,0%,100%,.5);\n cursor: default;\n}\n\n .green.tx-button {\n border-color: var(--old-green);\n background-color: var(--old-green);\n color: #fff;\n}\n\n.green.tx-button:focus {\n border-color: #4fb985;\n background-color: #4fb985;\n color: hsla(0,0%,100%,.9);\n}\n\n.green.tx-button:active {\n border-color: #48b680;\n background-color: #48b680;\n color: hsla(0,0%,100%,.8);\n}\n\n.green.disabled.active.tx-button,.green.disabled.tx-button,.green[disabled].tx-button,.green[disabled].tx-button:active {\n border-color: var(--old-green);\n background-color: var(--old-green);\n color: hsla(0,0%,100%,.5);\n cursor: default;\n}\n\n.blue.tx-button {\n border-color: var(--old-accent);\n background-color: var(--old-accent);\n color: #fff;\n}\n\n.blue.tx-button:focus {\n border-color: #4a9aca;\n background-color: #4a9aca;\n color: hsla(0,0%,100%,.9);\n}\n\n.blue.tx-button:active {\n border-color: #4295c7;\n background-color: #4295c7;\n color: hsla(0,0%,100%,.8);\n}\n\n.blue.disabled.active.tx-button,.blue.disabled.tx-button,.blue[disabled].tx-button,.blue[disabled].tx-button:active {\n border-color: var(--old-accent);\n background-color: var(--old-accent);\n color: hsla(0,0%,100%,.5);\n cursor: default;\n}\n\n.purple.tx-button {\n border-color: var(--old-purple);\n background-color: var(--old-purple);\n color: #fff;\n}\n\n.purple.tx-button:focus {\n border-color: #a276bf;\n background-color: #a276bf;\n color: hsla(0,0%,100%,.9);\n}\n\n.purple.tx-button:active {\n border-color: #9e6fbb;\n background-color: #9e6fbb;\n color: hsla(0,0%,100%,.8);\n}\n\n.purple.disabled.active.tx-button,.purple.disabled.tx-button,.purple[disabled].tx-button,.purple[disabled].tx-button:active {\n border-color: var(--old-purple);\n background-color: var(--old-purple);\n color: hsla(0,0%,100%,.5);\n cursor: default;\n}\n\n\nbody {\n color: var(--old-text);\n}\n\na {\n color: var(--old-text);\n}\n\n.tab_notice {\n background-color: var(--old-accent);\n}\n\n.selected .tab_notice {\n background: var(--old-accent);\n}\n\n.tab-notice--outlined {\n border-color: var(--old-blue);\n}\n\n.blog_menu .tab_notice {\n background-color: var(--old-accent);\n}\n\n.blog_menu .tab_notice .tab_notice_value {\n color: var(--old-blue);\n}\n\n.identity {\n background-color: var(--old-blue);\n}\n\n.l-container.l-container--two-column-dashboard .l-content,\n.l-container.l-container--two-column .l-content {\n background-color: var(--old-blue);\n}\n\n.l-container.l-container--two-column-dashboard .right_column,\n.l-container.l-container--two-column .right_column {\n background-color: var(--old-blue);\n}\n\n.l-container.l-container--two-column-dashboard .left_column {\n background-color: var(--old-blue);\n}\n\n.l-container.l-container--flex .l-content {\n background-color: var(--old-blue);\n}\n\n.identity .right_column:after {\n background: linear-gradient(180deg,var(--old-blue),rgba(54,70,93,0));\n}\n\n.identity .right_column .small_text {\n color: hsla(0,0%,100%,.4);\n}\n\n.identity .controls_section li.account_header,.identity .controls_section li.contributors_header,.identity .controls_section li.editors_header,.identity .controls_section li.section_header {\n padding: 0 10px;\n color: hsla(0,0%,100%,.25);\n font-size: 12px;\n text-transform: uppercase;\n}\n\n.identity .controls_section .delete_all_messages {\n color: hsla(0,0%,100%,.25);\n}\n\n.identity .controls_section .item:hover .follow:hover {\n background: var(--old-accent);\n}\n\n.identity .controls_section a .count {\n color: hsla(0,0%,100%,.25);\n}\n\n.identity .controls_section .sub_control {\n color: hsla(0,0%,100%,.25);\n}\n\n.identity .controls_section .open_blog .open_blog_link {\n color: hsla(0,0%,100%,.25);\n}\n\n.identity .controls_section.user_list li .follow_list_item_blog:before {\n background-image: linear-gradient(90deg,rgba(54,70,93,0),var(--old-blue));\n border-right: 5px solid var(--old-blue);\n}\n\n.identity .controls_section.user_list li .follow_list_item_blog .tumblelog_title {\n color: hsla(0,0%,100%,.6);\n}\n\n.identity .controls_section.user_list li .follow_list_item_blog .tumblelog_name {\n color: hsla(0,0%,100%,.25);\n}\n\n.identity .controls_section.user_list li:active .follow_list_item_blog:before,.identity .controls_section.user_list li:hover .follow_list_item_blog:before {\n background-image: linear-gradient(90deg,rgba(68,83,104,0),#445368);\n border-right: 5px solid #445368;\n}\n\n.identity .controls_section.follow_list.recommended_tumblelogs>li.item {\n border-bottom: 1px solid hsla(0,0%,100%,.07);\n}\n\n.form-container .survey-result .highlight {\n margin-bottom: 14px;\n font-weight: 700;\n color: var(--old-red);\n}\n\n.form-container .form-row.checkmark-row .option-radio:checked+.option-label:after {\n color: var(--old-accent);\n}\n\n.dynamic-fields .remove-url-button {\n background-color: var(--old-red);\n}\n\n.flag--one-true-post .post-micro .post-content--link {\n background-color: var(--old-green);\n}\n\n.flag--one-true-post .post-audio-block.post-audio--error {\n background-color: var(--old-red);\n}\n\n.flag--one-true-post .post-reblog-button.post-reblog-button--reblogged .icon {\n color: var(--old-green);\n}\n\n.flag--one-true-post .post-like-button.post-like-button--liked .icon {\n color: var(--old-red);\n}\n\n.flag--one-true-post .post-like-heart-animation.like {\n color: var(--old-red);\n}\n\n.flag--one-true-post .post-permalink {\n border-top-color: var(--old-blue);\n border-right-color: var(--old-blue);\n}\n\n.flag--one-true-post .post:hover .post-permalink {\n background-color: var(--old-green);\n}\n\n.flag--one-true-post .follow-button--worded .follow-text {\n color: var(--old-accent);\n}\n\n\n.cta-blue-button {\n background-color: var(--old-accent);\n border-color: var(--old-accent);\n}\n\n.cta-blue-button .tsp-opacity-overlay {\n border-color: var(--old-accent);\n}\n\n.cta-blue-button .cta-color-applied {\n color: var(--old-accent);\n transition: color .4s;\n}\n\n.cta-green-button {\n background-color: var(--old-green);\n border-color: var(--old-green);\n}\n\n.cta-green-button .tsp-opacity-overlay {\n border-color: var(--old-green);\n}\n\n.cta-green-button .cta-color-applied {\n color: var(--old-green);\n}\n\n.cta-purple-button {\n background-color: var(--old-purple);\n border-color: var(--old-purple);\n}\n\n.cta-purple-button .tsp-opacity-overlay {\n border-color: var(--old-purple);\n}\n\n.cta-purple-button .cta-color-applied {\n color: var(--old-purple);\n}\n\n.form-container.success .success-message .message-text .message-link {\n color: var(--old-accent);\n}\n\n.form-container-static label.image-upload,.form-container label.image-upload {\n color: var(--old-grey);\n}\n\n.form-container-static .sub-label,.form-container .sub-label {\n color: var(--old-grey);\n}\n\n.form-container-static .error-message,.form-container .error-message {\n color: var(--old-red);\n}\n\n.form-container-static .language-notice,.form-container .language-notice {\n color: var(--old-red);\n}\n\n.drawer-error-tag {\n background-color: var(--old-red);\n}\n\n.loader-bar .bar.red {\n background: var(--old-red);\n}\n\n.loader-bar .bar.orange {\n background: var(--old-orange);\n}\n\n.loader-bar .bar.green {\n background: var(--old-green);\n}\n\n.loader-bar .bar.purple {\n background: var(--old-purple);\n}\n\n.audio-player {\n background: var(--old-purple);\n}\n\n.popover--base-overlay {\n background: var(--old-blue);\n}\n\n.popover_header {\n color: var(--old-grey);\n}\n\n.popover_menu_item small {\n color: var(--old-grey);\n}\n\n.search_popover .search_results_section .search_subheading {\n color: var(--old-grey);\n}\n\n.search_popover .result .result_link .go-to-blog {\n font-weight: unset;\n}\n\n.popover_share_social .share_form.embed .share_label,.popover_share_social .share_form.facebook .share_label,.popover_share_social .share_form.twitter .share_label {\n color: var(--old-grey);\n}\n\n.popover_share_social .share_form.twitter .character_count.character-limit {\n color: var(--old-red);\n}\n\n.popover_share_social .share_form .reply_to {\n color: var(--old-grey);\n}\n\n.popover_share_social .status .status_message {\n color: var(--old-grey);\n}\n\n.tumblelog_popover .recommended_blogs .tumblelog_info_heading {\n color: var(--old-grey);\n}\n\n.tumblelog_popover .recommended_blogs .name h4 {\n color: var(--old-grey);\n}\n\n.info_popover .popover_inner ul li.label {\n color: var(--old-grey);\n}\n\n.info_popover .popover_inner ul li.web-subscribe-how-to {\n color: var(--old-grey);\n}\n\n.popover_vendor .popover_menu_item:hover {\n color: var(--old-blue);\n}\n\n.popover_vendor .popover_menu_item:hover .subtext,.popover_vendor .popover_menu_item:hover .subtext-email {\n color: var(--old-blue);\n}\n\n.post_avatar {\n background-color: var(--old-blue);\n}\n\n.post_avatar.flat {\n border-color: var(--old-blue);\n}\n\n.post_avatar.lighter_blue {\n background-color: var(--old-blue);\n}\n\n.post_avatar .post_avatar_link {\n background-color: var(--old-blue);\n}\n\n.post .post_header .post_info_link {\n color: var(--old-grey);\n}\n\n.post .post_info .reblog_icon {\n color: var(--old-grey);\n}\n\n.post .post_content_inner.safemode,.post .post_content_inner.tagfiltering {\n color: var(--old-grey);\n}\n\n.post .post_content_inner.safemode .link,.post .post_content_inner.tagfiltering .link {\n color: var(--old-accent);\n}\n\n.post_controls .post_control:before {\n color: var(--old-grey);\n}\n\n.post_controls .post_control.like.liked:before {\n color: var(--old-red);\n}\n\n.post_controls .post_control.reblog.reblogged:before {\n color: var(--old-green);\n}\n\n.post .post_tags_inner.dragging .post_tag:hover {\n color: var(--old-grey);\n}\n\n.post .post_tags .post_tag,\n.post .post_tags a {\n color: var(--old-grey);\n}\n\n.post-content-text .tmblr-truncated .tmblr-truncated-link,.post-content-text .tmblr-truncated:after,.post .post_body .tmblr-truncated .tmblr-truncated-link,.post .post_body .tmblr-truncated:after,.reblog-content .tmblr-truncated .tmblr-truncated-link,.reblog-content .tmblr-truncated:after {\n color: var(--old-accent);\n}\n\n.post .post-source-footer {\n color: var(--old-grey);\n}\n\n.post .post-source-footer a.post-source-link {\n color: var(--old-grey);\n}\n\n.post .recommendation-reason-link {\n color: var(--old-red);\n}\n\n.post_full.has_pce.pce_ads_cpi .cpi_install_button,.post_full.has_pce.pce_ads_cpi .cpi_install_button:active {\n background: var(--old-green);\n}\n\n.post .dockable_video_embed .post_header .post_info_tumblelog {\n color: var(--old-grey);\n}\n\n.post .dockable_video_embed .post_info .post_info_link {\n color: var(--old-grey);\n}\n\n.post .post_reblog_poof {\n font-size: 100px;\n color: var(--old-green);\n}\n\n.post .post_animated_heart,.standalone-ad-container .post_animated_heart {\n color: var(--old-red);\n}\n\n.post .post_animated_heart.unliked,.standalone-ad-container .post_animated_heart.unliked {\n color: var(--old-grey);\n}\n\n.post_full.is_link .link-button.link-button--title-over-image .publisher>span:before {\n background: var(--old-green);\n}\n\n.post_full .post_permalink {\n border-top-color: var(--old-blue);\n border-right-color: var(--old-blue);\n}\n\n.timeline-yam-plus-ad-container .section_header {\n color: var(--old-grey);\n}\n\n.blog-activity .blog-activity--empty {\n color: var(--old-grey);\n}\n\n.blog-activity .blog-activity-more {\n color: var(--old-grey);\n}\n\n.ask-form .ask-character-count.count-warning {\n color: var(--old-orange);\n}\n.ask-form .ask-character-count.count-danger {\n color: var(--old-red);\n}\n\n.binary-switch input[type=checkbox]:checked~.binary-switch-track {\n background: var(--old-accent);\n}\n\n.blog-selector-container .selected-blog .caret.is-open {\n color: var(--old-accent);\n}\n\n.blog-selector-container .selected-blog .caret.has-badge {\n background: var(--old-accent);\n}\n\n.ui_dialog_lock {\n background: rgba(54,70,93,.95);\n}\n\n.ui_dialog .text a {\n color: var(--old-accent);\n}\n\n.ui_dialog .buttons .ui_button {\n margin: 0;\n font-size: 16px;\n font-weight: 700;\n}\n\n.ui_dialog .chrome.blue {\n background-image: none;\n background-color: var(--old-accent);\n}\n\n.discover_actions_discover .elevator,.search_actions_search .elevator {\n background-color: rgba(54,70,93,.85);\n}\n\n.plus-follow-button {\n background: hsla(0,0%,100%,.2);\n color: var(--old-blue);\n}\n\n.plus-follow-button.blue,.plus-follow-button:hover {\n background: var(--old-accent);\n}\n\n.reblog_follow_button .follow-text,.worded-follow-button .follow-text {\n color: var(--old-accent);\n}\n\n\n.popover--gif-search .gif-search-results .gif-search-result:nth-child(odd) {\n background-color: var(--old-green);\n}\n\n.popover--gif-search .gif-search-results .gif-search-result:nth-child(8n) {\n background-color: var(--old-accent);\n}\n\n.popover--gif-search .gif-search-results .gif-search-result:nth-child(2n) {\n background-color: var(--old-red);\n}\n\n.popover--gif-search .gif-search-results .gif-search-result:nth-child(3n) {\n background-color: var(--old-orange);\n}\n\n.popover--gif-search .gif-search-results .gif-search-result:nth-child(5n) {\n background-color: var(--old-green);\n}\n\n.popover--gif-search .gif-search-results .gif-search-result:nth-child(7n) {\n background-color: var(--old-accent);\n}\n\n.popover--gif-search .gif-search-results .gif-search-result:nth-child(5n) {\n background-color: var(--old-purple);\n}\n\n.popover--gif-search .gif-search-results .gif-search-result:nth-child(8n) {\n background-color: var(--old-red);\n}\n\n.popover--gif-search .gif-search-results .gif-search-result:nth-child(12n) {\n background-color: var(--old-orange);\n}\n\n.popover--gif-search .gif-search-results .gif-search-result:nth-child(18n) {\n background-color: var(--old-green);\n}\n\n.blue#glass_overlay,.blue#hello_glass,.blue.glass {\n background: rgba(54,70,93,.95);\n}\n\n.show.color.plexi {\n background: rgba(54,70,93,.95);\n}\n\n.logged-out-header .signup-button {\n border: 1px solid var(--old-accent);\n background-color: var(--old-accent);\n}\n\n.logged-out-header .signup-button:focus {\n border-color: #4a9aca;\n background-color: #4a9aca;\n color: hsla(0,0%,100%,.9);\n}\n\n.logged-out-header .signup-button:active {\n border-color: #4295c7;\n background-color: #4295c7;\n color: hsla(0,0%,100%,.8);\n}\n\n.logged-out-header .disabled.active.signup-button,.logged-out-header .disabled.signup-button,.logged-out-header [disabled].signup-button,.logged-out-header [disabled].signup-button:active {\n border-color: var(--old-accent);\n background-color: var(--old-accent);\n color: hsla(0,0%,100%,.5);\n cursor: default;\n}\n\n.flag--is-dev .logged-out-header .signup-button:not([role=button]):not(button),.logged-out-header .flag--is-dev .signup-button:not([role=button]):not(button) {\n padding: 50px 70px!important;\n border: 10px dotted!important;\n background-color: var(--old-red)!important;\n font-size: 40px!important;\n}\n\n.logged-out-header .login-button {\n border-color: rgba(0,0,0,.2);\n background-color: hsla(0,0%,100%,.6);\n color: var(--old-blue);\n}\n\n.logged-out-header .login-button:focus {\n color: rgba(54,70,93,.9);\n}\n\n.logged-out-header .login-button:active {\n border-color: rgba(0,0,0,.2);\n background-color: hsla(0,0%,96%,.6);\n color: rgba(54,70,93,.8);\n}\n\n.logged-out-header .login-button.disabled,.logged-out-header .login-button.disabled.active,.logged-out-header .login-button[disabled],.logged-out-header .login-button[disabled]:active {\n border-color: hsla(0,0%,100%,.6);\n background-color: hsla(0,0%,100%,.6);\n color: rgba(54,70,93,.5);\n cursor: default;\n}\n\n.tab-bar-container .tab_notice {\n color: var(--old-blue);\n}\n\n.tab_bar .tab_anchor {\n font-size: 0;\n color: #fff;\n float: right;\n opacity: .5;\n}\n\n.l-header-container--refresh {\n background-color: var(--old-blue);\n}\n\n.messaging-share-post .messaging-share-post-message .compose-text-input-container .submit-button .submit {\n color: var(--old-accent);\n}\n\n.messaging-share-post .messaging-share-post-result .container {\n color: var(--old-accent);\n}\n\n.messaging-share-post .messaging-share-post-search .selected-blog {\n background: var(--old-accent);\n}\n\n.messaging-share-post .messaging-share-post-external-networks .is-focused.messaging-share-post-external-network {\n color: var(--old-accent);\n}\n\n.messaging-share-post .messaging-share-post-external-network-subview-wrapper>.external-network-subview .external-network-form-subview .form-result.form-result--fail {\n color: var(--old-red);\n}\n\n.messaging-inbox .inbox-conversations .is-unread.inbox-conversation .name-container {\n color: var(--old-accent);\n}\n\n.messaging-inbox .inbox-compose-toggle .compose-start {\n color: var(--old-accent);\n}\n\n.flag--messaging-new-empty-inbox .messaging-inbox .inbox-row .info-container .send-link,.messaging-inbox .flag--messaging-new-empty-inbox .inbox-row .info-container .send-link {\n color: var(--old-accent);\n}\n\n.messaging-conversation--open .conversation-compose .compose-text-input-container .submit-button .submit {\n color: var(--old-accent);\n}\n\n.messaging-conversation--open .conversation-header:not(.has-image) {\n background-color: var(--old-accent);\n}\n\n.messaging-conversation--open .conversation-message .retry-button {\n color: var(--old-red);\n}\n\n.messaging-conversation--open .conversation-message .retry-button.is-pending {\n color: var(--old-orange);\n}\n\n.messaging-conversation--open .conversation-message-post .conversation-message-post--gif.message-container .icon,.messaging-conversation--open .conversation-message-post .conversation-message-post--photo.message-container .icon,.messaging-conversation--open .conversation-message-post .conversation-message-post--photoset.message-container .icon {\n background: var(--old-red);\n}\n\n.messaging-conversation--open .conversation-message-post .conversation-message-post--quote.message-container .icon {\n background: var(--old-orange);\n}\n\n.messaging-conversation--open .conversation-message-post .conversation-message-post--link.message-container .icon {\n background: var(--old-green);\n}\n\n.messaging-conversation--open .conversation-message-post .conversation-message-post--chat.message-container .icon {\n background: var(--old-accent);\n}\n\n.messaging-conversation--open .conversation-message-post .conversation-message-post--video.message-container .icon {\n background: var(--old-vidgrey);\n}\n\n.messaging-conversation--open .conversation-message-safemode-post .message-bubble {\n width: 100%;\n font-size: 13px;\n color: var(--old-grey);\n}\n\n.mobile-banner {\n background: var(--old-green);\n}\n\n.mobile-banner .mobile-banner-button.secondary-cta {\n border-color: var(--old-blue);\n background-color: var(--old-blue);\n color: var(--old-green);\n}\n\n.mobile-banner .mobile-banner-button.secondary-cta:focus {\n border-color: #324157;\n background-color: #324157;\n color: rgba(86,188,138,.9);\n}\n\n.mobile-banner .mobile-banner-button.secondary-cta:active {\n border-color: #2f3c50;\n background-color: #2f3c50;\n color: rgba(86,188,138,.8);\n}\n\n.mobile-banner .mobile-banner-button.secondary-cta.disabled,.mobile-banner .mobile-banner-button.secondary-cta.disabled.active,.mobile-banner .mobile-banner-button.secondary-cta[disabled],.mobile-banner .mobile-banner-button.secondary-cta[disabled]:active {\n border-color: var(--old-blue);\n background-color: var(--old-blue);\n color: rgba(86,188,138,.5);\n}\n\n\n.app-gate .mobile-banner {\n background-color: var(--old-blue);\n}\n\n.mobile-banner.pop {\n background: var(--old-purple);\n}\n\n.ui_notes .date_header,.ui_notes .date_header.date_activity {\n color: var(--old-grey);\n}\n\n.ui_notes .activity-notification .activity-notification__activity .activity-notification__activity_message .activity-notification__activity_reply .activity-notification__activity_reply_link {\n color: var(--old-accent);\n}\n\n.ui_notes .activity-notification .activity-notification__activity .activity-notification__activity_message .activity-notification__activity_response blockquote {\n color: var(--old-grey);\n}\n\n.ui_notes .activity-notification .activity-notification__icon .note_follow {\n color: var(--old-accent);\n}\n\n.ui_notes .activity-notification .activity-notification__icon .ui_post_badge.audio {\n background-color: var(--old-purple);\n}\n\n.ui_notes .activity-notification .activity-notification__icon .ui_post_badge.conversation {\n background-color: var(--old-accent);\n}\n\n\n.ui_notes .activity-notification .activity-notification__icon .ui_post_badge.link {\n background-color: var(--old-green);\n}\n\n.ui_notes .activity-notification .activity-notification__icon .ui_post_badge.quote {\n background-color: var(--old-orange);\n}\n\n.ui_notes .activity-notification.is_friend {\n color: var(--old-blue);\n}\n\n.ui_notes .activity-notification.is_friend .activity-notification__activity_main .activity,.ui_notes .activity-notification.is_friend .activity-notification__activity_main .activity a {\n color: var(--old-blue);\n}\n\n.ui_notes .activity-notification.is_friend .activity-notification__activity_main .summary {\n color: #afb5be;\n}\n\n.ui_notes .activity-notification.note_mention .activity-notification__activity .activity-notification__activity_message.conversational .activity-notification__activity_response blockquote,.ui_notes .activity-notification.user_mention .activity-notification__activity .activity-notification__activity_message.conversational .activity-notification__activity_response blockquote {\n color: #86909e;\n}\n\n.ui_notes .activity-notification:hover.is_friend {\n background-color: #f0f3f6;\n}\n\n.search_filter_items .popover_menu_item .icon_post_text_small {\n color: var(--old-text);\n}\n\n.search_filter_items .popover_menu_item .icon_post_photo_small {\n color: var(--old-red);\n}\n\n.search_filter_items .popover_menu_item .icon_post_quote_small {\n color: var(--old-orange);\n}\n\n.search_filter_items .popover_menu_item .icon_post_link_small {\n color: var(--old-green);\n}\n\n.search_filter_items .popover_menu_item .icon_post_chat_small {\n color: var(--old-accent);\n}\n\n.search_filter_items .popover_menu_item .icon_post_audio_small {\n color: var(--old-purple);\n}\n\n.search_filter_items .popover_menu_item .icon_post_video_small {\n color: var(--old-vidgrey);\n}\n\n.search_filter_items .popover_menu_item .icon_checkmark {\n color: var(--old-accent);\n}\n\n.peepr-body .indash_blog a.reblog_info {\n color: var(--old-grey);\n}\n\n.peepr-body .indash_blog a.source_info {\n color: var(--old-grey);\n}\n\n.peepr-body .indash_blog .post_notes_label {\n color: var(--old-grey);\n}\n\n.search_filter_items .popover_menu_item .icon_post_text_small {\n color: var(--old-text);\n}\n\n.search_filter_items .popover_menu_item .icon_post_photo_small {\n color: var(--old-red);\n}\n\n.search_filter_items .popover_menu_item .icon_post_quote_small {\n color: var(--old-orange);\n}\n\n.search_filter_items .popover_menu_item .icon_post_link_small {\n color: var(--old-green);\n}\n\n.search_filter_items .popover_menu_item .icon_post_chat_small {\n color: var(--old-accent);\n}\n\n.search_filter_items .popover_menu_item .icon_post_audio_small {\n color: var(--old-purple);\n}\n\n.search_filter_items .popover_menu_item .icon_post_video_small {\n color: var(--old-vidgrey);\n}\n\n.search_filter_items .popover_menu_item .icon_checkmark {\n color: var(--old-accent);\n}\n\n.overlay-container .indash_blog .overlay-wrapper .post_content_inner.safemode .link,.overlay-container .indash_blog .overlay-wrapper .post_content_inner.tagfiltering .link,.peepr-drawer.overlay-container .overlay-wrapper .post_content_inner.safemode .link,.peepr-drawer.overlay-container .overlay-wrapper .post_content_inner.tagfiltering .link {\n color: var(--old-accent);\n}\n\n.survey-body .tx-button {\n background-color: #fff;\n color: var(--old-accent);\n}\n\n.post-activity-header .return:before,.post-activity-header .tags-mode-button:before {\n color: var(--old-grey);\n}\n\n.is-followed.without-commentary.post-activity-note {\n border-color: #e5e7ea;\n}\n\n.like .post-activity-note-avatar .post-activity-avatar-link:after {\n background-color: var(--old-red);\n}\n\n.reblog .post-activity-note-avatar .post-activity-avatar-link:after {\n background-color: var(--old-green);\n}\n\n.answer .post-activity-note-avatar .post-activity-avatar-link:after,.reply .post-activity-note-avatar .post-activity-avatar-link:after {\n background-color: var(--old-accent);\n}\n\n.is-followed.with-commentary .post-activity-note-content {\n border-color: #e5e7ea;\n}\n\n.is-followed .post-activity-note-content .note-text {\n color: #86909e;\n}\n\n.is-followed .post-activity-note-content .note-text .note-text-link {\n color: var(--old-blue);\n}\n\n.is-followed .post-activity-note-content .note-added-tags,.is-followed .post-activity-note-content .note-added-text {\n color: var(--old-blue);\n}\n\n.post-activity-note-content .note-added-tags .tag,.post-activity-note-content .note-added-text .tag {\n color: var(--old-grey);\n}\n\n.post-activity-reply .submit {\n color: var(--old-accent);\n}\n\n.post-activity-header .subscription-status .outer {\n fill: var(--old-blue);\n}\n\n.post-activity-header .subscription-status .bolt {\n fill: var(--old-blue);\n}\n\n.post-activity-header .subscription-status.is-subscribed .inner {\n fill: var(--old-blue);\n}\n\n.post-forms-glass {\n background-color: rgba(54,70,93,.95);\n}\n\n.post-form--form.blocked {\n background-color: var(--old-accent);\n}\n\n.post-container {\n color: var(--old-text);\n}\n\n.post-container a {\n color: var(--old-text);\n}\n\n.post-form--tag-editor .tag-label {\n color: rgba(0,0,0,.3);\n}\n\n.post-form--tag-editor .tag-label.hover-style,.post-form--tag-editor .tag-label.selected {\n color: var(--old-accent);\n}\n\n.pop-menu input[type=text].field,.post-form input[type=text].field {\n color: var(--old-text);\n}\n\n.media-container .video-error {\n background-color: var(--old-vidgrey);\n}\n\n.media-container.audio-media-container .album-art-uploader .media-dropzone {\n color: var(--old-purple);\n}\n\n.media-container .remove-button {\n position: absolute;\n top: -7px;\n right: -7px;\n background-color: var(--old-red);\n border-color: var(--old-red);\n color: #fff;\n}\n\n.media-dropzone .media-url {\n color: var(--old-text);\n}\n\n.overlay-button.active .icon {\n color: var(--old-accent);\n}\n\n.pop-menu {\n color: var(--old-text);\n}\n\n.pop-menu .form-group .field.checkbox .help_text {\n color: var(--old-grey);\n}\n\n.post-form--header {\n color: var(--old-grey);\n}\n\n.post-form--header .tumblelog-select .caption {\n font-size: 13px;\n font-weight: 700;\n color: var(--old-text);\n}\n\n.post-form--header .tumblelog-select .reblog_source {\n opacity: .6;\n}\n\n.post-form--header .tumblelog-select .reblog_name {\n color: var(--old-grey);\n}\n\n.post-form--header .tumblelog-select .icon_arrow_carrot_down {\n color: var(--old-text);\n}\n\n.post-form--header .tumblelog-select .reblog-icon {\n color: var(--old-text);\n opacity: .5;\n}\n\n.post-form--controls .controls-container .post-form--save-button .split-button {\n display: inline-block;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n box-sizing: border-box;\n cursor: pointer;\n padding: 5px 7px;\n border-width: 1px;\n border-style: solid;\n border-radius: 2px;\n font-family: Helvetica Neue,HelveticaNeue,Helvetica,Arial,sans-serif;\n font-size: 14px;\n font-weight: 700;\n line-height: 1.4;\n text-decoration: none;\n background-color: var(--old-accent);\n color: #fff;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 0;\n border: 0;\n white-space: nowrap;\n}\n\n.post-form--controls .controls-container .post-form--save-button .split-button::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n.post-form--controls .controls-container .post-form--save-button .split-button:active {\n background-color: var(--old-accent);\n color: #fff;\n}\n\n.post-form--controls .controls-container .post-form--save-button .split-button .button-area,.post-form--controls .controls-container .post-form--save-button .split-button .dropdown-area {\n border-color: var(--old-accent);\n background-color: var(--old-accent);\n color: #fff;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.post-form--controls .controls-container .post-form--save-button .split-button .button-area:focus,.post-form--controls .controls-container .post-form--save-button .split-button .dropdown-area:focus {\n border-color: #4a9aca;\n background-color: #4a9aca;\n color: hsla(0,0%,100%,.9);\n}\n\n.post-form--controls .controls-container .post-form--save-button .split-button .button-area:active,.post-form--controls .controls-container .post-form--save-button .split-button .dropdown-area:active {\n border-color: #4295c7;\n background-color: #4295c7;\n color: hsla(0,0%,100%,.8);\n}\n\n.post-form--controls .controls-container .post-form--save-button .split-button .button-area.disabled,.post-form--controls .controls-container .post-form--save-button .split-button .button-area.disabled.active,.post-form--controls .controls-container .post-form--save-button .split-button .button-area[disabled],.post-form--controls .controls-container .post-form--save-button .split-button .button-area[disabled]:active,.post-form--controls .controls-container .post-form--save-button .split-button .dropdown-area.disabled,.post-form--controls .controls-container .post-form--save-button .split-button .dropdown-area.disabled.active,.post-form--controls .controls-container .post-form--save-button .split-button .dropdown-area[disabled],.post-form--controls .controls-container .post-form--save-button .split-button .dropdown-area[disabled]:active {\n border-color: var(--old-accent);\n background-color: var(--old-accent);\n color: hsla(0,0%,100%,.5);\n cursor: default;\n}\n\n.post-form--controls .controls-container .post-form--save-button .split-button .button-area {\n border-radius: 2px 0 0 2px;\n padding-left: 10px;\n padding-right: 10px;\n}\n\n.post-form--controls .controls-container .post-form--save-button .split-button .dropdown-area {\n position: relative;\n width: 25px;\n height: 100%;\n transition: width .15s cubic-bezier(.77,0,.175,1),opacity .15s cubic-bezier(.77,0,.175,1);\n border-radius: 0 2px 2px 0;\n font-size: 12px;\n line-height: 1.4;\n text-align: center;\n}\n\n.post-form--controls .controls-container .post-form--save-button .split-button .dropdown-area:before {\n content: \"\\EA07\";\n}\n\n.post-form--controls .controls-container .post-form--save-button .split-button .dropdown-area.slide-out {\n overflow: hidden;\n opacity: 0;\n width: 0;\n}\n\n.post-form--controls .controls-container .post-form--save-button .split-button .dropdown-area:after {\n display: block;\n position: absolute;\n top: 4px;\n bottom: 5px;\n left: 0;\n width: 1px;\n background: hsla(0,0%,100%,.3);\n content: \"\";\n}\n\n.flag--is-dev .post-form--controls .controls-container .post-form--save-button .split-button:not([role=button]):not(button) {\n padding: 50px 70px!important;\n border: 10px dotted!important;\n background-color: var(--old-red)!important;\n font-size: 40px!important;\n}\n\n.quote-field .editor-placeholder {\n color: #a2a2a2;\n}\n\n.post-composer_link-post .link-editor .editor {\n color: var(--old-green);\n}\n\n.post-composer_link-post.loaded .link-editor {\n background: var(--old-green);\n}\n\n.editor-placeholder,.editor-plaintext,.editor-richtext {\n color: var(--old-text);\n}\n\n.editor-placeholder {\n color: #a2a2a2;\n}\n\n.editor .over-bottom:after,.editor .over-top:before {\n background-color: var(--old-accent);\n}\n\n.editor .media-holder .media-killer {\n background-color: var(--old-red);\n border-color: var(--old-red);\n}\n\n.editor-slot .inline-controls .tray .post-form--inline-embed-field .editor-plaintext.invalid,.editor-slot .inline-controls .tray .post-form--inline-embed-field .invalid.editor-placeholder {\n color: var(--old-red);\n}\n\n.bubbles>div.active {\n background-color: var(--old-accent);\n}\n\n.html-mode .src-view {\n color: var(--old-text);\n}\n\n.control-reblog-tree .btn-show-tree {\n color: var(--old-grey);\n}\n\n.btn-remove {\n color: var(--old-grey);\n}\n\n[data-help-popover=inline-controls] .post-container-inner:after,[data-help-popover=inline-controls] .post-form--avatar:after {\n background: rgba(54,70,93,.95);\n}\n\n.popover--reblog-graph .reblog-graph-info-button {\n color: var(--old-accent);\n}\n\n.reblog-list-item .reblog-avatar.sub-icon-reblog:before {\n background: var(--old-green);\n}\n\n.control-reblog-trail .remove-button {\n background: var(--old-red);\n border-color: var(--old-red);\n}\n\n.ui_search {\n color: hsla(0,0%,100%,.6);\n}\n\n.ui_search .search_query {\n color: hsla(0,0%,100%,.6);\n background: rgba(0,0,0,.13);\n}\n\n.ui_search .search_query::-webkit-input-placeholder {\n color: hsla(0,0%,100%,.6);\n}\n\n.ui_search .search_query:-moz-placeholder,.ui_search .search_query::-moz-placeholder {\n color: hsla(0,0%,100%,.6);\n}\n\n.ui_search .search_query:-ms-input-placeholder {\n color: hsla(0,0%,100%,.6);\n}\n\n.ui_search.active .search_form_field:before,.ui_search.selected .search_form_field:before {\n color: var(--old-text);\n}\n\n.ui_search.active .search_query,.ui_search.selected .search_query {\n color: var(--old-text);\n}\n\n.ui_search.active .search_query::-webkit-input-placeholder,.ui_search.selected .search_query::-webkit-input-placeholder {\n color: var(--old-grey);\n}\n\n.ui_search.active .search_query:-moz-placeholder,.ui_search.active .search_query::-moz-placeholder,.ui_search.selected .search_query:-moz-placeholder,.ui_search.selected .search_query::-moz-placeholder {\n color: var(--old-grey);\n}\n\n.ui_search.active .search_query:-moz-placeholder,.ui_search.selected .search_query:-moz-placeholder {\n color: var(--old-grey);\n}\n\n.ui_search.active .search_query:-ms-input-placeholder,.ui_search.selected .search_query:-ms-input-placeholder {\n color: var(--old-grey);\n}\n\n.site-notification {\n background: var(--old-green);\n}\n\n.site-notification.site-notification-danger {\n background: var(--old-red);\n}\n\n.tab-post-type .post-type-icon {\n background-image: url(\"https://new-xkit.github.io/XKit/Extensions/dist/old_blue/quick_compose_sprite.png\");\n}\n\n@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min--moz-device-pixel-ratio:1.5),only screen and (min-resolution:1.5dppx),only screen and (min-resolution:144dpi) {\n .tab-post-type .post-type-icon {\n\tbackground-image: url(\"https://new-xkit.github.io/XKit/Extensions/dist/old_blue/quick_compose_sprite_2x.png\");\n\tbackground-size: 200px 700px;\n }\n}\n\n.search-text-ad .sponsored-header .sponsored-text {\n color: var(--old-grey);\n}\n\n.yam-plus-ad-container {\n background-color: #687486;\n}\n\n.yam-plus-ad-container .ad-bg.bg-orange {\n background-color: var(--old-orange);\n}\n\n.yam-plus-ad-container .ad-bg.bg-green {\n background-color: var(--old-green);\n}\n\n.yam-plus-ad-container .ad-bg.bg-blue {\n background-color: var(--old-accent);\n}\n\n.yam-plus-ad-container .ad-bg.bg-grey {\n background-color: #687486;\n}\n\n.yam-plus-ad-container .ad-bg.bg-purple {\n background-color: var(--old-purple);\n}\n\n.yam-plus-ad-container .ad-bg.bg-red {\n background-color: var(--old-red);\n}\n\n\n/* index.build.css */\n\n.promote-form .posts-form-container .icon_plus:hover {\n\tcolor: var(--old-accent);\n}\n\n.promote-form .posts-form-container .post-list li.promoted {\n\tborder-color: var(--old-green);\n}\n\n.promote-form .posts-form-container .post-list li.promoted .counter {\n\tbackground-color: var(--old-green);\n}\n\n.promote-form .campaign-container .ad-preview {\n\tbackground-color: var(--old-blue);\n}\n\n.rapid-recs-container .rapid-recs {\n\tbackground-image: linear-gradient(180deg,rgba(54,70,93,0) 0,var(--old-blue) 15%,var(--old-blue) 85%,rgba(54,70,93,0));\n}\n\n.rapid-recs-container .rapid-recs .rapid-rec-title {\n\tcolor: hsla(0,0%,100%,.25);\n}\n\n.remnant-units .remnant_ad .dismiss {\n\tbackground-color: var(--old-red);\n}\n\n.sidebar_link,\n.sidebar_link.explore_link {\n\tcolor: hsla(0,0%,100%,.6);\n}\n\n.standalone-ad-container .call-to-action {\n\tcolor: var(--old-accent);\n}\n\n.toastr .toast .item.post {\n\tbackground-color: var(--old-text);\n}\n\n.toastr .toast .item.question {\n\tbackground-color: var(--old-text);\n}\n\n.toastr .toast .item.quote {\n\tbackground-color: var(--old-orange);\n}\n\n.toastr .toast .item.link {\n\tbackground-color: var(--old-green);\n}\n\n.toastr .toast .item.chat {\n\tbackground-color: var(--old-accent);\n}\n\n.toastr .toast .item.audio {\n\tbackground-color: var(--old-purple);\n}\n\n.toastr .toast .item.video {\n\tbackground-color: var(--old-vidgrey);\n}\n\n.toastr .toast .crumb.like {\n\tbackground-color: var(--old-red);\n}\n\n.toastr .toast .crumb.blog-subscription {\n\tbackground-color: var(--old-orange);\n}\n\n.toastr .toast .crumb.reblog {\n\tbackground-color: var(--old-green);\n}\n\n.toastr .toast .crumb.answer {\n\tbackground-color: var(--old-accent);\n}\n\n.toastr .toast .crumb.follower {\n\tbackground-color: var(--old-accent);\n}\n\n.toastr .toast {\n\tbackground: var(--old-blue);\n}\n\n.post_control.tour_guide_element.like:before {\n\tcolor: var(--old-red);\n}\n\n.filter_popover .menu_heading {\n\tcolor: var(--old-grey);\n}\n\n.search_control_items .menu_item:hover {\n\tcolor: var(--old-blue);\n}\n\n.search_control_items .post_text_filter:hover {\n\tbackground: var(--old-text);\n}\n\n.search_control_items .post_text_filter .icon {\n\tcolor: var(--old-text);\n}\n\n.search_control_items .post_photo_filter:hover {\n\tbackground: var(--old-red);\n}\n\n.search_control_items .post_photo_filter .icon {\n\tcolor: var(--old-red);\n}\n\n.search_control_items .post_quote_filter:hover {\n\tbackground: var(--old-orange);\n}\n\n.search_control_items .post_quote_filter .icon {\n\tcolor: var(--old-orange);\n}\n\n.search_control_items .post_link_filter:hover {\n\tbackground: var(--old-green);\n}\n\n.search_control_items .post_link_filter .icon {\n\tcolor: var(--old-green);\n}\n\n.search_control_items .post_chat_filter:hover {\n\tbackground: var(--old-accent);\n}\n\n.search_control_items .post_chat_filter .icon {\n\tcolor: var(--old-accent);\n}\n\n.search_control_items .post_audio_filter:hover {\n\tbackground: var(--old-purple);\n}\n\n.search_control_items .post_audio_filter .icon {\n\tcolor: var(--old-purple);\n}\n\n.search_control_items .post_video_filter:hover {\n\tbackground: var(--old-vidgrey);\n}\n\n.search_control_items .post_video_filter .icon {\n\tcolor: var(--old-vidgrey);\n}\n\n.search_control_items .post_ask_filter:hover {\n\tbackground: var(--old-text);\n}\n\n.search_control_items .post_ask_filter .icon {\n\tcolor: var(--old-text);\n}\n\n/* non-computed */\n\n.search_results_container .tumblelog_mask_item {\n\tbackground-color: var(--old-blue);\n}\n\n.compose-button {\n\tfill: var(--old-accent);\n}\n","title":"Old Blue","description":"No more dark blue background!","developer":"New-XKit","version":"2.1.5","details":"Reverts the colour scheme and font to that of 2018 Tumblr. Overrides any Tumblr-provided color palettes.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/old_stats.json b/Extensions/dist/old_stats.json new file mode 100644 index 000000000..0ff1ed955 --- /dev/null +++ b/Extensions/dist/old_stats.json @@ -0,0 +1 @@ +{"id":"old_stats","script":"//* TITLE Old Stats **//\n//* VERSION 1.0.0 **//\n//* DESCRIPTION Blog stats where they were **//\n//* DEVELOPER New-XKit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.old_stats = new Object({\n\n\trunning: false,\n\tdone: false,\n\tblogs: {},\n\n\tpreferences: {\n\t\t\"iconify\": {\n\t\t\ttext: \"Put the icons back on posts/followers/etc links\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"switcher\": {\n\t\t\ttext: \"Show the blog switcher\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t}\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tif (this.preferences.iconify.value) {\n\t\t\tXKit.tools.init_css(\"old_stats\");\n\t\t}\n\t\tif (this.preferences.switcher.value) {\n\t\t\twindow.addEventListener(\"message\", this.messageListener);\n\t\t\tXKit.tools.add_css(`\n\t\t\t\t#old_stats_switcher::before {\n\t\t\t\t\tcontent: \"\\\\EA07\";\n\t\t\t\t\tfont-family: tumblr-icons, Blank;\n\t\t\t\t\tcolor: hsla(0,0%,100%,.6);\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\ttop: calc(50% - 0.5em);\n\t\t\t\t\tright: calc(10px + 0.5em);\n\t\t\t\t\ttransition: transform 0.1s;\n\t\t\t\t}\n\t\t\t\t#old_stats_switcher.active::before {\n\t\t\t\t\tcolor: unset;\n\t\t\t\t\ttransform: rotate(180deg);\n\t\t\t\t}\n\t\t\t\t.old_stats_blog { cursor: pointer; }`,\n\t\t\t\"old_stats_switcher\");\n\t\t}\n\t\tif ($(\"#dashboard_controls_open_blog\").length) {\n\t\t\tif (this.preferences.switcher.value) {\n\t\t\t\tthis.blogScraper();\n\t\t\t}\n\t\t} else if ($(\".recommended_tumblelogs\").length) {\n\t\t\tthis.fetchStats();\n\t\t}\n\t},\n\n\tfetchStats: function(blog) {\n\n\t\tvar page;\n\n\t\tif (blog) {\n\t\t\tpage = \"blog/\" + blog;\n\t\t} else {\n\t\t\tpage = \"likes\";\n\t\t}\n\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"https://www.tumblr.com/\" + page,\n\t\t\tonerror: function(response) {\n\t\t\t\tconsole.error(\"[Old Stats] Couldn't fetch blog info.\");\n\t\t\t},\n\t\t\tonload: function(response) {\n\t\t\t\t$(\"#dashboard_controls_open_blog, #dashboard_controls_open_blog + .small_links\").remove();\n\t\t\t\t$(\"#right_column\").prepend($(\".small_links\", response.responseText).css(\"margin\", \"0 0 18px\")).prepend($(\"#dashboard_controls_open_blog\", response.responseText));\n\t\t\t\t$(\"#dashboard_controls_open_blog .selected\").removeClass(\"selected\");\n\t\t\t\t$(\"#dashboard_controls_open_blog [data-sparkline]\").prepend('');\n\t\t\t\ttry {\n\t\t\t\t\tvar sparkline = JSON.parse($(\"#dashboard_controls_open_blog [data-sparkline]\").attr(\"data-sparkline\"));\n\t\t\t\t\tvar sparkmin = Math.min.apply(Math, sparkline);\n\t\t\t\t\tvar sparkpx = (Math.max.apply(Math, sparkline) - sparkmin) / 30;\n\t\t\t\t\tvar canvas = document.getElementById(\"old_stats_canvas\").getContext(\"2d\");\n\t\t\t\t\tcanvas.strokeStyle = \"#FFFFFF\";\n\t\t\t\t\tcanvas.lineWidth = 3.5;\n\t\t\t\t\tcanvas.moveTo(0, 30 - ((sparkline[0] - sparkmin) / sparkpx));\n\t\t\t\t\tfor (var i = 1; i < sparkline.length; i++) {\n\t\t\t\t\t\tcanvas.lineTo(i * (72 / sparkline.length), 30 - ((sparkline[i] - sparkmin) / sparkpx));\n\t\t\t\t\t\tcanvas.stroke();\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {} // No activity, no problem.\n\t\t\t\tif (XKit.extensions.old_stats.preferences.switcher.value) { XKit.extensions.old_stats.blogScraper(); }\n\t\t\t\tXKit.extensions.old_stats.done = true;\n\t\t\t}\n\t\t});\n\n\t},\n\n\tblogScraper: function() {\n\t\tif (Object.keys(this.blogs).length) { this.initSwitcher(); return; }\n\t\tXKit.tools.add_function(function() {\n\t\t\ttry {\n\t\t\t\tvar models = Tumblr.dashboardControls.allTumblelogs, blogs = {};\n\t\t\t\tmodels.filter(function(model) {\n\t\t\t\t\treturn model.attributes.hasOwnProperty(\"is_current\");\n\t\t\t\t}).forEach(function(model) {\n\t\t\t\t\tblogs[model.attributes.name] = model.attributes.directory_safe_title;\n\t\t\t\t});\n\t\t\t\twindow.postMessage({\n\t\t\t\t\txkit_blogs_with_names: blogs\n\t\t\t\t}, window.location.protocol + \"//\" + window.location.host);\n\t\t\t} catch (e) { console.error(e.message); }\n\t\t}, true);\n\t},\n\n\tmessageListener: function(e) {\n\t\tif (e.origin == window.location.protocol + \"//\" + window.location.host && e.data.hasOwnProperty(\"xkit_blogs_with_names\")) {\n\t\t\twindow.removeEventListener(\"message\", this.messageListener);\n\t\t\tXKit.extensions.old_stats.blogs = e.data.xkit_blogs_with_names;\n\t\t\tXKit.extensions.old_stats.initSwitcher();\n\t\t}\n\t},\n\n\tinitSwitcher: function() {\n\t\tvar blogs = this.blogs;\n\t\tif (!Object.keys(blogs).length) { return; }\n\n\t\t$(\".no_push.selected_blog\").append('');\n\n\t\tvar loading = false;\n\t\t$(\"#old_stats_switcher\").click(function() {\n\t\t\tif (document.selection) {\n\t\t\t\tdocument.selection.empty();\n\t\t\t} else if (window.getSelection) {\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t}\n\t\t\tif ($(this).hasClass(\"active\")) {\n\t\t\t\t$(\".old_stats_blog\").off(\"click\").remove();\n\t\t\t\tif (!loading) {\n\t\t\t\t\t$(\"#dashboard_controls_open_blog\").children().removeAttr(\"style\");\n\t\t\t\t\t$(\"#dashboard_controls_open_blog + .small_links\").removeAttr(\"style\").css(\"margin\", \"0 0 18px\");\n\t\t\t\t} else {\n\t\t\t\t\t$(\"#dashboard_controls_open_blog\").append(\n\t\t\t\t\t\t'
  • ' +\n\t\t\t\t\t\t\t'' +\n\t\t\t\t\t\t\t\t'
    Loading...
    ' +\n\t\t\t\t\t\t\t'
    ' +\n\t\t\t\t\t\t'
  • ');\n\t\t\t\t}\n\t\t\t\tloading = false;\n\t\t\t} else {\n\t\t\t\t$(\"#dashboard_controls_open_blog\").children(\":not(.selected_blog)\").css(\"display\", \"none\");\n\t\t\t\t$(\"#dashboard_controls_open_blog + .small_links\").css(\"display\", \"none\");\n\t\t\t\tvar current_blog = $(\".no_push.selected_blog .currently_selected_blog\").html(), do_append = false;\n\n\t\t\t\tfor (var x in blogs) {\n\t\t\t\t\tif (x == current_blog) { do_append = true; continue; }\n\t\t\t\t\tvar blog_html =\n\t\t\t\t\t\t'
  • ' +\n\t\t\t\t\t\t\t'
    ' +\n\t\t\t\t\t\t\t\t'' + x + '' +\n\t\t\t\t\t\t\t\t'' +\n\t\t\t\t\t\t\t\t\t'
    ' +\n\t\t\t\t\t\t\t\t\t\t'' + blogs[x] + '' +\n\t\t\t\t\t\t\t\t\t'
    ' +\n\t\t\t\t\t\t\t\t'
    ' +\n\t\t\t\t\t\t\t'
    ' +\n\t\t\t\t\t\t'
  • ';\n\t\t\t\t\tif (do_append) {\n\t\t\t\t\t\t$(\".no_push.selected_blog, .no_push.old_stats_blog\").last().after(blog_html);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(\".no_push.selected_blog, .no_push.old_stats_blog\").last().before(blog_html);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$(\".no_push.selected_blog, .no_push.old_stats_blog\").last().css(\"margin\", \"0 0 18px\");\n\n\t\t\t\t$(\".old_stats_blog\").click(function() {\n\t\t\t\t\t$(\".no_push.selected_blog .open_blog.with_subtitle\")[0].outerHTML = this.firstChild.outerHTML.replace(\"span\", \"a\");\n\t\t\t\t\tloading = true;\n\t\t\t\t\t$(\"#old_stats_switcher\").click();\n\t\t\t\t\tXKit.extensions.old_stats.fetchStats($(this).find(\".currently_selected_blog\").html());\n\t\t\t\t});\n\t\t\t}\n\t\t\t$(this).toggleClass(\"active\");\n\t\t});\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.tools.remove_css(\"old_stats\");\n\t\tif (this.done) {\n\t\t\t$(\"#dashboard_controls_open_blog, #dashboard_controls_open_blog + .small_links\").remove();\n\t\t}\n\t}\n});\n","file":"found","server":"up","errors":false,"css":".control-item.control-anchor .hide_overflow::before {\n\tdisplay: inline-block;\n\twidth: 25px;\n\tvertical-align: sub;\n\tmargin-right: 0.5em;\n\tfont: normal 24px/0 tumblr-icons, Blank;\n\ttext-align: center;\n}\n\n.control-item.control-anchor.posts .hide_overflow::before {\n\tcontent: \"\\EA8B\";\n}\n.control-item.control-anchor.followers .hide_overflow::before {\n\tcontent: \"\\EA44\";\n}\n.control-item.control-anchor.activity .hide_overflow::before {\n\tcontent: \"\\EA01\";\n}\n.control-item.control-anchor.members .hide_overflow::before {\n\tcontent: \"\\EA59\";\n}\n.control-item.control-anchor.drafts .hide_overflow::before {\n\tcontent: \"\\EA25\";\n}\n.control-item.control-anchor.processing .hide_overflow::before {\n\tcontent: \"\\EA8C\";\n}\n.control-item.control-anchor.queue .hide_overflow::before {\n\tcontent: \"\\EA8D\";\n\tmargin-left: -2px;\n\tpadding-right: 2px;\n}\n.control-item.control-anchor.review .hide_overflow::before {\n\tcontent: \"\\EABC\";\n}\n.control-item.control-anchor.customize .hide_overflow::before {\n\tcontent: \"\\EAB3\";\n}\n","title":"Old Stats","description":"Blog stats where they were","developer":"New-XKit","version":"1.0.0","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/one_click_postage.json b/Extensions/dist/one_click_postage.json new file mode 100644 index 000000000..f07cafa76 --- /dev/null +++ b/Extensions/dist/one_click_postage.json @@ -0,0 +1 @@ +{"id":"one_click_postage","script":"//* TITLE One-Click Postage **//\n//* VERSION 4.4.24 **//\n//* DESCRIPTION Lets you easily reblog, draft and queue posts **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.one_click_postage = new Object({\n\trunning: false,\n\n\tqq_icon: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzgxMzAzQzIwRDZGMTFFM0IyOTBDRDZCRDY3Qzk1QTkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzgxMzAzQzMwRDZGMTFFM0IyOTBDRDZCRDY3Qzk1QTkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDODEzMDNDMDBENkYxMUUzQjI5MENENkJENjdDOTVBOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDODEzMDNDMTBENkYxMUUzQjI5MENENkJENjdDOTVBOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpK36AkAAAFxSURBVHjalJSxS8NAFMZzJruuhSBCdHMISIcWhw4OAZfO/hHSySmFblnF2cH/wA6CDg5Oujg4dHJRUGinklWo1O/kO3h5Hkl88OOSd+++vHv3cma9XgfajDE9DEegD/ZBB8zBDDyCe6x7+rPQijlgCSjAwk7VsGBcUlkvhLrgukFEY+O7FTFmpIVeQQZiEHLM6NeCiRQrVEAe1Fuu4gtX+56qkRY6B8/gUNU3VzW0OsFYbU3bDeeOlVigtjze4PE7Ow3+ZzK+H7GPnM08CwzHXfTfAZ/fwFLF/+qsRKqhR+zO0xInnAuFbxWxs2NO2k7/VGJnYBt8gW/6liLe2VxnsQO25N/RYJnI7NY5U/AuJh6saAuxymk6pxUqwRCMOHnVIObts5SOiQi0mZU1Yt4/IBI1KkXd7PMm32MWt8PjvwB7QngKLuWX7OIXMOCX7PuUmbW/NWgjT+CkRsx7nxmRXcrMSm59gIAhuv6j7U37I8AABDEAB/datwYAAAAASUVORK5CYII=\",\n\tqq_ok_icon: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzNGRkUyQzUwRDcwMTFFM0IyOTBDRDZCRDY3Qzk1QTkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzNGRkUyQzYwRDcwMTFFM0IyOTBDRDZCRDY3Qzk1QTkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDODEzMDNDNDBENkYxMUUzQjI5MENENkJENjdDOTVBOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3M0ZGRTJDNDBENzAxMUUzQjI5MENENkJENjdDOTVBOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkDLUa4AAAG4SURBVHjalJQxSEJRFIafL/fcRNAKrIYSCsJBCWpwqK3WpgQ3IwgiQhKCJBocRBoFp5ptcwiqRYccJNxECgqkpWxsCPov/DdOh6fRgY93733n/Jx77rnXl72YdzwsAVIgCWIgBPqgAxrgGjSN4/lW5yfIr0SiIAPSIKj+hckayIIqqICedXCFcxwUwaGHkLYg/Yo7l7G4FjMZ5cCGCOiCdRDhDiKcd4WP8c9BMCrFMkooD2ZBHbyAL37rXM8rwYwVS7BGUqgg5iXQAstiraAE08gu4fLUgmJrBVWfabAExtV6QWzZxKdcHr+1Xed/Jv2TfvaRtY5HgE9laOwRvCn/mMuGtNb3EBtTtWux17R/yM+FsF3gqUk7ABPgk6fqMCtHJ2L7x9oUCICBWHsAc0Nq9qtEts8WwRNr8Q5uKfqXlcW4YcVqDN4Ee2CFNRplR2CG41dz+V1mNcngGr936kZ4CZ2IeRWvR9MvtjMQdRuIJg3zkEKsUVlkZHdVsU+Qqc8H2AZtcMP5FZ2fR2RohE6RVU9e9GOwQCGHWbVHiJganYF9CN3rx7HEDFe5xQDHDvtu6Esr7VuAAQC+Omj592980QAAAABJRU5ErkJggg==\",\n\n\tpreferences: {\n\t\t\"sep_-1\": {\n\t\t\ttext: \"Default Blog\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"default_blog\": {\n\t\t\ttext: \"Default blog for One-Click Postage\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\",\n\t\t\ttype: \"blog\",\n\t\t},\n\t\t\"sep_0\": {\n\t\t\ttext: \"Shortcuts Guide\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"enable_keyboard_shortcuts\": {\n\t\t\ttext: \"Use keyboard shortcuts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"enable_quick_queue\": {\n\t\t\ttext: \"Enable QuickQueue buttons on posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"enable_quick_blog_reblog\": {\n\t\t\ttext: \"Enable QuickReblog and QuickQueue on top right corner when I visit blogs\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\texperimental: true\n\t\t},\n\t\t\"sep_5\": {\n\t\t\ttext: \"AlreadyReblogged What is this?\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"enable_alreadyreblogged\": {\n\t\t\ttext: \"Enable AlreadyReblogged for posts I reblog, queue or draft\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"already_reblogged_limit\": {\n\t\t\ttext: \"Remember the last X posts reblogged\",\n\t\t\tdefault: \"a3000\",\n\t\t\tvalue: \"a3000\",\n\t\t\ttype: \"combo\",\n\t\t\tvalues: [\n\t\t\t\t\"10,000 Posts\", \"a10000\",\n\t\t\t\t\"5,000 Posts\", \"a5000\",\n\t\t\t\t\"Default (3,000)\", \"a3000\",\n\t\t\t\t\"1,500 Posts\", \"a1500\",\n\t\t\t\t\"1,000 Posts\", \"a1000\",\n\t\t\t\t\"500 Posts\", \"a500\",\n\t\t\t\t\"250 Posts\", \"a250\",\n\t\t\t\t\"4 Posts\", \"a4\",\n\t\t\t],\n\t\t},\n\t\t\"enable_hide_alreadyreblogged\": {\n\t\t\ttext: \"Hide posts if they are AlreadyReblogged on my dashboard\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"sep_1\": {\n\t\t\ttext: \"Popup Options\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"dont_scroll_quicktags\": {\n\t\t\ttext: \"Turn off scrolling on Quick Tags bundles\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"show_blog_selector\": {\n\t\t\ttext: \"Show blog selector\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"enable_popup_html\": {\n\t\t\ttext: \"Enable HTML in One-Click Postage popup\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"show_caption_remover\": {\n\t\t\ttext: \"Show the Remove Caption button\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"show_caption\": {\n\t\t\ttext: \"Show the Caption box\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"show_tag_remover\": {\n\t\t\ttext: \"Show the Clear Tags button\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"show_reverse_ui\": {\n\t\t\ttext: \"Use the Reverse UI on the popup-window (popup on top of reblog button)\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"show_small_ui\": {\n\t\t\ttext: \"Use the Slim User Interface on the pop-up window\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"show_social\": {\n\t\t\ttext: \"Show Post To Facebook and Twitter buttons\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"allow_resize\": {\n\t\t\ttext: \"Allow resizing of the caption box vertically\",\n\t\t\texperimental: true,\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"sep_2\": {\n\t\t\ttext: \"Notifications\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"dim_posts_after_reblog\": {\n\t\t\ttext: \"Turn the reblog button green after a successful reblog/queue/draft\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"dont_show_notifications\": {\n\t\t\ttext: \"Turn off the notifications displayed when successfully reblogged/queued/drafted\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"use_toasts\": {\n\t\t\ttext: \"Use tumblr-style notifications instead of XKit ones\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"sep_3\": {\n\t\t\ttext: \"Tagging options\",\n\t\t\ttype: \"separator\",\n\t\t}\n\t},\n\n\talready_reblogged: [],\n\tlast_object: {},\n\tlast_icon_object: {},\n\tlast_post_id: 0,\n\tignore_box_input_blurring: false,\n\tuser_on_box: false,\n\tmenu_closer_int: 0,\n\tdefault_blog_id: \"\",\n\tcaption_height: 90,\n\n\tauto_tagger: false,\n\tauto_tagger_preferences: \"\",\n\tauto_tagger_done: false,\n\n\tquick_tags: false,\n\n\tframe_run: function() {\n\t\tif (XKit.page.blog_frame && XKit.extensions.one_click_postage.preferences.enable_quick_blog_reblog.value) {\n\t\t\tXKit.extensions.one_click_postage.in_blog();\n\t\t}\n\t},\n\n\tin_blog: function() {\n\t\tif (XKit.iframe.reblog_button().length === 0) {return; }\n\n\t\tXKit.iframe.hide_button(XKit.iframe.reblog_button());\n\n\t\tXKit.tools.init_css(\"one_click_postage\");\n\n\t\tfunction button(type, label) {\n\t\t\treturn `\n\t\t\t\t\t ${label}\n\t\t\t\t\t`;\n\t\t}\n\n\t\tvar m_html = button(\"reblog\", \"One-Click Reblog\") +\n\t\t\t\t\t button(\"queue\", \"One-Click Queue\") +\n\t\t\t\t\t button(\"draft\", \"One-Click Draft\");\n\n\t\tXKit.iframe.reblog_button().after(m_html);\n\t\tXKit.iframe.size_frame_to_fit();\n\n\t\t$(\"#x1cpostage_in_blog_reblog\").click(function() {\n\t\t\tXKit.extensions.one_click_postage.in_blog_post($(this), 0, false);\n\t\t});\n\n\t\t$(\"#x1cpostage_in_blog_queue\").click(function() {\n\t\t\tXKit.extensions.one_click_postage.in_blog_post($(this), 2, false);\n\t\t});\n\n\t\t$(\"#x1cpostage_in_blog_draft\").click(function() {\n\t\t\tXKit.extensions.one_click_postage.in_blog_post($(this), 1, false);\n\t\t});\n\t},\n\n\tin_blog_post: function(obj, state, retry_mode) {\n\t\tif ($(obj).hasClass(\"xkit-button-working\") === true) { return; }\n\n\t\t$(obj).removeClass(\"xkit-button-error\");\n\t\t$(obj).removeClass(\"xkit-button-done\");\n\t\t$(obj).addClass(\"xkit-button-working\");\n\n\t\tvar post_id = XKit.iframe.single_post_id();\n\t\tvar form_key = XKit.iframe.form_key();\n\t\tvar reblog_key = XKit.iframe.reblog_button()[0].pathname.split('/')[4];\n\n\t\tvar m_blogs = XKit.tools.get_blogs();\n\t\tvar blog_id = \"\";\n\n\t\tif (!m_blogs) {\n\t\t\tXKit.window.show(\"Error\",\n\t\t\t\t\"Can't get list of current blogs - please visit dashboard first.\",\n\t\t\t\t\"error\",\n\t\t\t\t'
    OK
    '\n\t\t\t);\n\t\t\treturn;\n\t\t} else {\n\t\t\tfor (var i = 0; i < m_blogs.length; i++) {\n\t\t\t\tif (m_blogs[i] !== \"\") {\n\t\t\t\t\tblog_id = m_blogs[i];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tXKit.extensions.one_click_postage.blogs_list = XKit.tools.get_blogs();\n\n\t\tif (XKit.extensions.one_click_postage.preferences.default_blog.value !== \"\") {\n\t\t\tif (XKit.extensions.one_click_postage.blogs_list.indexOf(XKit.extensions.one_click_postage.preferences.default_blog.value) !== -1) {\n\t\t\t\tvar channel_id = XKit.extensions.one_click_postage.preferences.default_blog.value;\n\t\t\t\tblog_id = channel_id;\n\t\t\t} else {\n\t\t\t\t$(obj).removeClass(\"xkit-button-working\");\n\t\t\t\t$(obj).addClass(\"xkit-button-error\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar m_object = {\n\t\t\tchannel_id: blog_id,\n\t\t\treblog_id: post_id,\n\t\t\treblog_key: reblog_key,\n\t\t\tform_key: form_key,\n\t\t\tpost_type: \"\"\n\t\t};\n\n\t\tXKit.svc.post.fetch(m_object)\n\t\t\t.then(response => {\n\t\t\t\tlet responseData = response.json();\n\t\t\t\tif (responseData.errors === false) {\n\t\t\t\t\tthis.in_blog_process(responseData, state, obj, m_object, false);\n\t\t\t\t} else {\n\t\t\t\t\tthrow response;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tif (error.status == 403 && !retry_mode) {\n\t\t\t\t\tsetTimeout(() => this.in_blog_post(obj, state, true), 500);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.show_error(error, state);\n\t\t\t\t$(obj).removeClass(\"xkit-button-working\");\n\t\t\t\t$(obj).addClass(\"xkit-button-error\");\n\t\t\t});\n\t},\n\n\tin_blog_process: function(data, state, obj, _m_object, retry_mode) {\n\t\tvar m_object = {};\n\n\t\tm_object.form_key = _m_object.form_key;\n\t\tm_object.channel_id = _m_object.channel_id;\n\n\t\tm_object.detached = true;\n\n\t\tm_object.reblog = true;\n\t\tm_object.reblog_id = _m_object.reblog_id;\n\t\tm_object.reblog_key = _m_object.reblog_key;\n\n\t\tm_object.errors = false;\n\t\tm_object.created_post = data.created_post;\n\t\tm_object.context_page = data.post_context_page;\n\t\tm_object.post_context_page = data.post_context_page;\n\t\tm_object.silent = false;\n\n\t\tm_object.context_id = \"\";\n\t\tm_object.reblog_post_id = _m_object.reblog_id;\n\n\t\t// Not sure about this part:\n\t\tm_object[\"is_rich_text[one]\"] = \"0\";\n\t\tm_object[\"is_rich_text[two]\"] = \"1\";\n\t\tm_object[\"is_rich_text[three]\"] = \"0\";\n\n\t\tm_object[\"post[slug]\"] = \"\";\n\t\tm_object[\"post[draft_status]\"] = \"\";\n\t\tm_object[\"post[date]\"] = \"\";\n\n\t\tm_object[\"post[type]\"] = data.post.type;\n\n\t\tvar reblog_as_text = false;\n\n\t\tif (XKit.installed.check(\"reblog_as_text\") === true) {\n\t\t\tif (XKit.installed.enabled(\"reblog_as_text\") === true) {\n\t\t\t\treblog_as_text = true;\n\t\t\t}\n\t\t}\n\n\t\tif (reblog_as_text) {\n\t\t\ttry {\n\t\t\t\tif (data.post.can_reblog_as[0] === \"regular\") {\n\t\t\t\t\tm_object[\"post[type]\"] = \"regular\";\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.log(\"Can't read can_reblog_as....\");\n\t\t\t}\n\t\t}\n\n\t\tm_object[\"post[tags]\"] = \"\";\n\n\t\tif (typeof data.post.two === \"undefined\") {\n\t\t\tdata.post.two = \"\";\n\t\t}\n\n\t\tm_object[\"post[tags]\"] = this.get_auto_tagger_tags(data.post, state, false);\n\n\t\tm_object[\"post[publish_on]\"] = \"\";\n\t\tif (state === 0) {\n\t\t\tm_object[\"post[state]\"] = \"\";\n\t\t} else {\n\t\t\tm_object[\"post[state]\"] = state;\n\t\t}\n\t\tm_object.custom_tweet = \"\";\n\n\t\tXKit.interface.kitty.get(kitty_data => {\n\t\t\tif (kitty_data.errors === true) {\n\t\t\t\t// We fucked up for some reason.\n\t\t\t\tif (retry_mode !== true) {\n\t\t\t\t\tthis.in_blog_process(data, state, obj, m_object, true);\n\t\t\t\t} else {\n\t\t\t\t\tthis.show_error(new Error(\"Kitty request failed!\"), state);\n\t\t\t\t\t$(obj).removeClass(\"xkit-button-working\");\n\t\t\t\t\t$(obj).addClass(\"xkit-button-error\");\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tXKit.svc.post.update(m_object, kitty_data.kitten)\n\t\t\t\t.then(response => {\n\t\t\t\t\tlet responseData = response.json();\n\n\t\t\t\t\tif (responseData.errors) {\n\t\t\t\t\t\tthrow response;\n\t\t\t\t\t}\n\n\t\t\t\t\t$(obj).removeClass(\"xkit-button-working\");\n\t\t\t\t\t$(obj).addClass(\"xkit-button-done\");\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tXKit.interface.kitty.set(\"\");\n\n\t\t\t\t\tif (error.status == 403 && !retry_mode) {\n\t\t\t\t\t\tthis.in_blog_process(data, state, obj, m_object, true);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.show_error(error, state);\n\t\t\t\t\t$(obj).removeClass(\"xkit-button-working\");\n\t\t\t\t\t$(obj).addClass(\"xkit-button-error\");\n\t\t\t\t});\n\t\t});\n\t},\n\n\t/**\n\t * If auto_tagger is enabled use it to get tags. Otherwise return \"\"\n\t * @param {Object} post - Post object, like those returned by\n\t * XKit.interface.post and XKit.interface.find_post\n\t * @param {number} state - Post state: 0 is reblog, 1 is draft, 2 is queue\n\t * @param {Boolean} isOriginal\n\t * @return {String} tags\n\t */\n\tget_auto_tagger_tags: function(post, state, isOriginal) {\n\t\tif (!this.auto_tagger) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar auto_tagger = XKit.extensions.auto_tagger;\n\t\tif (typeof(auto_tagger) == \"undefined\") {\n\t\t\treturn \"\";\n\t\t}\n\t\t// Call Auto Tagger for tags.\n\t\tvar additional_tags = auto_tagger.return_tags(post, isOriginal);\n\t\tif (state === 2) {\n\t\t\tvar queue_tags = auto_tagger.return_tags_for_queue();\n\t\t\tadditional_tags = auto_tagger.mreturn_add(additional_tags, queue_tags);\n\t\t}\n\t\treturn additional_tags;\n\t},\n\n\t/**\n\t * Return the addition of tags based on state from the auto_tagger. Only\n\t * queue is handled by this function because state is a horrible variable\n\t * @param {String} tags - current tags\n\t * @param {number} state - Post state: 0 is reblog, 1 is draft, 2 is queue\n\t * @return {String} new tags\n\t */\n\tadd_auto_tagger_state_tags: function(tags, state) {\n\t\tif (!this.auto_tagger) {\n\t\t\treturn tags;\n\t\t}\n\n\t\tvar auto_tagger = XKit.extensions.auto_tagger;\n\t\tif (typeof(auto_tagger) == \"undefined\") {\n\t\t\treturn tags;\n\t\t}\n\n\t\tif (state !== 2) {\n\t\t\treturn tags;\n\t\t}\n\n\t\tvar queue_tags = auto_tagger.return_tags_for_queue();\n\t\treturn auto_tagger.mreturn_add(tags, queue_tags);\n\t},\n\n\tcpanel: function(obj) {\n\t\t$(obj).append(\"
    Tagging options are moved to a separate extension called \\\"Auto Tagger.\\\"
    \");\n\n\t\t$(\"#xkit-alreadyreblogged-help\").click(function() {\n\t\t\tXKit.window.show(\"AlreadyReblogged\", \"AlreadyReblogged keeps the track of the posts you reblog using One-Click Postage.

    When you queue, draft or reblog a post using One-Click postage, the next time you refresh your page, the reblog button will turn green automatically.\", \"info\", \"
    OK
    \");\n\t\t});\n\t\t$(\"#xkit-ocp-keyboard-legend\").click(function() {\n\t\t\tXKit.window.show(\n\t\t\t\t\"Keyboard Shortcuts\", `\n\t\t\t\t Reblog
    \n\t\t\t\t Queue
    \n\t\t\t\t Draft
    \n\t\t\t\t
    \n\t\t\t\t Tag
    \n\t\t\t\t
    \n\t\t\t\tESC Close popup
    \n\t\t\t\t
    \n\t\t\t\t - Use a Quick Tags bundle`,\n\t\t\t\t\"info\",\n\t\t\t\t\"
    OK
    \"\n\t\t\t);\n\t\t\t$(\".xkit-window-msg span\").attr(\"style\", `\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tborder: 1px solid black;\n\t\t\t\tborder-radius: 3px;\n\t\t\t\tline-height: 1em;\n\t\t\t\tpadding: 5px;\n\t\t\t\ttext-align: center;\n\t\t\t\tbackground: linear-gradient(#eee, #ddd);`\n\t\t\t);\n\t\t});\n\t},\n\n\tget_autotagger: function() {\n\t\tif (XKit.installed.check(\"auto_tagger\") === false) {\n\t\t\tXKit.extensions.one_click_postage.auto_tagger = false;\n\t\t} else {\n\t\t\tif (XKit.installed.enabled(\"auto_tagger\") === true) {\n\t\t\t\tif (typeof XKit.extensions.auto_tagger === \"undefined\") {\n\t\t\t\t\t// Not booted up yet?\n\t\t\t\t\tsetTimeout(function() { XKit.extensions.one_click_postage.get_autotagger(); }, 100);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(\"Auto tagger installed and found\");\n\t\t\t\t\tXKit.extensions.one_click_postage.auto_tagger = true;\n\t\t\t\t\tXKit.extensions.one_click_postage.auto_tagger_preferences = XKit.extensions.auto_tagger.preferences;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tXKit.extensions.one_click_postage.auto_tagger = false;\n\t\t\t}\n\t\t}\n\t},\n\n\tget_quicktags: function() {\n\t\tif (XKit.installed.check(\"quick_tags\") === false) {\n\t\t\tXKit.extensions.one_click_postage.quick_tags = false;\n\t\t} else {\n\t\t\tif (XKit.installed.enabled(\"quick_tags\") === true) {\n\t\t\t\tif (typeof XKit.extensions.quick_tags === \"undefined\") {\n\t\t\t\t\t// Not booted up yet?\n\t\t\t\t\tsetTimeout(function() { XKit.extensions.one_click_postage.get_quicktags(); }, 100);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(\"Quick Tags installed and found\");\n\t\t\t\t\tXKit.extensions.one_click_postage.quick_tags = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tXKit.extensions.one_click_postage.quick_tags = false;\n\t\t\t}\n\t\t}\n\t},\n\n\trun: function() {\n\t\t//Bail on user blogs\n\t\tif (!XKit.interface.is_tumblr_page()) { return; }\n\n\t\tXKit.tools.init_css(\"one_click_postage\");\n\n\t\t// Let's first check if we have auto_tagger installed and active.\n\t\tXKit.extensions.one_click_postage.get_autotagger();\n\n\t\t// Then, check Quick Tags.\n\t\tXKit.extensions.one_click_postage.get_quicktags();\n\n\t\tif (this.preferences.allow_resize.value) {\n\t\t\tXKit.tools.add_css(\"#x1cpostage_caption { resize: vertical; }\", \"one_click_postage_resize\");\n\t\t}\n\n\t\tif (this.preferences.show_small_ui.value) {\n\t\t\tthis.caption_height = 50;\n\t\t\tvar slim_css = \"#x1cpostage_caption { height: 50px; }\" +\n\t\t\t\t\t\"#x1cpostage_reblog, #x1cpostage_queue, #x1cpostage_draft { height: 32px; }\" +\n\t\t\t\t\t\"#x1cpostage_reblog i::before, #x1cpostage_queue i::before, #x1cpostage_draft i::before { position: static; }\";\n\t\t\tXKit.tools.add_css(slim_css, \"one_click_postage_slim\");\n\t\t}\n\n\t\tXKit.blog_listener.add(\"one_click_postage\", this.init);\n\t},\n\n\tinit: async function(m_blogs) {\n\n\t\tvar m_remove_button = \"
    remove caption
    \";\n\n\t\tif (!this.preferences.show_caption_remover.value) {\n\t\t\tm_remove_button = \"\";\n\t\t}\n\n\t\tvar m_remove_box_style = \"\";\n\t\tif (!this.preferences.show_caption.value) {\n\t\t\tm_remove_box_style = \" style=\\\"display: none;\\\" \";\n\t\t}\n\n\t\tvar m_clear_tags_button = \"
    clear tags
    \";\n\n\t\tif (this.preferences.show_tag_remover.value !== true) {\n\t\t\tm_clear_tags_button = \"\";\n\t\t}\n\n\t\tvar m_html = \"\";\n\n\t\tif (this.preferences.show_reverse_ui.value) {\n\t\t\tm_html = \"
    \" +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t\tm_clear_tags_button +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\"
     
    replace caption, not append
    \" +\n\t\t\t\t\t\tm_remove_button +\n\t\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\"
    \";\n\n\t\t\tXKit.tools.add_css(\"#x1cpostage_draft { border-radius: 0px 0px 3px 0px; } #x1cpostage_reblog { border-radius: 0px 0px 0px 3px; } #x1cpostage_tags { border-radius: 3px 3px 0px 0px; border-bottom: 0; } #x1cpostage_replace { border-bottom: 0; } #x1cpostage_remove_caption { border-top: 1px solid #abafbc; border-bottom: 0; }\", \"x1cpostage_reverse_ui\");\n\t\t} else {\n\t\t\tm_html = \"
    \" +\n\t\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\"
     
    replace caption, not append
    \" +\n\t\t\t\t\t\tm_remove_button +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t\tm_clear_tags_button +\n\t\t\t\t\t\"
    \";\n\t\t}\n\n\t\t$(\"body\").append(m_html);\n\n\t\t// prevents Tumblr's trapFocusInsideGlass function from stealing focus in blog/view\n\t\t$(\"#x1cpostage_box\").attr('data-skip-glass-focus-trap', true);\n\n\t\t$(document).on(\"mouseover\", \"#x1cpostage_queue\", function() {\n\t\t\t$(\"#x1cpostage_box\").removeClass(\"xkit_x1cpostage_queue_press\");\n\t\t\t$(\"#x1cpostage_box\").addClass(\"xkit_x1cpostage_queue_hover\");\n\t\t});\n\n\t\t$(document).on(\"mouseout\", \"#x1cpostage_queue\", function() {\n\t\t\t$(\"#x1cpostage_box\").removeClass(\"xkit_x1cpostage_queue_press\");\n\t\t\t$(\"#x1cpostage_box\").removeClass(\"xkit_x1cpostage_queue_hover\");\n\t\t});\n\n\t\t$(document).on(\"mousedown\", \"#x1cpostage_queue\", function() {\n\t\t\t$(\"#x1cpostage_box\").removeClass(\"xkit_x1cpostage_queue_hover\");\n\t\t\t$(\"#x1cpostage_box\").addClass(\"xkit_x1cpostage_queue_press\");\n\t\t});\n\n\t\t$(document).on(\"mouseup\", \"#x1cpostage_queue\", function() {\n\t\t\t$(\"#x1cpostage_box\").removeClass(\"xkit_x1cpostage_queue_press\");\n\t\t});\n\n\t\tXKit.extensions.one_click_postage.blogs_list = m_blogs;\n\t\tXKit.extensions.one_click_postage.default_blog_id = m_blogs[0];\n\n\t\tif (this.preferences.show_blog_selector.value) {\n\t\t\tconst m_blogselector_html = `\n\t\t\t\t`;\n\n\t\t\tif (this.preferences.show_reverse_ui.value) {\n\t\t\t\t$(\"#x1cpostage_reblog\").before(m_blogselector_html);\n\t\t\t} else {\n\t\t\t\t$(\"#x1cpostage_caption\").before(m_blogselector_html);\n\t\t\t}\n\n\t\t\tif (m_blogs.includes(this.preferences.default_blog.value)) {\n\t\t\t\t$(\"#x1cpostage_blog\").val(this.preferences.default_blog.value);\n\t\t\t}\n\t\t}\n\n\t\tif (this.preferences.show_social.value) {\n\t\t\tvar socials_html = \"
    \" +\n\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\"
    \";\n\t\t\tif (this.preferences.show_reverse_ui.value) {\n\t\t\t\t$(\"#x1cpostage_reblog\").before(socials_html);\n\t\t\t} else {\n\t\t\t\t$(\"#x1cpostage_draft\").after(socials_html);\n\t\t\t}\n\t\t}\n\n\t\tvar share_fb = XKit.storage.get(\"one_click_postage\", \"share_on_facebook\", \"false\");\n\t\tvar share_twitter = XKit.storage.get(\"one_click_postage\", \"share_on_twitter\", \"false\");\n\n\t\tif (share_fb === \"true\") { $(\"#xkit-1cp-social-facebook\").addClass(\"selected\"); }\n\t\tif (share_twitter === \"true\") { $(\"#xkit-1cp-social-twitter\").addClass(\"selected\"); }\n\n\t\t$(\"#xkit-1cp-social-facebook, #xkit-1cp-social-twitter\").click(function() {\n\t\t\t$(this).toggleClass(\"selected\");\n\t\t\tvar m_value = \"false\";\n\t\t\tif ($(this).hasClass(\"selected\") === true) { m_value = \"true\"; }\n\t\t\tXKit.storage.set(\"one_click_postage\", \"share_on_\" + $(this).attr('data-site'), m_value);\n\t\t});\n\n\t\tvar reblog_buttons = [\n\t\t\t'.reblog_button',\n\t\t\t'.post_control.reblog',\n\t\t\t'[data-id] footer a[href*=\"/reblog/\"]',\n\t\t].join(',');\n\n\t\t$(document).on(\"mouseover\", reblog_buttons, function(event) {\n\t\t\tif ($(this).hasClass(\"radar_button\") === true) {return; }\n\t\t\tclearTimeout(XKit.extensions.one_click_postage.menu_closer_int);\n\t\t\tXKit.extensions.one_click_postage.user_on_box = true;\n\t\t\tXKit.extensions.one_click_postage.open_menu($(this));\n\t\t});\n\n\t\t$(document).on(\"mouseout mouseleave\", reblog_buttons, function() {\n\t\t\tif ($(this).hasClass(\"radar_button\") === true) {return; }\n\t\t\tXKit.extensions.one_click_postage.user_on_box = false;\n\t\t\tXKit.extensions.one_click_postage.close_menu($(this));\n\t\t});\n\n\t\t$(document).on(\"click\", reblog_buttons, function() {\n\t\t\tXKit.extensions.one_click_postage.user_on_box = false;\n\t\t\tXKit.extensions.one_click_postage.close_menu($(this), true);\n\t\t});\n\n\t\tvar cancel_menu_close = function() {\n\t\t\tclearTimeout(XKit.extensions.one_click_postage.menu_closer_int);\n\t\t\tXKit.extensions.one_click_postage.user_on_box = true;\n\t\t};\n\n\t\tvar menu_close = function() {\n\t\t\t// Only close the menu if none of its inputs have focus.\n\t\t\tif ($(\"#x1cpostage_box\").find('input:focus, textarea:focus, select:focus').length === 0) {\n\t\t\t\tXKit.extensions.one_click_postage.user_on_box = false;\n\t\t\t\tXKit.extensions.one_click_postage.close_menu($(this));\n\t\t\t}\n\t\t};\n\n\t\t$(document).on(\"mouseover\", \"#x1cpostage_box\", cancel_menu_close);\n\t\t$(document).on(\"mouseleave\", \"#x1cpostage_box\", menu_close);\n\t\t$(document).on(\"focus\", \"#x1cpostage_box input, #x1cpostage_box textarea, #x1cpostage_box select\", cancel_menu_close);\n\t\t$(document).on(\"blur\", \"#x1cpostage_box input, #x1cpostage_box textarea, #x1cpostage_box select\", function() {\n\t\t\tif (!XKit.extensions.one_click_postage.ignore_box_input_blurring) {\n\t\t\t\tmenu_close();\n\t\t\t}\n\t\t});\n\n\t\t$(\"#x1cpostage_tags, #x1cpostage_caption\").bind(\"keydown\", function(event) {\n\t\t\tif (XKit.extensions.one_click_postage.preferences.enable_keyboard_shortcuts.value\n\t\t\t\t\t&& event.which === 27) { // 27 = Escape\n\t\t\t\t$(this).blur();\n\t\t\t\tXKit.extensions.one_click_postage.user_on_box = false;\n\t\t\t\tXKit.extensions.one_click_postage.close_menu($(this), true);\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t\tevent.stopPropagation();\n\t\t\tevent.stopImmediatePropagation();\n\t\t});\n\n\t\t$(\"#x1cpostage_remove_caption\").click(function() {\n\t\t\tif (XKit.extensions.one_click_postage.preferences.show_reverse_ui.value) {\n\t\t\t\t$(\"#x1cpostage_remove_caption\").css('display', 'none');\n\t\t\t\t$(\"#x1cpostage_caption\").css('display', 'none');\n\t\t\t\t$(\"#x1cpostage_replace\").css('display', 'none');\n\n\t\t\t\t// Determine where we are going to show the box.\n\t\t\t\tvar obj = XKit.extensions.one_click_postage.last_icon_object;\n\t\t\t\tvar offset = $(obj).offset();\n\n\t\t\t\t// Box position\n\t\t\t\tvar box_left = offset.left - ($(\"#x1cpostage_box\").width() / 2) + 13;\n\t\t\t\tvar box_top = (offset.top - $(\"#x1cpostage_box\").height()) - 12;\n\n\t\t\t\t$(\"#x1cpostage_box\").css(\"top\", box_top + \"px\");\n\t\t\t\t$(\"#x1cpostage_box\").css(\"left\", box_left + \"px\");\n\t\t\t} else {\n\t\t\t\t$(\"#x1cpostage_remove_caption\").slideUp('fast');\n\t\t\t\t$(\"#x1cpostage_caption\").slideUp('fast');\n\t\t\t\t$(\"#x1cpostage_replace\").slideUp('fast');\n\t\t\t}\n\n\t\t\t$(\"#x1cpostage_caption\").addClass(\"x1cpostage_remove_caption_on\");\n\t\t\t$(\"#x1cpostage_tags\").css(\"border-top\", \"1px solid #abafbc\");\n\t\t});\n\n\t\t$(\"#x1cpostage_clear_tags\").click(function() {\n\t\t\t$(\"#x1cpostage_tags\").val(\"\");\n\t\t});\n\n\t\t$(\"#x1cpostage_replace\").click(function() {\n\t\t\t$(this).toggleClass(\"selected\");\n\t\t});\n\n\t\t$(\"#x1cpostage_reblog\").click(function() {\n\t\t\tXKit.extensions.one_click_postage.post(0, false);\n\t\t});\n\n\t\t$(\"#x1cpostage_queue\").click(function() {\n\t\t\tXKit.extensions.one_click_postage.post(2, false);\n\t\t});\n\n\t\t$(\"#x1cpostage_draft\").click(function() {\n\t\t\tXKit.extensions.one_click_postage.post(1, false);\n\t\t});\n\n\t\tif (this.preferences.enable_keyboard_shortcuts.value) {\n\t\t\t$(document).on('keydown', XKit.extensions.one_click_postage.process_keydown);\n\t\t\t// Must use capture=true here to intercept Tumblr's default handlers, so we can't use jQuery's .on()\n\t\t\twindow.addEventListener('keydown', XKit.extensions.one_click_postage.suspend_tumblr_key_commands, true);\n\t\t}\n\n\t\tthis.init_keep_tags_dashboard();\n\n\t\tif (this.preferences.enable_alreadyreblogged.value) {\n\t\t\tvar m_data = XKit.storage.get(\"one_click_postage\", \"already_reblogged\", \"\");\n\n\t\t\ttry {\n\t\t\t\tXKit.extensions.one_click_postage.already_reblogged = JSON.parse(m_data);\n\t\t\t} catch (e) {\n\t\t\t\tXKit.extensions.one_click_postage.already_reblogged = [];\n\t\t\t}\n\n\t\t\tXKit.post_listener.add(\"one_click_postage\", XKit.extensions.one_click_postage.check_if_alreadyreblogged);\n\t\t\tXKit.extensions.one_click_postage.check_if_alreadyreblogged();\n\t\t}\n\n\t\tif (this.preferences.enable_quick_queue.value) {\n\t\t\tif (XKit.interface.where().drafts === true || XKit.interface.where().queue === true) { return; }\n\t\t\tif ($(\"body\").hasClass(\"is_private_channel\")) {return; }\n\n\t\t\tXKit.interface.create_control_button(\"xkit-one-click-postage-quickqueue\", this.qq_icon, \"QuickQueue\", \"\", this.qq_ok_icon);\n\t\t\tXKit.post_listener.add(\"one_click_postage\", XKit.extensions.one_click_postage.quick_queue_do_posts);\n\t\t\tXKit.extensions.one_click_postage.quick_queue_do_posts();\n\n\t\t\t$(document).on('click', '.xkit-one-click-postage-quickqueue', XKit.extensions.one_click_postage.quick_queue_button_clicked);\n\t\t}\n\n\t\tif (XKit.extensions.one_click_postage.preferences.dont_scroll_quicktags.value) {\n\t\t\tXKit.tools.add_css(\"#x1cpostage_quick_tags { max-height: 10000px !important; }\", \"one_click_postage_qtdontscroll\");\n\t\t}\n\t},\n\n\tquick_queue_button_clicked: function(e) {\n\t\tvar obj = $(e.target);\n\n\t\tif ($(obj).hasClass(\"xkit-interface-working\") === true) { return; }\n\n\t\tvar parent_box = $(e.target).parentsUntil('.post').parent();\n\n\t\tXKit.extensions.one_click_postage.last_object = parent_box;\n\t\tXKit.extensions.one_click_postage.last_icon_object = obj;\n\t\tXKit.extensions.one_click_postage.last_post_id = $(parent_box).attr('data-post-id');\n\n\t\tXKit.interface.switch_control_button($(obj), true);\n\t\tXKit.extensions.one_click_postage.post(2, false, true);\n\t},\n\n\tquick_queue_do_posts: function() {\n\t\tvar posts = XKit.interface.get_posts(\"xkit-1cp-quick-queue-done\");\n\n\t\tif (XKit.interface.where().queue === true) { return; }\n\n\t\t$(posts).each(function() {\n\t\t\t$(this).addClass(\"xkit-1cp-quick-queue-done\");\n\n\t\t\tif (XKit.interface.where().inbox === true) { return; }\n\n\t\t\tXKit.interface.add_control_button(this, \"xkit-one-click-postage-quickqueue\", \"\");\n\t\t});\n\t},\n\n\tcheck_if_alreadyreblogged: function() {\n\t\t$(\".post, [data-id]\").not(\".xkit_already_reblogged_check\").each(async function() {\n\t\t\tvar post_id = $(this).attr('data-root_id');\n\t\t\t$(this).addClass(\"xkit_already_reblogged_check\");\n\n\t\t\tif (!post_id && XKit.page.react) {\n\t\t\t\tconst {root_id} = await XKit.interface.async_post($(this));\n\t\t\t\tpost_id = root_id;\n\t\t\t}\n\n\t\t\tif (XKit.extensions.one_click_postage.is_alreadyreblogged(post_id)) {\n\t\t\t\tif (XKit.extensions.one_click_postage.preferences.enable_hide_alreadyreblogged.value) {\n\t\t\t\t\tif (XKit.interface.where().dashboard === true) { $(this).remove(); }\n\t\t\t\t}\n\n\t\t\t\tXKit.extensions.one_click_postage.make_button_reblogged($(this).find('.post_control.reblog, footer a[href*=\"/reblog/\"]'));\n\t\t\t}\n\t\t});\n\t},\n\n\tmake_button_reblogged: function($button) {\n\t\t$button.addClass(\"reblogged\");\n\t},\n\n\tdestroy: function() {\n\t\t$(document).off('click', '.reblog_button,.post_control.reblog', XKit.extensions.one_click_postage.process_click)\n\t\t\t.off('keydown', XKit.extensions.one_click_postage.process_keydown);\n\t\twindow.removeEventListener('keydown', XKit.extensions.one_click_postage.suspend_tumblr_key_commands);\n\t\tXKit.tools.remove_css(\"one_click_postage\");\n\t\tXKit.post_listener.remove(\"one_click_postage\");\n\t\tXKit.tools.remove_css(\"x1cpostage_reverse_ui\");\n\t\t$(\"#x1cpostage_box\").remove();\n\t\tXKit.tools.remove_css(\"one_click_postage_slim\");\n\t\tXKit.tools.remove_css(\"one_click_postage_resize\");\n\t\tXKit.tools.remove_css(\"one_click_postage_qtdontscroll\");\n\t},\n\n\tinit_keep_tags_dashboard: function() {\n\t\t$(document).on('click', '.reblog_button,.post_control.reblog', XKit.extensions.one_click_postage.process_click);\n\t},\n\n\t/**\n\t * @param {Event} e\n\t * @return {boolean} Whether e corresponds to an OCP key command\n\t */\n\tis_key_command: function(e) {\n\t\tif (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// 68 = D, 81 = Q, 82 = R, 84 = T, 49-57 = 1-9\n\t\tif (e.which !== 68 && e.which !== 81 && e.which !== 82 && e.which !== 84 && (e.which < 49 || e.which > 57)) {\n\t\t\treturn false;\n\t\t}\n\t\tif ($(e.target).is('input,textarea') || $(e.target).attr('contenteditable')) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tsuspend_tumblr_key_commands: function(e) {\n\t\tif (!XKit.extensions.one_click_postage.is_key_command(e)) {\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.tools.add_function(function() {Tumblr.KeyCommands.suspend();}, true, '');\n\t},\n\n\tprocess_keydown: function(e) {\n\t\tif (!XKit.extensions.one_click_postage.is_key_command(e)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar header_height = $(\".l-header-container\").height();\n\t\t// Tumblr puts 20 px of padding between posts in addition to the height of the header\n\t\tvar screen_pos = $(window).scrollTop() + 20 + header_height;\n\n\t\t// Find the post at the top of the screen, if there is one\n\t\t$(\".reblog_button,.post_control.reblog\").filter(':visible').each(function() {\n\t\t\tif ($(this).hasClass(\"radar_button\")) {return; }\n\t\t\tvar parent_box = $(this).parentsUntil(\".post\").parent();\n\t\t\tvar box_pos = parent_box.offset().top;\n\t\t\tif (box_pos <= screen_pos && box_pos + parent_box.innerHeight() > screen_pos) {\n\t\t\t\tif (XKit.extensions.one_click_postage.user_on_box && e.which >= 49 && e.which <= 57) { // 49-57 = 1-9\n\t\t\t\t\tvar index = e.which - 49;\n\t\t\t\t\tvar quickTags = $(\"#x1cpostage_quick_tags\").find(\".xkit-tag\");\n\n\t\t\t\t\tif (quickTags.length > index) {\n\t\t\t\t\t\tquickTags[index].click();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tswitch (e.which) {\n\t\t\t\t\t\tcase 68: // 68 = D\n\t\t\t\t\t\t\tXKit.extensions.one_click_postage.open_menu($(this), true).then(() => {\n\t\t\t\t\t\t\t\tXKit.extensions.one_click_postage.post(1, false);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 81: // 81 = Q\n\t\t\t\t\t\t\tXKit.extensions.one_click_postage.open_menu($(this), true).then(() => {\n\t\t\t\t\t\t\t\tXKit.extensions.one_click_postage.post(2, false);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 82: // 82 = R\n\t\t\t\t\t\t\tXKit.extensions.one_click_postage.open_menu($(this), true).then(() => {\n\t\t\t\t\t\t\t\tXKit.extensions.one_click_postage.post(0, false);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 84: // 84 = T\n\t\t\t\t\t\t\tXKit.extensions.one_click_postage.user_on_box = true;\n\t\t\t\t\t\t\tXKit.extensions.one_click_postage.open_menu($(this), false, true).then(() => {\n\t\t\t\t\t\t\t\t$('#x1cpostage_tags').focus();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\te.preventDefault();\n\t\t\t\treturn false;\n\t\t\t} else if (box_pos > screen_pos) {\n\t\t\t\t// Post is too far down the screen, stop looking\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\t// re-enable tumblr's key commands since we suspended them in suspend_tumblr_key_commands\n\t\tXKit.tools.add_function(function() {Tumblr.KeyCommands.resume();}, true, '');\n\t},\n\n\t/**\n\t * Allows keep_tags to continue to work even in the post editor.\n\t * @param {Event} e\n\t */\n\tprocess_click: function(e) {\n\t\tvar parent_box = $(e.target).parentsUntil('.post').parent();\n\n\t\tif (XKit.extensions.one_click_postage.auto_tagger && typeof XKit.extensions.auto_tagger != \"undefined\") {\n\t\t\t// Call Auto Tagger for tags. Specifies that this is a reblog\n\t\t\tvar post_obj = XKit.interface.post($(parent_box));\n\t\t\tvar additional_tags = XKit.extensions.auto_tagger.return_tags(post_obj, false);\n\t\t\tif (additional_tags !== \"\") {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tXKit.extensions.auto_tagger.inject_to_window(additional_tags);\n\t\t\t\t}, 200);\n\t\t\t}\n\t\t}\n\t},\n\n\topen_menu: async function(obj, hide_ui, force_on_screen) {\n\t\tif ($(obj).attr('x1cpostage_disabled') === \"true\" || $(obj).hasClass(\"xkit-one-click-reblog-working\") === true) {\n\t\t\t// we are!\n\t\t\treturn;\n\t\t}\n\n\t\t// Get the box ID.\n\t\tvar parent_box = $(obj).parentsUntil(\".post,[data-id]\").parent();\n\t\tvar box_id = $(parent_box).attr('data-post-id') || $(parent_box).attr('data-id');\n\n\t\t// Let's first hide our previous box.\n\t\t// only if the current id != previous ID.\n\t\tif (box_id !== this.last_post_id) {\n\t\t\t// It is not! Hide it.\n\t\t\t// Also, change all the settings.\n\t\t\t$(\"#x1cpostage_box\").css('display', 'none');\n\t\t\tXKit.extensions.one_click_postage.reset_box();\n\t\t} else {\n\t\t\t// Lets see if the box is already open.\n\t\t\tif ($(\"#x1cpostage_box\").css(\"display\") === \"block\") {\n\t\t\t\t// It is. Let's end.\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Re-show the caption stuff.\n\t\tif (XKit.extensions.one_click_postage.preferences.show_caption.value) {\n\t\t\t$(\"#x1cpostage_caption\").css(\"display\", \"block\");\n\t\t\t$(\"#x1cpostage_replace\").css(\"display\", \"block\");\n\t\t} else {\n\t\t\t$(\"#x1cpostage_caption\").css(\"display\", \"none\");\n\t\t\t$(\"#x1cpostage_replace\").css(\"display\", \"none\");\n\t\t}\n\n\t\t$(\"#x1cpostage_remove_caption\").css(\"display\", \"block\");\n\t\t$(\"#x1cpostage_caption\").removeClass(\"x1cpostage_remove_caption_on\");\n\t\t$(\"#x1cpostage_tags\").css(\"border-top\", \"0px\");\n\t\t$(\"#x1cpostage_caption\").css(\"height\", XKit.extensions.one_click_postage.caption_height + \"px\");\n\n\t\t$(obj).attr('title', '');\n\n\t\t// Call Auto Tagger for tags. Will be \"\" if auto_tagger is disabled\n\t\tvar post_obj = await XKit.interface.async_post($(parent_box));\n\t\tvar state = 0; // reblog\n\t\tvar tags = $(\"#x1cpostage_tags\").val();\n\t\tif (!this.auto_tagger_done) {\n\t\t\tthis.auto_tagger_done = true;\n\t\t\ttags = tags + (tags ? \", \" : \"\") + this.get_auto_tagger_tags(post_obj, state, false);\n\t\t}\n\t\t$(\"#x1cpostage_tags\").val(tags);\n\n\t\t// Quick Tags?\n\t\t$(\"#x1cpostage_quick_tags\").remove();\n\t\tif (this.quick_tags === true && typeof XKit.extensions.quick_tags != \"undefined\") {\n\t\t\t// Call Quick Tags to render our box.\n\t\t\tif (XKit.extensions.quick_tags.preferences.show_in_one_click_postage.value) {\n\t\t\t\tvar m_html = \"
    \" + XKit.extensions.quick_tags.return_for_one_click_postage() + \"
    \";\n\t\t\t\tif (this.preferences.show_reverse_ui.value) {\n\t\t\t\t\t$(\"#x1cpostage_caption\").before(m_html);\n\t\t\t\t} else {\n\t\t\t\t\t$(\"#x1cpostage_tags\").before(m_html);\n\t\t\t\t\t$(\"#x1cpostage_quick_tags\").addClass(\"xkit-no-reverse-ui\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hide_ui !== true) {\n\t\t\t// Determine where we are going to show the box.\n\t\t\tvar offset = $(obj).offset();\n\n\t\t\t// Box position\n\t\t\tvar box_left = offset.left - ($(\"#x1cpostage_box\").width() / 2) + 13;\n\t\t\tvar box_top = offset.top + 35;\n\n\t\t\tif (XKit.extensions.one_click_postage.preferences.show_reverse_ui.value) {\n\t\t\t\tbox_top = (offset.top - $(\"#x1cpostage_box\").height()) - 12;\n\t\t\t}\n\n\t\t\tif (force_on_screen === true) {\n\t\t\t\tvar window_top = $(window).scrollTop();\n\t\t\t\tvar window_bottom = window_top + $(window).height();\n\t\t\t\tif (box_top < window_top) {\n\t\t\t\t\tbox_top = window_top + 5;\n\t\t\t\t} else if (box_top + $(\"#x1cpostage_box\").height() > window_bottom) {\n\t\t\t\t\tbox_top = window_bottom - $(\"#x1cpostage_box\").height() - 5;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$(\"#x1cpostage_box\").css(\"top\", box_top + \"px\");\n\t\t\t$(\"#x1cpostage_box\").css(\"left\", box_left + \"px\");\n\n\t\t\t$(\"#x1cpostage_box\").removeClass(\"xkit_x1cpostage_queue_press\");\n\t\t\t$(\"#x1cpostage_box\").removeClass(\"xkit_x1cpostage_queue_hover\");\n\n\t\t\tif (XKit.extensions.one_click_postage.preferences.show_reverse_ui.value) {\n\t\t\t\t$(\"#x1cpostage_box\").fadeIn('fast');\n\t\t\t} else {\n\t\t\t\t$(\"#x1cpostage_box\").slideDown('fast');\n\t\t\t}\n\t\t}\n\n\t\tthis.last_object = parent_box;\n\t\tthis.last_icon_object = obj;\n\t\tthis.last_post_id = box_id;\n\t},\n\n\treset_box: function() {\n\t\t$(\"#x1cpostage_caption\").val(\"\");\n\t\t$(\"#x1cpostage_tags\").val(\"\");\n\t\tXKit.extensions.one_click_postage.ignore_box_input_blurring = true;\n\t\t$(\"#x1cpostage_tags\").blur();\n\t\t$(\"#x1cpostage_caption\").blur();\n\t\tXKit.extensions.one_click_postage.ignore_box_input_blurring = false;\n\t\tXKit.extensions.one_click_postage.auto_tagger_done = false;\n\t},\n\n\tclose_menu: function(obj, force) {\n\t\tclearTimeout(XKit.extensions.one_click_postage.menu_closer_int);\n\n\t\tif (force === true) {\n\t\t\tXKit.extensions.one_click_postage.user_on_box = false;\n\t\t\tif (XKit.extensions.one_click_postage.preferences.show_reverse_ui.value) {\n\t\t\t\t$(\"#x1cpostage_box\").fadeOut('fast');\n\t\t\t} else {\n\t\t\t\t$(\"#x1cpostage_box\").slideUp('fast');\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.extensions.one_click_postage.menu_closer_int = setTimeout(function() {\n\t\t\tif (XKit.extensions.one_click_postage.user_on_box === false) {\n\t\t\t\tif (XKit.extensions.one_click_postage.preferences.show_reverse_ui.value) {\n\t\t\t\t\t$(\"#x1cpostage_box\").fadeOut('fast');\n\t\t\t\t} else {\n\t\t\t\t\t$(\"#x1cpostage_box\").slideUp('fast');\n\t\t\t\t}\n\t\t\t}\n\t\t}, 700);\n\n\t\t/* eslint-enable no-undef */\n\t},\n\n\t/**\n\t * Make a post\n\t * @param {number} state - State of post, 0 is reblog, 1 is draft, 2 is queue\n\t * @param {boolean} retry_mode - Whether the function is currently retrying\n\t * @param {boolean} quick_queue_mode - If this is from a Quick Queue button\n\t * instead of the OCP ui (I think)\n\t */\n\tpost: async function(state, retry_mode, quick_queue_mode) {\n\t\tif (XKit.extensions.one_click_postage.preferences.show_reverse_ui.value) {\n\t\t\t$(\"#x1cpostage_box\").fadeOut('fast');\n\t\t} else {\n\t\t\t$(\"#x1cpostage_box\").slideUp('fast');\n\t\t}\n\n\t\tvar form_key = XKit.interface.form_key();\n\t\tvar post = await XKit.interface.async_post(XKit.extensions.one_click_postage.last_object);\n\t\tvar post_id = post.id;\n\t\tvar reblog_key = post.reblog_key;\n\t\tvar channel_id = post.owner;\n\n\t\tif (!reblog_key || reblog_key == \"undefined\") {\n\t\t\tvar reblog_link = $(XKit.extensions.one_click_postage.last_object).find(\".post_control.reblog\").attr('href').split(\"/\");\n\t\t\treblog_key = reblog_link[reblog_link.length - 1];\n\t\t}\n\n\t\tvar root_id = post.root_id;\n\t\tvar m_object = {\n\t\t\tchannel_id: channel_id,\n\t\t\treblog_id: post.id,\n\t\t\treblog_key: reblog_key,\n\t\t\tform_key: form_key,\n\t\t};\n\t\tvar blog_id = XKit.extensions.one_click_postage.default_blog_id;\n\n\t\tif ($(\"#x1cpostage_blog\").length > 0) {\n\t\t\tblog_id = $(\"#x1cpostage_blog\").val();\n\t\t\tXKit.extensions.one_click_postage.default_blog_id = $(\"#x1cpostage_blog\").val();\n\t\t} else {\n\t\t\tif (XKit.extensions.one_click_postage.preferences.default_blog.value !== \"\") {\n\t\t\t\tif (XKit.extensions.one_click_postage.blogs_list.indexOf(XKit.extensions.one_click_postage.preferences.default_blog.value) !== -1) {\n\n\t\t\t\t\tblog_id = XKit.extensions.one_click_postage.preferences.default_blog.value;\n\t\t\t\t} else {\n\t\t\t\t\tXKit.window.show(\"Default blog not available\", \"Your default blog is no longer available.
    This might be caused by changing the URL of the blog or logging into a different account.

    Please change the default blog or enable \\\"Blog Selector\\\" from One-Click Postage Control Panel to continue.\", \"error\", \"
    OK
    \");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (quick_queue_mode !== true) {\n\t\t\t$(XKit.extensions.one_click_postage.last_object).find(\".reblog_button, .post_control.reblog\").addClass(\"xkit-one-click-reblog-working\");\n\t\t}\n\n\t\tvar m_button = $(XKit.extensions.one_click_postage.last_object).find('.reblog_button, .post_control.reblog, footer a[href*=\"/reblog/\"]');\n\n\t\tif (quick_queue_mode) {\n\t\t\tm_button = $(XKit.extensions.one_click_postage.last_object).find(\".xkit-one-click-postage-quickqueue\");\n\t\t}\n\n\t\tvar caption = $(\"#x1cpostage_caption\").val();\n\t\tvar tags = $(\"#x1cpostage_tags\").val();\n\n\t\tif (quick_queue_mode) {\n\t\t\ttags = this.get_auto_tagger_tags(post, state, false);\n\t\t\tcaption = \"\";\n\t\t} else {\n\t\t\ttags = this.add_auto_tagger_state_tags(tags, state);\n\t\t}\n\n\t\tXKit.svc.post.fetch(m_object)\n\t\t\t.then(response => {\n\t\t\t\tlet responseData = response.json();\n\n\t\t\t\tif (responseData.errors === false) {\n\t\t\t\t\tthis.process(responseData, state, form_key, blog_id, post_id, caption, tags, reblog_key, m_button, false, root_id, quick_queue_mode);\n\t\t\t\t} else {\n\t\t\t\t\tthrow response;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tif (error.status == 403 && !retry_mode) {\n\t\t\t\t\tsetTimeout(() => this.post(state, true, quick_queue_mode), 500);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t$(m_button).removeClass(\"xkit-one-click-reblog-working\");\n\t\t\t\tthis.show_error(error, state);\n\t\t\t});\n\t},\n\n\tprocess: function(data, state, form_key, blog_id, post_id, caption, tags, reblog_key, m_button, retry_mode, root_id, quick_queue_mode) {\n\t\tvar m_object = {};\n\n\t\tif (blog_id === \"\" || typeof blog_id === \"undefined\") {\n\t\t\tvar m_blogs = XKit.tools.get_blogs();\n\t\t\tfor (var i = 0; i < m_blogs.length; i++) {\n\t\t\t\tif (m_blogs[i] !== \"\") {\n\t\t\t\t\tblog_id = m_blogs[i];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (blog_id === \"\" || typeof blog_id === \"undefined\") {\n\t\t\t\tif ($(\"#tab_switching\").length > 0) {\n\t\t\t\t\tvar def_blog = $(\"#tab_switching\").find(\".tab_blog.item\").not(\".tab_dashboard\").attr('id').replace(\"tab_blog_\", \"\");\n\t\t\t\t\tblog_id = def_blog;\n\t\t\t\t} else {\n\t\t\t\t\tXKit.window.show(\"Unable to process request\", \"Unable to set Blog ID. Please return to the dashboard and try again, and send me an ask if this continues.

    The error code to report is OCP30. Thank you.\", \"error\", \"
    OK
    Send an ask\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tm_object.form_key = form_key;\n\t\tm_object.channel_id = blog_id;\n\n\t\tm_object.detached = true;\n\n\t\tm_object.reblog = true;\n\t\tm_object.reblog_id = post_id;\n\t\tm_object.reblog_key = reblog_key;\n\n\t\tm_object.errors = false;\n\t\tm_object.created_post = data.created_post;\n\t\tm_object.context_page = data.post_context_page;\n\t\tm_object.post_context_page = data.post_context_page;\n\t\tm_object.silent = false;\n\n\t\tm_object.context_id = \"\";\n\t\tm_object.reblog_post_id = post_id;\n\n\t\t// Not sure about this part:\n\t\tm_object[\"is_rich_text[one]\"] = \"0\";\n\t\tm_object[\"is_rich_text[two]\"] = \"1\";\n\t\tm_object[\"is_rich_text[three]\"] = \"0\";\n\n\t\tm_object[\"post[slug]\"] = \"\";\n\t\tm_object[\"post[draft_status]\"] = \"\";\n\t\tm_object[\"post[date]\"] = \"\";\n\n\t\tm_object[\"post[type]\"] = data.post.type;\n\n\t\tif (tags) {\n\t\t\tm_object[\"post[tags]\"] = tags;\n\t\t} else {\n\t\t\tm_object[\"post[tags]\"] = \"\";\n\t\t}\n\n\t\tif ($(\"#xkit-1cp-social-twitter\").hasClass(\"selected\") === true) {\n\t\t\tm_object.send_to_twitter = \"on\";\n\t\t}\n\n\t\tif ($(\"#xkit-1cp-social-facebook\").hasClass(\"selected\") === true) {\n\t\t\tm_object.send_to_fbog = \"on\";\n\t\t}\n\n\t\tif (typeof data.post.two === \"undefined\") {\n\t\t\tdata.post.two = \"\";\n\t\t}\n\n\t\tcaption = XKit.tools.replace_all(caption, \"\\n\", \"
    \");\n\n\t\tvar variable_to_use = \"post[two]\";\n\t\tvar current_caption = data.post.two;\n\n\t\tif (data.post.type === \"link\" || data.post.type === \"note\") {\n\t\t\tvariable_to_use = \"post[three]\";\n\t\t\tcurrent_caption = data.post.three;\n\t\t}\n\n\t\tif ($(\"#x1cpostage_caption\").hasClass(\"x1cpostage_remove_caption_on\") === true) {\n\t\t\t// User wishes to remove caption.\n\t\t\tm_object.remove_reblog_tree = true;\n\t\t\tm_object[\"post[two]\"] = \"\";\n\t\t\tm_object[\"post[three]\"] = \"\";\n\t\t} else {\n\t\t\tif (caption !== \"\" && typeof caption !== \"undefined\") {\n\t\t\t\tif ($(\"#x1cpostage_replace\").hasClass(\"selected\") === false) {\n\t\t\t\t\tif (!XKit.extensions.one_click_postage.preferences.enable_popup_html.value) {\n\t\t\t\t\t\tm_object[variable_to_use] = current_caption + \"

    \" + caption.replace(/&/g, '&').replace(//g, '>') + \"

    \";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tm_object[variable_to_use] = current_caption + \"

    \" + caption + \"

    \";\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tm_object.remove_reblog_tree = true;\n\t\t\t\t\tif (!XKit.extensions.one_click_postage.preferences.enable_popup_html.value) {\n\t\t\t\t\t\tm_object[variable_to_use] = caption.replace(/&/g, '&').replace(//g, '>');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tm_object[variable_to_use] = caption;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tm_object[variable_to_use] = current_caption;\n\t\t\t}\n\t\t}\n\n\t\tif (m_object[variable_to_use]) {\n\t\t\tm_object[variable_to_use] = XKit.tools.replace_all(m_object[variable_to_use], \"<br>\", \"
    \");\n\t\t\tm_object[variable_to_use] = XKit.tools.replace_all(m_object[variable_to_use], \"<br/>\", \"
    \");\n\t\t}\n\n\t\tif (tags !== \"\" && typeof tags !== \"undefined\") {\n\t\t\tm_object[\"post[tags]\"] = tags;\n\t\t} else {\n\t\t\tm_object[\"post[tags]\"] = \"\";\n\t\t}\n\n\t\tm_object[\"post[publish_on]\"] = \"\";\n\t\tif (state === 0) {\n\t\t\tm_object[\"post[state]\"] = \"\";\n\t\t} else {\n\t\t\tm_object[\"post[state]\"] = state;\n\t\t}\n\t\tm_object.custom_tweet = \"\";\n\n\t\tXKit.interface.kitty.get(kitty_data => {\n\t\t\tif (kitty_data.errors === true) {\n\t\t\t\t// We fucked up for some reason.\n\t\t\t\tif (retry_mode !== true) {\n\t\t\t\t\tthis.process(data, state, form_key, blog_id, post_id, caption, tags, reblog_key, m_button, true, root_id, quick_queue_mode);\n\t\t\t\t} else {\n\t\t\t\t\tthis.show_error(new Error(\"Kitty request failed!\"), state);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tXKit.svc.post.update(m_object, kitty_data.kitten)\n\t\t\t\t.then(response => {\n\t\t\t\t\tlet responseData = response.json();\n\n\t\t\t\t\tif (responseData.errors) {\n\t\t\t\t\t\tthrow response;\n\t\t\t\t\t}\n\n\t\t\t\t\t$(m_button).removeClass(\"xkit-one-click-reblog-working\");\n\n\t\t\t\t\tif (responseData.message === \"\" || typeof responseData.message === \"undefined\") {\n\t\t\t\t\t\t// No message\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (this.preferences.enable_alreadyreblogged.value) {\n\t\t\t\t\t\t\tthis.add_to_alreadyreblogged(root_id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.preferences.enable_alreadyreblogged.value || this.preferences.dim_posts_after_reblog.value) {\n\t\t\t\t\t\t\tif (quick_queue_mode !== true) {\n\t\t\t\t\t\t\t\tthis.make_button_reblogged(m_button);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tXKit.interface.switch_control_button($(m_button), false);\n\t\t\t\t\t\t\t\tXKit.interface.completed_control_button($(m_button), true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this.preferences.dont_show_notifications.value) {\n\t\t\t\t\t\t\tif (this.preferences.use_toasts.value && !XKit.page.react) {\n\t\t\t\t\t\t\t\tXKit.toast.add(\n\t\t\t\t\t\t\t\t\tresponseData.created_post,\n\t\t\t\t\t\t\t\t\tresponseData.verbiage,\n\t\t\t\t\t\t\t\t\tresponseData.post_tumblelog.name_or_id,\n\t\t\t\t\t\t\t\t\tresponseData.post.id,\n\t\t\t\t\t\t\t\t\tresponseData.post_context_page\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tXKit.notifications.add(responseData.message, \"ok\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tif (error.status == 403 && !retry_mode) {\n\t\t\t\t\t\tthis.process(data, state, form_key, blog_id, post_id, caption, tags, reblog_key, m_button, true, root_id, quick_queue_mode);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t$(m_button).removeClass(\"xkit-one-click-reblog-working\");\n\t\t\t\t\tthis.show_error(error, state);\n\t\t\t\t});\n\t\t});\n\t},\n\n\tadd_to_alreadyreblogged: function(post_id) {\n\t\tif (post_id && XKit.extensions.one_click_postage.already_reblogged.indexOf(post_id) === -1) {\n\t\t\tXKit.extensions.one_click_postage.already_reblogged.push(post_id);\n\t\t\tXKit.extensions.one_click_postage.save_alreadyreblogged();\n\t\t}\n\t},\n\n\tis_alreadyreblogged: function(post_id) {\n\t\tif (XKit.extensions.one_click_postage.already_reblogged.indexOf(post_id) === -1) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t},\n\n\tsave_alreadyreblogged: function() {\n\t\tvar limit_count = XKit.extensions.one_click_postage.preferences.already_reblogged_limit.value;\n\n\t\tvar limit = 3000;\n\n\t\ttry {\n\t\t\tlimit = parseInt(limit_count.substring(1));\n\t\t} catch (e) {\n\n\t\t}\n\n\t\tif (XKit.extensions.one_click_postage.already_reblogged.length >= limit) {\n\t\t\t// Drop 20 posts.\n\t\t\twhile (XKit.extensions.one_click_postage.already_reblogged.length >= limit) {\n\t\t\t\tXKit.extensions.one_click_postage.already_reblogged.shift();\n\t\t\t}\n\t\t}\n\n\t\tconsole.log(\"already_reblogged length is \" + XKit.extensions.one_click_postage.already_reblogged.length);\n\t\tXKit.storage.set(\"one_click_postage\", \"already_reblogged\", JSON.stringify(XKit.extensions.one_click_postage.already_reblogged));\n\t},\n\n\tshow_error: function(error, state) {\n\t\tconst verb = [\"reblog\", \"draft\", \"queue\"][state];\n\t\tlet message = \"\";\n\n\t\tif (error.status) {\n\t\t\tlet response = error;\n\n\t\t\tmessage = `The server returned HTTP ${response.status}.
    `;\n\t\t\tswitch (response.status) {\n\t\t\t\tcase 200:\n\t\t\t\t\tmessage += \"However, Tumblr has indicated that something is wrong.\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 401:\n\t\t\t\t\tmessage += 'This may mean that your login session is broken, or that your browser is not sending Referer headers.';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 403:\n\t\t\t\t\tmessage += `This usually means you've been blocked by the owner of the post.`;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 404:\n\t\t\t\t\tmessage += `The post you are trying to ${verb} has been deleted.`;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tmessage += \"We're not sure what this means.
    Please consider reporting this to us!\";\n\t\t\t}\n\n\t\t\tmessage += \"

    \";\n\n\t\t\ttry {\n\t\t\t\tlet data = response.json();\n\t\t\t\tif (data.errors !== undefined) {\n\t\t\t\t\tmessage += `Tumblr provided this error message:

    ${JSON.stringify(data.errors)}

    `;\n\t\t\t\t} else if (data.error !== undefined) {\n\t\t\t\t\tmessage += `

    ${data.error}

    `;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tmessage += \"Tumblr returned a generic HTTP error page. Please try clearing your Tumblr cookies, then try again.\";\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error(error);\n\t\t\tmessage =\n\t\t\t\t`An internal error occurred.
    \n\t\t\t\tPlease ensure you are logged in and try again.

    \n\t\t\t\t

    ${error}

    `;\n\t\t}\n\n\t\tXKit.window.show(\n\t\t\t`I could not ${verb} your post.`,\n\n\t\t\tmessage,\n\n\t\t\t\"error\",\n\n\t\t\t'
    OK
    ' +\n\t\t\t'Visit the New XKit Blog' +\n\t\t\t'Live support'\n\t\t);\n\t}\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAACzVBMVEUAAACWySrE5k/J5k+UxyjE5E2VxyfF5E2UxieVxyiWxyjD4kzE5E3G5U+TxSeVxSeXyCmYyCnC4kvF5E7F5E+UxieUxyeVxyeVxyjE5E3F5E7F5EyTxSaUxSaUxSeUxieVxieVxiiVxyiWxyiWxymXxymXyCmXyCqYyCqZyCqZySuaySuaySyayiybyiybyi2byjCcyi2cyy2dyy6ezC+fzC+fzTCgzTCgzTGhzjGizjKizzKjzzKjzzOkzzOk0DOk0DSl0DSl0DWm0DWm0TWn0TWn0Tan0jao0jao0jep0jep0zep0ziq0USq0ziq1Dmr1Dms1Dms1Dqs1Tqt1Tqt1Tut1juu1juu1jyv1Fev1VCv1jyv1zyv1z2w1lGw1z2x1lqx1z2x1z6x11Kx2D6y1luy11Ky2D6y2D+y2T+z11yz2T+z2UC011O011y011202FS02UC02kC11W212VW12kC12kG21W622F622V622la220G220K31W631W+32V+32la32l+320K320O33EO41m+42la421e43EO43ES51nC52mC53ES53Fi53US61nG622G63Fm63UW73GK73kW73ka83GK83Vq83ka830a830e93Vq93WO93mS930e930i+3lu+3mW+30i+30q+4Ei/3ly/3ma/4Ei/4Em/4UnA3mbA31zA313A4F7A4UnA4UrB32bB32fB4F7B4UrB4V/B4krB4kvC4GfC4GjC4V/C4kvC4kzC40vD4V/D4WnD4kzD40zE4WnE4mDE40zE403E5E3F4mHF4mnF4mrF5E3F5E7G42DH42vH42zI42zI5GzJ5W3K5WzK5W3Y2NjZ2dna2tnb29vd3d3e3t7m5ubn8s3o6Ojo6eTp6enr6+vs7Ozt9s7u8Ofw+Nby8vLz8/P09PT39/f4+Pj5+fn6+vr7+/v9/f39/vv+/v7////REcRKAAAAHHRSTlMAPT09enp7e7KysrKysubm5ubm5ub9/f39/f3+7gexhgAABDxJREFUWMOVl0uu3UQQhr9ql33yQEiER1gDQmyBOUMmiM0xYAKZkGSQCMGAZbAGlIgIcuNz3V1dxaBtn3MuyY3dE9st1+uvt0B39/CUvvSYGn3pCQkkhJAAoPSFvvRICHnI6/s301gRDp88CkFCAPDk1K6ippgaaroyOxfQhHz3okh6+BPzWSQDK4PldLW7YDyf7/+S+88u1MxDBmDIA3nI6/PmHUAeMt/qYURNIcOoIzoqyRM5ZciQyaSc8OTkdtH+m2kGeXxgOkyoKV3tmA7TKukwHahdXVU+vw+J9i6PT/YDKwY3MTl/v/jWab1DQlYcFuQXqeduPUwHylDat5quDIoWCgUd2531RtRAJsHFEW8avNE36JvZzZp9sbH/+gO2nX//gNIA9kStVAC+2krPh1/GGOPICFXNSZ7w5MLmU3LKCcNw9UqlQsW3M6BKbaBWzd3/XLRJByl4cjo1FhBjO7lVmOn0FKqNQc23knZDw6B2lf7Yk5WKiSE2R4n9fSuD+wOAmZpCB1Vzoc89QewwoViRlr1FrwauhisA287APQ+ZiYlBo6VoyKzB8PGtpDrHwUxD1rK6sKEnd7ZoMK1ZqqWn9GVnHIggcxVTKUgR8pBbRtg/t5LevQcwldIXhnGg6NgKpoW1ylCvb4+DeycMxm4EDcFxxGVPMlnyRHggmjs8OcBcm7rbrZ9DuVKpXaVT76ipkjzN9erzbTr0BRy6xPHIETI5bzchX/u1Ow7HZDAxTUy7stnCIizM0NwRNahRWyjnV2+z/LN31wOC2lUkpLTQsndCd6aAhwQ4hIYhJrj4jmTKNSRInjCNoKaKLF0jDRsYhCdPrc1rpamyVLT+0y0axNILUF9b1h43xtpLk0cQ4HjdgwEVHPfQaKkstiedrXo4YkJRS1hnJE91TyQFDfykLROpqZYdjam50RKus9zYU5TnAaNSIfkSa3swmAqlgYha642e/GqHCVFjqQcEnhxxSbvSsWspcJ4L1ztKWqU2T5h6nDyzIw662kph6I7BpCwoxWtMDBxE23iDhBzfG8Bje6bfXkK0wTwpvmTjVhPSs1/mab0Kriyju2wsKOnJ02U9EAj1gGB7b0xPnoT4OtnGUg8q23IhPXoO0UI5CESJPQ5MPz+fx4GZJjTWKb1soX8G+IUJ8wojIe9vLenHX0MCNW07VGeoYmBQU/3z5YP3zCU//N7CN6zFQEmYfHG5L0jIElgstf/8e1nAPPm8L5xvIUuZskTMWYqflf0ZuHmunL1wIwAXiU1n8LfN4HFiGE1Ia9WOu7kZdroLIjx85bPcV2r16o589GCVei79Jh5vW7wkhBc6gSVb7V4DZMYDb2Yta/EipKsdLk4WeXh34bYgu0hZtDjtypeeCYnji46sSTxibnHn6oXEeogTeEHMyo6vXEDu9B+1Cjsv2Bdz4Xy3SD//5/U0Bf8BBdxZWHJNwMEAAAAASUVORK5CYII=\n","css":".post_controls .post_control.reblog.reblogged:after {\n content: '\\2713';\n font-size: 18px;\n color: #56bc8a;\n opacity: 100;\n display: block;\n margin-top: 0px;\n margin-left: 0px;\n background: white;\n height: 10px;\n line-height: 10px;\n}\n\n#x1cpostage_quick_tags {\n\tmax-height: 70px;\n\toverflow-y: auto;\n}\n\n#x1cpostage_quick_tags .xkit-no-tags {\n\tpadding: 8px;\n\tfont-size: 12px;\n\tbackground: rgba(228,232,238,1);\n\tcolor: #7a7f8e;\n\tborder-bottom: 0px;\n}\n\n#x1cpostage_quick_tags .xkit-tag {\n\tborder: 0px !important;\n\tmargin-top: 1px !important;\n}\n\n#x1cpostage_quick_tags.xkit-no-reverse-ui .xkit-no-tags {\n\tborder-bottom: 1px solid #abafbc;\n\tborder-top: 0px;\n}\n\n#one_click_postage_warning_movage {\n\tpadding: 15px;\n\tfont-size: 12px;\n\tcolor: rgb(80,80,80);\n}\n\n#xkit-1cp-social-twitter,\n#xkit-1cp-social-facebook {\n\tbackground: rgba(245,245,245,1);\n\tcolor: #7a7f8e;\n\tborder-bottom: 0;\n\tfont-size: 12px;\n\tfloat: left;\n\twidth: 99px;\n\ttext-align: center;\n\theight: 30px;\n\tcursor: pointer;\n}\n\n#xkit-1cp-social {\n\tmargin-top: 1px;\n}\n\n#xkit-1cp-social-twitter:hover,\n#xkit-1cp-social-facebook:hover {\n\tbackground-color: rgba(234,239,246,1);\n\tcolor: #7a7f8e;\n}\n\n#xkit-1cp-social-twitter.selected,\n#xkit-1cp-social-facebook.selected {\n\tbackground-color: #c5cdd8;\n\tbox-shadow: inset 1px 0px 0px rgba(255,255,255,0.12), inset 0px 1px 3px rgba(0,0,0,0.12);\n}\n\n#xkit-1cp-social-twitter {\n\tborder-left: 0;\twidth: 100px;\n\tmargin-left: 1px;\n}\n\n.xkit-one-click-reblog-working:after,\n.xkit-one-click-reblog-working {\n\tbackground-image: url(data:image/gif;base64,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) !important;\n\tbackground-repeat: no-repeat !important;\n\tbackground-position: 50% 50% !important;\n\tbackground-size: auto auto !important;\n\tcursor: default !important;\n}\n\n#x1cpostage_caption {\n\twidth: 200px;\n\theight: 90px;\n\tpadding: 10px;\n\tresize: none;\n\tborder: 0;\n\tbox-shadow: 0px 1px 0px white;\n\tmargin: 0; display: block;\n\tvertical-align: middle;\n\tbackground: white;\n\tmargin-top: 1px;\n\tborder-radius: 0;\n}\n\n#x1cpostage_clear_tags:hover,\n#x1cpostage_remove_caption:hover {\n\tbackground: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%); /* FF3.6+ */\n\tbackground: -webkit-linear-gradient(top, #ffffff 0%,#dddddd 100%); /* Chrome10+,Safari5.1+ */\n\tbackground: linear-gradient(to bottom, #ffffff 0%,#dddddd 100%); /* W3C */\n\tcolor: rgb(80,80,80);\n}\n\n#x1cpostage_clear_tags:active,\n#x1cpostage_remove_caption:active {\n\tcolor: black;\n\tbackground: -moz-linear-gradient(top, #D1D1D1 0%, #ffffff 100%); /* FF3.6+ */\n\tbackground: -webkit-linear-gradient(top, #D1D1D1 0%,#ffffff 100%); /* Chrome10+,Safari5.1+ */\n\tbackground: linear-gradient(to bottom, #D1D1D1 0%,#ffffff 100%); /* W3C */\n}\n\n#x1cpostage_clear_tags,\n#x1cpostage_remove_caption {\n\tbackground: #ffffff; /* Old browsers */\n\tbackground: -moz-linear-gradient(top, #ffffff 0%, #D1D1D1 100%); /* FF3.6+ */\n\tbackground: -webkit-linear-gradient(top, #ffffff 0%,#D1D1D1 100%); /* Chrome10+,Safari5.1+ */\n\tbackground: linear-gradient(to bottom, #ffffff 0%,#D1D1D1 100%); /* W3C */\n\n\twidth: 200px;\n\tpadding: 5px 10px;\n\ttext-align: center;\n\tresize: none;\n\tfont-size: 12px;\n\tcolor: rgb(130,130,130);\n\tborder-top: 0;\n\tmargin: 0;\n\tposition: relative;\n\tcursor: pointer;\n}\n\n#x1cpostage_clear_tags {\n\tborder-top: 1px solid #abafbc;\n}\n\n#x1cpostage_replace {\n\twidth: 200px;\n\tpadding: 5px 10px;\n\tpadding-left: 22px;\n\tresize: none;\n\tbackground: rgba(255,255,255,0.86);\n\tfont-size: 12px;\n\tcolor: #7a7f8e;\n\tborder-top: 0;\n\tmargin: 0;\n\tmargin-top: 2px;\n\tposition: relative;\n\tcursor: pointer;\n}\n\n#x1cpostage_replace.selected div {\n\tbackground: #4c990d;\n}\n\n#x1cpostage_replace div {\n\tposition: absolute;\n\ttop: 8px; left: 8px;\n\twidth: 10px; height: 10px;\n\tborder: 1px solid #abafbc;\n\tborder-radius: 10px;\n}\n\n#x1cpostage_reblog,\n#x1cpostage_queue,\n#x1cpostage_draft {\n\tbackground: rgba(245,245,245,1);\n\tcolor: #7a7f8e;\n\tborder-bottom: 0;\n\tline-height: 30px;\n\tfont-size: 12px;\n\tfloat: left;\n\twidth: 68px;\n\ttext-align: center;\n\theight: 40px;\n\tcursor: pointer;\n\tbackground-position: 50% 50%;\n\tbackground-repeat: no-repeat;\n\tmargin-top: 1px;\n\tposition: relative;\n}\n\n.xkit-1xcpostage-non-reversed #x1cpostage_reblog,\n.xkit-1xcpostage-non-reversed #x1cpostage_queue,\n.xkit-1xcpostage-non-reversed #x1cpostage_draft {\n\tmargin-top: 0; margin-bottom: 1px;\n}\n\n#x1cpostage_reblog:hover,\n#x1cpostage_queue:hover,\n#x1cpostage_draft:hover {\n\tbackground-color: rgba(234,239,246,1);\n\tcolor: #7a7f8e;\n}\n\n#x1cpostage_reblog:active,\n#x1cpostage_queue:active,\n#x1cpostage_draft:active {\n\tbackground-color: #bdc1c6;\n\tbox-shadow: inset 0px 1px 2px rgba(0,0,0,0.42);\n\tcolor: #7a7f8e;\n}\n\n#x1cpostage_queue,\n#x1cpostage_draft {\n\tborder-left: 0;\n\twidth: 64px;\n}\n\n#x1cpostage_reblog,\n#x1cpostage_draft {\n\twidth: 65px;\n}\n\n#x1cpostage_queue {\n\tmargin-left: 1px; margin-right: 1px; width: 68px;\n}\n\n#x1cpostage_reblog {\n\tborder-radius: 3px 0px 0px 0px;\n}\n\n#x1cpostage_blog {\n\twidth: 100%;\n\t-webkit-appearance: none;\n\tmargin: 0; padding: 5px 10px;\n\tborder-radius: 0;\n\tbox-sizing:border-box;\n\t-moz-box-sizing:border-box; /* Firefox */\n\t-webkit-box-sizing:border-box; /* Safari */\n\n\tborder: 0;\n\twidth: 200px;\n\tpadding: 5px 10px;\n\tresize: none;\n\tborder-bottom: 0;\n\tmargin: 1px 0px 0px 0px;\n\tbackground: white;\n}\n\n#x1cpostage_draft {\n\tborder-radius: 0px 3px 0px 0px;\n}\n\n#x1cpostage_reblog:hover i,\n#x1cpostage_queue:hover i,\n#x1cpostage_draft:hover i {\n\topacity: 0.8;\n}\n\n#x1cpostage_reblog i::before,\n#x1cpostage_queue i::before,\n#x1cpostage_draft i::before,\n#xkit-1cp-social-facebook::before,\n#xkit-1cp-social-twitter::before {\n\tfont-family: tumblr-icons, Blank;\n\tfont-size: 2em;\n\tmargin-left: 2px;\n\tvertical-align: middle;\n\tposition: relative;\n}\n\n#x1cpostage_reblog i::before,\n#x1cpostage_queue i::before,\n#x1cpostage_draft i::before {\n\ttop: 4px;\n}\n\n#x1cpostage_reblog i::before { content: \"\\EA8F\"; }\n#x1cpostage_queue i::before { content: \"\\EA8E\"; }\n#x1cpostage_draft i::before { content: \"\\EA25\"; }\n\n.xkit--react #x1cpostage_reblog,\n.xkit--react #x1cpostage_queue,\n.xkit--react #x1cpostage_draft {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-grow: 1;\n\tjustify-content: center;\n}\n\n.xkit--react #x1cpostage_reblog i,\n.xkit--react #x1cpostage_queue i,\n.xkit--react #x1cpostage_draft i {\n\tbackground: center / contain no-repeat;\n\twidth: 23px;\n\theight: 23px;\n}\n\n.xkit--react #x1cpostage_reblog i {\n\tbackground-image: url('data:image/svg+xml,');\n}\n.xkit--react #x1cpostage_queue i {\n\tbackground-image: url('data:image/svg+xml,');\n}\n\n.xkit--react #x1cpostage_draft i {\n\tbackground-image: url('data:image/svg+xml,');\n}\n\n.xkit--react #x1cpostage_reblog i::before,\n.xkit--react #x1cpostage_queue i::before,\n.xkit--react #x1cpostage_draft i::before {\n\tdisplay: none;\n}\n\n\n#xkit-1cp-social-twitter::before {\n\tcontent: \"\\EAA5\";\n\tbottom: 1px;\n}\n#xkit-1cp-social-facebook::before {\n\tcontent: \"\\EA40\";\n\tbackground: #7a7f8e;\n\tfont-size: 1.2em;\n\tcolor: rgba(245,245,245,1);\n\tborder-radius: 2px;\n\tpadding: 5px 0 0 5px;\n\ttop: 8px; left: 2px;\n}\n\n#x1cpostage_tags {\n\twidth: 200px;\n\tpadding: 5px 10px;\n\tresize: none;\n\tborder-top: 0;\n\tborder-radius: 0px 0px 3px 3px;\n\tmargin: 0; border: 0;\n\tbackground: white;\n}\n\n#x1cpostage_box *{\n\tbox-sizing:border-box;\n\t-moz-box-sizing:border-box; /* Firefox */\n\t-webkit-box-sizing:border-box; /* Safari */\n}\n\n#x1cpostage_box {\n\twidth: 200px;\n\tposition: absolute;\n\tz-index: 1000;\n\ttop:0; left:0;\n\tdisplay: none;\n\tbackground-color: #bcbcbc;\n\tbox-shadow: 0 4px 9px rgba(0,0,0,0.35);\n\tborder-radius: 4px;\n\tpadding: 1px;\n}\n\n#x1cpostage_box input,\n#x1cpostage_box textarea,\n#x1cpostage_box select {\n\tfont-size: 14px;\n}\n\n#x1cpostage_box:after, #x1cpostage_box:before {\n\ttop: 100%;\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n\n#x1cpostage_box:after {\n\tborder-color: rgba(245, 245, 245, 0);\n\tborder-top-color: rgb(245,245,245);\n\tborder-width: 10px;\n\tleft: 50%;\n\tmargin-left: -10px;\n\tmargin-top: -1px;\n}\n\n#x1cpostage_box.xkit_x1cpostage_queue_hover:after {\n\tborder-top-color: rgba(234,239,246,1);\n}\n\n#x1cpostage_box.xkit_x1cpostage_queue_press:after {\n\tborder-top-color: #bdc1c6;\n}\n\n#x1cpostage_box:before {\n\tborder-color: rgba(0, 0, 0, 0);\n\tborder-top-color: #bcbcbc;\n\tborder-width: 11px;\n\tleft: 50%;\n\tmargin-left: -11px;\n\tmargin-top: -1px;\n}\n\n#x1cpostage_box.xkit-no-nipple:after,\n#x1cpostage_box.xkit-no-nipple:before {\n\tdisplay: none;\n}\n\n.xkit--react .reblogged svg[fill=\"rgba(var(--black), 0.65)\"] {\n\tfill: rgb(var(--green));\n}\n\n/* in-frame styles */\n\n#iframe_controls, #dashboard_iframe {\n\twidth: auto !important;\n}\n\n.xkit-in-frame-button:before {\n\tcontent: '';\n\tdisplay: inline-block;\n\tvertical-align: bottom;\n\tbackground-size: contain;\n\tbackground-position: 50% 50%;\n\tbackground-repeat: no-repeat;\n\theight: 24px;\n\tmargin-top: 2px;\n\twidth: 24px;\n}\n\n.xkit-in-frame-button.xkit-button-done {\n\tbackground-color: #59982a !important;\n}\n\n.xkit-in-frame-button.xkit-button-error {\n\tbackground-color: #982a2a !important;\n}\n\n#x1cpostage_in_blog_reblog:before {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAQAAACROWYpAAACsUlEQVQ4y92TXWyLURzGn7etbu20xUJ1GJtMZW1iFuIrSgmJjNiNLLIlEty4IkEkE4lIuJL5uhGyBIkLmW8mFUFkpqMTEjSI1FekLOuqW9v14z3ncVFm64fI7njOzXn/Ob83z//8nwP8x1LylzV/gWqhHzXsm/2oedm0UXr+tiYhPLsbK0cFc61kmvcONzn/cOhpQ+A2I4xQHbEkBSmopnu66xbDUAAOHpQsIEmSyUTHKZiHE7rf28k7AQIyZy4q9BIU8U+vuyAK9ZaQTKnv3ACNvxfADWSaD06YqtZrC/YcOppIXdsEU3ZdGGX07dJt1lximEd/Q0/V8uNnV1V8dXUOFbW1k2ps1aVNhji8A5eDl75gIG/P1Vdg2VG95IChHT/hMv208pUrnG7HXIt9bMrmcz223Lrz/HMon+/iffXJmCAP/XK1sOrIwYBfiLRKUqpqIuq5vqsBpqysz9KUlnu2JyOCJKM8zXM3NkyZv3dL4FWSJHmG9ylJhmP3zruX1WlH2NYquqnWujFmBQBKsBUo+lApnO4ZdgVheHESXYjDgHHG6QtWv9B528VwGLqkfQ5AKABBSNvj9Wq1Q0CHZ9iDl0MeS6yuSiX7ORWPaXDcPJCWkmyVNtqBvsb4VUmyj5cJgnGSZIqxY1FD1m0n0hdeyfMTlHnNiV5zEEEgHtH3kYoyHusyvwcASEQgmDMqoO1NW4uvzPw589URsn5fKjXaQfgyOYADQCjUpdXkgwGE65uRzGwvhl1cnNCVeLERwES0ogXA94Cnu0gWjOnQFE2bV3quD8QG+YSd9PETSf+71v22mbM1v665sFK9/caYkcXGSn2Fvgyi573fe+luu/d1r8jJdl6Z3LWrF7nKa5wDHzr7Pd03O4IfoebJdl5FjQ91XkVDTZoaWSQtIijxr+sHu+9s31zLlM0AAAAASUVORK5CYII=);\n}\n\n#x1cpostage_in_blog_queue:before {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAQAAACROWYpAAADaUlEQVQ4y9VVW0xcVRRd59wHM5cBpjIwRJgyoiYtHZmH0ik2FUihNW3apqmhqcTYNPphjIkx/fDDHw1pTIz+SjTRYn2kjTU+UNRYA0FeJnUo0UiqTmEEKnXAYbjDnce9d/sxWGY6Q+pv988+5+Sss/ZZZ+99gDvSWOFKJ9/Dd/Lt3M6SdJVC5oh5wSSzGFgsWKlUPRm/2eh8TBCtptmvT2tXaBKR28fBd3nPnlb/1g3DzJBBOqV0be3ytxfPPNEKW+F2IRf6gqfzyWBXTb3AGONg4BC4KNXc2xCE3BgbmoOxKe0u71uvZ3STipmmf/9x577NmBkcPceCXc7qHAVpQ06Ri/Z6PjYdW4VZAO4UnM0njvke4QAwrn3w+3K5U7TmsljLSsRwOB6JpXLumXV7eIff/+j6SV8qLza+vBAyAECjbkoDgIwq90MtXeV5+mbdTt7isijZsVEK4KeBz3+ZQ4I8/EP15HqQNp+v1VbknbdzZ4WxPuGnyMqef/adsUlIPAy8NHz4qR0zS8p0w3yVtFoEbCfxAT07IVZNzyR+Vc6yQQDMW//XPUNqQ9k19t1SVJ2iIuAk2SzGRsLKvDcax0cWyeve2+5p2+F3SVWusvGpsfJrqeTs0i1qHxFrO9j9Av8PL+Lnyjr9auzpU4+f3N3m2CI6ZO6qCwRKa6yJ0QgyeYKFaFw107khxRdDUnf7kaO1jZyLYh98jIuyLbj3wOH2wEGeBx4xX7tgJnMvZEzciDZ1uLfJ+Adf4TnEkQRgV+qD+1rahPw65Nh68YyW2kjI3w6+0bEYzehEl8hDArlpjYiI4trIu6OWPGYyEfn0my/OmzfJXSvdJXdpggD48Qrkm1lZmvBeaWIF9XzucoPFoTx8iMkygBJaWVPsCjG2BYcggiFLZ1YkJc0sLMn00NzCkiNZIgpWyaKeezsuBbbWcq5hAn0QcADVANLG4Mz81+eNW8GAEf5jbDocvrGcyoQGe5a3OR/0CfIwjmMFaUjYD2B5vvf9yNSPZtE2NDOL6N2j99msfy6yyYGJpubW3XI/MpDhBKClB/r6hyuM/9EdXZWnj098thrT05QkSqcSK+/1nGjeIGS3wZe1B5qPuuvURGIxEJ2hVz+5Pgt98+6Zb6ryQ68qpWq4r/TNha6FCuO6eWf+MTn2L9VJbUlYLARpAAAAAElFTkSuQmCC);\n}\n\n#x1cpostage_in_blog_draft:before {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAQAAACROWYpAAACNElEQVQ4y+WUy0vUURTHv/enM2qJqaNGJmY+ImzTRGBQoA1GkES0iTa1aVO7oBbhLvoD2rRoGxEktWgRIpklpUamqBlCpGE4mA9kHNDR8Tfz+7Tw0S/n56PaBJ3N5XDO57zuuVf6jwXzd3gYB4NDOuAHDLATGN8ObJPAkMTCwVqB/QDbqA3jNrNj5QSwsEjbPPMo857NLMvQn0ziKu+X6c3dJlKjrzbCXgo2h7M2GgkZW2fuZHhDmyf8Sy6MWe+SVlV0oaS+KGgl9rcPPf3+OKzoT2O6Cx3QqM65yWJ/aWnoZHUoN2hV+kxh94nuXS2tvV+nvEpb33HasYq7d0Y+JZJ2AsC247FXLY2XlO8FtzHg1qt2N14Z+RgH4BGtJIHowrumhrOrHpbL+5QOu+GG/YdCZdV+RfVS99WhRaGczH3B2pAXPKgOl+YLlgePgtSvG+qXreVZZhcdr9HWMn15KeY4MMMTDnKTORwgMR+b40xKZjoZc8N2fCkdI+XrvAKylCkjKWktxL3KrlO5RCE+iQKs1xO9PU5CsjWoiMIaFpKiM11dpjl12hEiWHyRWMTHhPYQi8fgDcWIPK6xBHzru37LY0kUVaFxKJEUk6U8zWqy83NN7ZHMB7LlV7F8Gh3vaWt/kQJjTJkkmSzJ5EvKkFVRc/F0RvRAsD6gXCUXpsamP7S1Pu9fe3tr/8Ntj62JzL8NT85GEjmBQEE8OTp2r+nhs+Y+LW7jqlxRsqmj8reQf1l+APx4N+s7sBEuAAAAAElFTkSuQmCC);\n}\n\n.iframe-controls-container--stroked-buttons #x1cpostage_in_blog_reblog:before {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAQAAACROWYpAAAD7klEQVQ4y9WUT2xUVRTGf/e+9+Z/C9PpHzopRV5LK1JDAROQaghlEsBoIkZijImGjSESl4aFG9dqognGkLgwbogYdGH8Fx2LiFbAYk0BKy19pUAFBjqd6XRmOu/Ne9fF2HbaBV177+6e893z3fOd+8H/comVEhISOSsjZVRSrQBOiCUnAp3gXNj216YpYi+HV6UmNAKE0JELRzpBIk9u2tT74edyhAxZSklvEaEtQA1W0UQzDcSoo44odTSwhqYd3c8fLjGuXBcD1yxb3uLd81VX0UoLkaq6AoEOEcMvXn0xHDvVODfCKBOkl9BOCMK0H3xp677uNtD8S94lFEJ4uN71W6+fyP8RuMRY0qnE5H/1I9S3d27r0oN6UMjqjRACJTFkS/zQE15dNbcKbYMIkV37BQqllqunXKl7eN5U+k9LzuGgloPD6KBwvGPvfjcanSfuiXJ67sj2Z494nDzzXl/0dmCcFM6yhgFcON3d+/7HX48FC9OzKAQCiYZxYvjp0tvH+lPRu/zDBNOLamsApoaBP157ZfLTs7s7O9T1y6S4T4a8q7kxo+nMUHugvSYQSBdTuVDRdC23GuzhUB649eukufa1V9aW+74hRZpcCdW6cfvOnqd69u7u2kZcb3SCU/jyZrGitQZgKdND2bHNe44fba5Lj38/gZ8aL0rXrucO9e7rbA77hV+Yse1tMp4NTma1++22pRYmrFG703nk5TcOBwKS2EM9rQf2ztZfXLO5+9CejrghNPEJGbFe+PTmOi9yxdVGyVnlxYZJJ/7wjmBQALp/wy6IzawKP9r9yBrJNL9xnHMUCFJvdK3r2notad9jbn5IsF0ym00qEiqlPC833lna0uwCgxzl3IImsdBjTXqcSEIs0L7t1abO/2yrri1CjPa/9cGFX06PHTA3ROubBatZz0ngTQwgJLN3Lg6VrpO11ILON+Y6Bk4F/DUHDt4rXJ1hCpkpFvNKCRHlGQAClbmhoFwXhVoyJNjFwXc+Cjfk7jJLkfBwLlTYqKQo8jsAf7EJmCyNUM5jo6r+M1jKdIMzP1y7+Ldxmzvo2dUh8/EWQz/LC+RpwGUvMJT5Yrjwk7qRLCytDA7TtefLPlwcCtO+y7EvG/Zv3On7CgcfTcCFmaR1cyA0IWeXOAmAheVapfZismjZZslXzoi0pmTI16a36XEKuUupb4cH+90f9VEKlloGnr8CwHLMsmHfLQ0VJvP5qVrn6mjfzc8GB854fcYVZipO9gDrTWhEvFa5Tm/0+XzSVbbtpMtj8ibZeRN8oG8nNELEWE0NfhxmSXOf/KJ/rmz6Oj4CSFxK2MlydWxFMEBCIlDVjl1Z/wI8QJgZAEdE3gAAAABJRU5ErkJggg==);\n}\n\n.iframe-controls-container--stroked-buttons #x1cpostage_in_blog_queue:before {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAQAAACROWYpAAAEHUlEQVQ4y6WUXUxbZRzGn/c9Hz39LqXY8dXykSFsOOjmZAjOgR9MAtFoIhpjJDHZjZE744UmJt55sV34ES8WExezLLsgijGLLlM3dTOjVKYTEDJGyWCsBdq10NPTnvOe40UpbbepS3yvznvy/t7z/z/Pc/7A/1jkH95y4EDBwKDDuH+YQoQZZpjAgSEFBSoYNBh3X3InzMEqVIgVoksyc7yuGuvZhJxKp5BCBuqdOF+yE2BHW+WBjtYu3/A+gerGVxPB+YvToRmEEUMc6VKcFD2JcNV1vdj/1pDLSqETCgOarmmX/vx99vT4RBALiEIrLTOPmuA+1Pnsy4OHGj08IYSCgIInItdQGWhhEp+diyJZKl8eFlHmO/jc0Dsv+Jz0LlkEuscvWv5KrS5CA4NeCvNwYNcbg4M9ta4iBY1CUwKRrB7hp0h2A0qh9BwsCV5/93Bvz0MUQPLqzHfhmLtckIq/b7OY+CurkWUtAaXgKkBEyeHpbnv64dxNi78EPu88NTPPALDM2XeZmuvL5+1sbXFuN5qHXeYHKvbWW01b1dqJgMUT46E1TXntSF/wi6NbspgfbWyTCh0DPFBnFj2O6g4n2zL9wYFJR+Djj74Wp0OmkxGY3rs+/6kWJSL1qNKtdWQKevOA02TYqaXWuwUbJldr/2h4ZPToeRhwO3w2X0jf64oa83I2PgXw4MC2YQuXoQYTObYdG8o/M/LB+isnSXZHY1dbR6CzrpkX3Ofmgle41pC8uYBUTnEOqBHUMlJ9eJfbw5M8z2OljEc48fpLI32DrVVWm91EdpZ3N1kqZWH2NpLQYAAUUDNKIh37La2yYmuiiVlb/1Ov9jT5OSJwJ9BOOM5iPhwYOrjzEbEC4pbakWw8Hl/+8IKWLU790lxEOdDV4hcRxxm8iSQUAOWmPc297RYHBBCAAkt6dPPW0sTl49+ki2IvR3Ybz+9nBjCJtyFvS1xb3ltjE0HzPsPIsBi7dvryZxf0rTNKMqN0SI4sT4EA3oe4ba+Ysc87tNw2Zy2DjNVQsEaqdg20U47HH+OqKarpVsMgpAyD4EGQSytv0TklWwwbyCAGfWwzSkEeryrfoVnS0kT8h4WBZkrSCEJFGtPYDUAzbnhZBgxG4Zc0oCGNxNL05HJDy69XLy5G5fPRGvtjDQL/M4aQQBYC+gCsrB07E74kb0BHccyhQ4MaW4lNXaf19tFvb68yrcrrq/DTJzCMI3gSTqS0T8ZOnZWv6UrxMMgvBrYQnwv+OL5xE/G1VFJ1S1VuH61lNZykycqxL8e+vxHS13MBvdfcpqAAGEQ4Ud+0r7u3wZtUEnF/IsKOn5OncBMbOcHuPfQLKbWaXGQ/4Wyczzy9woXTMZZEOu/bv8G5tkSIuTyBQS2d3v8Fl54x7uP0/a6/AViNn6QcB67OAAAAAElFTkSuQmCC);\n}\n\n.iframe-controls-container--stroked-buttons #x1cpostage_in_blog_draft:before {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAQAAACROWYpAAAD0ElEQVQ4y9WUS2xUVRjHf+c+5047bbBaOyDWPmiVAmIlIqjQkAuRiqESAi40bDRxaXDTmBASF+DCjYaoCdFETNAY6zugMFFeEtNi0pAWbVXEQqbQ2tdM53XP3HtcTMtMH9G1d3POzfl+9/99/+87F/6Xj5jduAILRX5hSCz4D9gVdjS3EskwqTnnGgETsfS/JuCG3T0TKlBb96tgxx6lOvYqtW23UntfUsr72w0vTmkzq0VtRClFVCEjqEw5qEpI3QdmFdWu5Qol5sOzaTtsFRuQaoTBQt1ReziHzdrTh6C9XYtXxeNj86s3Zlaf+BcvWpHtm/kFD2AYIMLyZCpSduIEpK/vXOtOxNRiMPg7XwZyZGLebSc0kicvPdEcrYHwcqIk5najCPPNES+1a8ecvLJm91F5VFKx4n45ho3u+qXaJfDz+6fkPEcC+Re3sO5a9fYx2LoODeECsx/QipHvdH72xpz2CTQEkvyomok1MDHQXDHXbYsWWjQR9NEf88AVCAT6pC1rNtXfu7EyGi3vO99z+dK1pgny+ChUTJWk/emh1Oi+F263UENPlNl1m9ta2h5oXVmjhLXa6qk43fvznXEkPgGqRFlbFSj66Y95rkDDSDpG49PPdbQ3NgSYGkg/kGe6v+v68mT9TTzyBCXKH3bakd07Z2rVMWX0sbaO7XUrdHSOU80W3dQfXW9N/5qUX6NQc9ze9/rtAdIwMFsbWzY1NupM0cO7bGEjDpV2/aoNI+dOFdIucfuTw8cPAKJQb7JsZcO6NUpBL6/Qi6RgeWXV4w9hY6GjlcC7Op99bcYsgR5RG+zmGl2D1RxgGbNjFzYeaTrsYqAjirD4+OBXb2FiYRPCIZRE6krAHTxDFRohBOBraSkNdHS02ZoF4X3vY9KwfslAYlKsqb4iT1nyT7fB0iT9THCD32lCMJa8MPjej2iIorJOddfBrlf1hs5jk03fnh285/OPzjvb6vIB/MRTXOEkb5IHEokf+ubPdkAul3PCvucsAd8zMMOhXDp1Yqp9Wav+ARKLpZgMTJ653NcdDghQxSHRrKXeg9iMkAEMbJygUtY2rnty9cPRpU7ICtTk9M3E95fPn4tfdEZJkiKrF+CrqnaaIf7gBiOMMs44E2LcGB4aGpi+FVSU312e838bO3Lx7LlkrzNOhhwe/oL/ErgCAxObMGHKiFBes8RtvjZ+4ToZpkmSIk2aHHJxWEPHIkQIBweHEDrgkyVDhgxZsnj4+kL4KvXFF0VAHo8sGdKkyZAlR65wrxZRLhhYuByYWBjoaECATx4PWUBjwT8deoM/6Yn/8gAAAABJRU5ErkJggg==);\n}\n\n.xkit-in-frame-button.xkit-button-working:before {\n\tbackground-image: url(data:image/gif;base64,R0lGODlhEAAQAIAAAP///////yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDZEMUIyMTQ0MDFDMTFFM0I3QjRGNERGODZCRDlCN0MiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDZEMUIyMTU0MDFDMTFFM0I3QjRGNERGODZCRDlCN0MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowNkQxQjIxMjQwMUMxMUUzQjdCNEY0REY4NkJEOUI3QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowNkQxQjIxMzQwMUMxMUUzQjdCNEY0REY4NkJEOUI3QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAkQAAEALAAAAAAQABAAAAIVjI+py+0Po3QAmHptwoHzCYbiSDIFACH5BAkQAAEALAcABwAGAAIAAAIFBBJmaAUAIfkECRAAAQAsCwAHAAIAAgAAAgKEUQAh+QQFEAABACwAAAAAAQABAAACAkwBACH5BAUQAAEALAMABwACAAIAAAIChFEAIfkEBRAAAQAsBwAHAAIAAgAAAgKEUQAh+QQFEAABACwAAAAAAQABAAACAkwBADs=) !important;\n}\n","title":"One-Click Postage","description":"Lets you easily reblog, draft and queue posts","developer":"new-xkit","version":"4.4.24","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/one_click_reply.json b/Extensions/dist/one_click_reply.json new file mode 100644 index 000000000..25950fdee --- /dev/null +++ b/Extensions/dist/one_click_reply.json @@ -0,0 +1 @@ +{"id":"one_click_reply","script":"//* TITLE One-Click Reply **//\n//* VERSION 2.1.4 **//\n//* DESCRIPTION Lets you reply to notifications **//\n//* DEVELOPER new-xkit **//\n//* DETAILS To use this extension, hover over a notification and click on the Reply button. If Multi-Reply is on, hold down the ALT key while clicking on the Reply button to select/deselect posts and reply to all of them at once. **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.one_click_reply = new Object({\n\trunning: false,\n\tpreferences: {\n\t\t\"sep-1\": {\n\t\t\ttext: \"Features\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"enable_quick_reply\": {\n\t\t\ttext: \"Enable In-Dashboard Reply\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\texperimental: true\n\t\t},\n\t\t\"sep0\": {\n\t\t\ttext: \"Reply Options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"show_avatars\": {\n\t\t\ttext: \"Show avatars on reply posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"open_in_new_tab\": {\n\t\t\ttext: \"Open reply windows in a new tab\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"multi_reply\": {\n\t\t\ttext: \"Enable replying to multiple notifications at once (alt+click to select notifications)\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"sep1a\": {\n\t\t\ttext: \"Mentioning Options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"mention_people\": {\n\t\t\ttext: \"Use the 'mentioning' feature of Tumblr on replies\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\texperimental: true,\n\t\t},\n\t\t\"sep1\": {\n\t\t\ttext: \"Tagging Options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"tag_people\": {\n\t\t\ttext: \"Tag people by their usernames on my replies\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"tag_person_replace_hyphens\": {\n\t\t\ttext: \"Replace hyphens in usernames with spaces on tags\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"auto_tag\": {\n\t\t\ttext: \"Auto-tag the post with a custom one\",\n\t\t\tdefault: false,\n\t\t\tvalue: true\n\t\t},\n\t\t\"auto_tag_text\": {\n\t\t\ttext: \"Custom tag for reply posts\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t}\n\t},\n\n\tsentences: {\n\n\t\t\"reblog\": \"

    %u reblogged your post: %t

    \",\n\t\t\"reblog_with_comments\": \"

    %u reblogged your post %t and added:

    %r

    \",\n\t\t\"like\": \"

    %u liked your post: %t

    \",\n\t\t\"follow\": \"

    %u started following %b

    \",\n\t\t\"reply\": \"

    %u replied to your post: %t

    %r

    \",\n\t\t\"reply_photo\": \"

    %u replied to your post with a photo: %t

    %r

    \",\n\t\t\"answer\": \"

    %u answered your post: %t

    %r

    \",\n\n\t\t\"nt_reblog\": \"

    %u reblogged your post

    \",\n\t\t\"nt_reblog_with_comments\": \"

    %u reblogged your post and added:

    %r

    \",\n\t\t\"nt_like\": \"

    %u liked your post

    \",\n\t\t\"nt_reply\": \"

    %u replied to your post:

    %r

    \",\n\t\t\"nt_reply_photo\": \"

    %u replied to your post with a photo:

    %r

    \",\n\t\t\"nt_answer\": \"

    %u answered your post:

    %r

    \",\n\n\t},\n\n\tadded_css: false,\n\tadded_css_pn: false,\n\tadded_css_pn_new: false,\n\n\trun: function() {\n\t\ttry {\n\t\t\tXKit.tools.init_css(\"one_click_reply\");\n\t\t\tXKit.extensions.one_click_reply.init_mentions();\n\t\t\tXKit.extensions.one_click_reply.init_post_page();\n\t\t\tXKit.extensions.one_click_reply.init_quick_reply();\n\t\t\t$(document).on(\"mouseleave\", \".activity-notification\", XKit.extensions.one_click_reply.exit_pn);\n\t\t\t$(document).on(\"mouseenter\", \".activity-notification\", XKit.extensions.one_click_reply.enter_pn);\n\t\t\t$(document).on(\"mouseenter\", \".notification\", XKit.extensions.one_click_reply.enter);\n\t\t} catch (e) {\n\t\t\tXKit.window.show(\"Error\",\n\t\t\t\t\"Something went wrong.\" +\n\t\t\t\t\"

    \" + e.message + \"

    \",\n\t\t\t\t\"error\",\n\t\t\t\t'
    OK
    '\n\t\t\t);\n\t\t}\n\t},\n\tquick_reply_error: function(error_code) {\n\t\tXKit.window.show(\"Unable to create post\", \"I'm sorry, but I could not create the post.
    Please try again later.

    If the problem continues, check that you are not at your post limit, and send the XKit Blog an ask with the error code \\\"OCRQR-\" + error_code + \"\\\".\", \"error\", \"
    OK
    \");\n\t\t$(\"#xkit-one-click-reply-error-close\").click(function() {\n\t\t\tXKit.window.close();\n\t\t\tXKit.extensions.one_click_reply.quick_reply_close();\n\t\t});\n\t},\n\tinit_post_page: function() {\n\t\tif (document.location.href.indexOf(\"/new/text\") !== -1) {\n\t\t\tXKit.interface.post_window_listener.add(\"one_click_reply_fill_post\", XKit.extensions.one_click_reply.fill_post);\n\t\t}\n\t},\n\tinit_mentions: function() {\n\t\tif (this.preferences.mention_people.value === true) {\n\t\t\t// This is a terrible way of doing this isn't it?\n\t\t\tfor (var obj in this.sentences) {\n\t\t\t\tthis.sentences[obj] = this.sentences[obj].replace(\"

    %u\", \"

    @%u\");\n\t\t\t}\n\t\t}\n\t},\n\tinit_quick_reply: function() {\n\t\tif (XKit.extensions.one_click_reply.preferences.enable_quick_reply.value === true) {\n\t\t\tvar m_html = \"

    \" +\n\t\t\t\t\t\"
    \" +\n\t\t\t\t\t\t\"
     
    \" +\n\t\t\t\t\t\t\"
    \" +\n\t\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\t\"Replying to xenix\" +\n\t\t\t\t\t\t\"
    \" +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\"
    Reply
    \" +\n\t\t\t\t\t\t\"
    Open in New Tab
    \" +\n\t\t\t\t\t\"
    \";\n\t\t\t$(\"body\").append(m_html);\n\t\t\t$(\"#xkit-one-click-reply-quick-reply-close, #xkit-one-click-reply-quick-reply-window-shadow\").click(function() { if ($(this).hasClass(\"disabled\")) { return; } XKit.extensions.one_click_reply.quick_reply_close(); });\n\n\t\t\t$(\"#xkit-one-click-reply-quick-reply-text\").bind('keydown', function(event) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t});\n\n\t\t\t$(\"#xkit-one-click-reply-quick-reply-text\").bind('input propertychange', function(event) {\n\t\t\t\tif (!this.value.length) {\n\t\t\t\t\t$(\"#xkit-one-click-reply-quick-reply-ok\").addClass(\"disabled\");\n\t\t\t\t} else {\n\t\t\t\t\t$(\"#xkit-one-click-reply-quick-reply-ok\").removeClass(\"disabled\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\t/**\n\t * Creates blog post\n\t * @param {String} sentence - html content\n\t * @param {String} tags - comma-separated tags\n\t * @param {Object} reply - A \"reply\" to append to the sentence\n\t * @param {String} blog - the id of the blog to post as\n\t * @param {Boolean?} retry_mode - If false, allows one retry\n\t */\n\tquick_reply_post: function(sentence, tags, reply, blog, retry_mode) {\n\t\tvar m_object = {};\n\t\treply = reply.replace(/&/g, '&').replace(//g, '>');\n\t\t// This is a terrible hack.\n\t\tif (XKit.extensions.one_click_reply.preferences.mention_people.value === true) {\n\t\t\tvar sentence_obj = $(\"
    \" + sentence + \"
    \");\n\t\t\t$(sentence_obj).find(\"a\").each(function() {\n\t\t\t\tif (typeof $(this).attr('href') !== \"undefined\") {\n\t\t\t\t\tif ($(this).attr('href').indexOf('/post/') === -1) {\n\t\t\t\t\t\t$(this).removeAttr('href').removeAttr('class').addClass(\"tumblelog\");\n\t\t\t\t\t\t$(this).text(\"@\" + $(this).text());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tsentence = sentence_obj.html();\n\t\t}\n\n\t\tm_object.form_key = XKit.interface.form_key();\n\t\tm_object.context_page = \"dashboard\";\n\t\tm_object.editor_type = \"rich\";\n\n\t\tm_object.channel_id = blog;\n\t\tm_object.context_id = blog;\n\n\t\tm_object[\"is_rich_text[one]\"] = \"0\";\n\t\tm_object[\"is_rich_text[two]\"] = \"1\";\n\t\tm_object[\"is_rich_text[three]\"] = \"0\";\n\n\t\tm_object[\"post[slug]\"] = \"\";\n\t\tm_object[\"post[draft_status]\"] = \"\";\n\t\tm_object[\"post[source_url]\"] = \"https://\";\n\t\tm_object[\"post[date]\"] = \"\";\n\n\t\tm_object[\"post[type]\"] = \"regular\";\n\t\tm_object[\"post[state]\"] = \"0\";\n\n\t\tm_object[\"post[tags]\"] = tags;\n\n\t\treply = XKit.extensions.one_click_reply.JsAutoP(reply);\n\n\t\tm_object[\"post[one]\"] = \"\";\n\t\tm_object[\"post[two]\"] = sentence + \"

    \" + reply + \"

    \";\n\t\tm_object[\"post[three]\"] = \"\";\n\n\t\ttry {\n\n\t\t\tif (XKit.extensions.tweaks.running === true) {\n\t\t\t\tif (XKit.extensions.tweaks.preferences.photo_replies.value === true) {\n\t\t\t\t\tm_object.allow_photo_replies = \"on\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t} catch (e) {\n\n\t\t\tconsole.log(\"OCR = Could not read Tweaks properties\");\n\n\t\t}\n\n\t\tXKit.interface.kitty.get(function(kitty_data) {\n\n\t\t\tif (kitty_data.errors === true) {\n\n\t\t\t\t// We fucked up for some reason.\n\t\t\t\tif (retry_mode !== true) {\n\t\t\t\t\tXKit.extensions.one_click_reply.quick_reply_post(sentence, tags, reply, blog, true);\n\t\t\t\t} else {\n\t\t\t\t\tXKit.extensions.one_click_reply.quick_reply_error(\"101\");\n\t\t\t\t}\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tGM_xmlhttpRequest({\n\t\t\t\tmethod: \"POST\",\n\t\t\t\turl: \"https://www.tumblr.com/svc/post/update\",\n\t\t\t\tdata: JSON.stringify(m_object),\n\t\t\t\tjson: true,\n\t\t\t\theaders: {\n\t\t\t\t\t\"X-tumblr-puppies\": kitty_data.kitten,\n\t\t\t\t\t\"X-tumblr-form-key\": XKit.interface.form_key(),\n\t\t\t\t},\n\t\t\t\tonerror: function(response) {\n\t\t\t\t\tXKit.interface.kitty.set(\"\");\n\t\t\t\t\tif (retry_mode !== true) {\n\t\t\t\t\t\tXKit.extensions.one_click_reply.quick_reply_post(sentence, tags, reply, blog, true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tXKit.extensions.one_click_reply.quick_reply_error(\"101\");\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tonload: function(response) {\n\t\t\t\t\t// We are done!\n\t\t\t\t\tXKit.interface.kitty.set(response.getResponseHeader(\"X-Tumblr-Kittens\"));\n\t\t\t\t\tvar mdata = null;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmdata = JSON.parse(response.responseText);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tXKit.extensions.one_click_reply.quick_reply_error(\"106\");\n\t\t\t\t\t}\n\t\t\t\t\tif (mdata.errors === false) {\n\t\t\t\t\t\tXKit.extensions.one_click_reply.quick_reply_close();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tXKit.extensions.one_click_reply.quick_reply_error(\"103\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\t/* eslint-disable id-length */\n\tJsAutoP: function(s) {\n\n\t\t// From: http://ufku.com/personal/autop\n\n\t\tif (!s || s.search(/\\n|\\r/) == -1) {\n\t\t\treturn s;\n\t\t}\n\t\tvar X = function(x, a, b) {return x.replace(new RegExp(a, 'g'), b);};\n\t\tvar R = function(a, b) {\n\t\t\ts = X(s, a, b);\n\t\t\treturn s;\n\t\t};\n\t\tvar blocks = '(table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select';\n\t\tblocks += '|form|blockquote|address|math|style|script|object|input|param|p|h[1-6])';\n\t\ts += '\\n';\n\t\tR('
    \\\\s*
    ', '\\n\\n');\n\t\tR('(<' + blocks + '[^>]*>)', '\\n$1');\n\t\tR('()', '$1\\n\\n');\n\t\tR('\\r\\n|\\r', '\\n'); // cross-platform newlines\n\t\tR('\\n\\n+', '\\n\\n');// take care of duplicates\n\t\tR('\\n?((.|\\n)+?)\\n\\\\s*\\n', '

    $1

    \\n');// make paragraphs\n\t\tR('\\n?((.|\\n)+?)$', '

    $1

    \\n');//including one at the end\n\t\tR('

    \\\\s*?

    ', '');// under certain strange conditions it could create a P of entirely whitespace\n\t\tR('

    (]*>\\\\s*)', '$1

    ');\n\t\tR('

    ([^<]+)\\\\s*?(]*>)', '

    $1

    $2');\n\t\tR('

    \\\\s*(]*>)\\\\s*

    ', '$1');\n\t\tR('

    (', '$1');// problem with nested lists\n\t\tR('

    ]*)>', '

    ');\n\t\tR('

    ', '

    ');\n\t\tR('

    \\\\s*(]*>)', '$1');\n\t\tR('(]*>)\\\\s*

    ', '$1');\n\t\tR('<(script|style)(.|\\n)*?', function(m0) {return X(m0, '\\n', '');});\n\t\tR('(
    )?\\\\s*\\n', '
    \\n');\n\t\tR('', '\\n');\n\t\tR('(]*>)\\\\s*
    ', '$1');\n\t\tR('
    (\\\\s*]*>)', '$1');\n\t\tif (s.indexOf(')((.|\\n)*?)', function(m0, m1, m2, m3) {\n\t\t\t\treturn X(m1, '\\\\\\\\([\\'\\\"\\\\\\\\])', '$1') + X(X(X(m3, '

    ', '\\n'), '

    |
    ', ''), '\\\\\\\\([\\'\\\"\\\\\\\\])', '$1') + '';\n\t\t\t});\n\t\t}\n\t\treturn R('\\n

    $', '

    ');\n\t\t/* eslint-disable id-length */\n\t},\n\n\tquick_reply_open: function(sentence, default_tags, avatar, username) {\n\n\t\t$(\"#xkit-one-click-reply-quick-reply-username\").html(username);\n\t\t$(\"#xkit-one-click-reply-quick-reply-title\").find(\".xkit-qr-avatar\").attr('src', avatar);\n\n\t\t$(\"#xkit-one-click-reply-quick-reply-window-shadow\").css(\"display\", \"block\");\n\t\t$(\"#xkit-one-click-reply-quick-reply-window\").fadeIn('fast');\n\n\t\t$(\"#xkit-one-click-reply-quick-reply-text, #xkit-one-click-reply-quick-reply-tags\").val(\"\");\n\t\t$(\"#xkit-one-click-reply-quick-reply-text, #xkit-one-click-reply-quick-reply-tags\").prop('disabled', false);\n\t\t$(\"#xkit-one-click-reply-quick-reply-new-tab, #xkit-one-click-reply-quick-reply-close, #xkit-one-click-reply-quick-reply-window-shadow\").removeClass(\"disabled\");\n\t\t$(\"#xkit-one-click-reply-quick-reply-ok\").addClass(\"disabled\");\n\n\t\tXKit.tools.set_setting(\"xkit_one_click_reply_data\", \"{}\");\n\n\t\tvar m_blog = XKit.tools.get_current_blog();\n\n\t\tvar initial_tags = \"\";\n\t\tif (XKit.extensions.one_click_reply.preferences.tag_people.value === true) {\n\t\t\tinitial_tags = default_tags;\n\t\t\tif (XKit.extensions.one_click_reply.preferences.auto_tag.value === true && XKit.extensions.one_click_reply.preferences.auto_tag_text.value !== \"\") {\n\t\t\t\tinitial_tags += \",\" + XKit.extensions.one_click_reply.preferences.auto_tag_text.value;\n\t\t\t}\n\t\t} else {\n\t\t\tif (XKit.extensions.one_click_reply.preferences.auto_tag.value === true && XKit.extensions.one_click_reply.preferences.auto_tag_text.value !== \"\") {\n\t\t\t\tinitial_tags += \",\" + XKit.extensions.one_click_reply.preferences.auto_tag_text.value;\n\t\t\t}\n\t\t}\n\t\t$(\"#xkit-one-click-reply-quick-reply-tags\").val(initial_tags);\n\n\t\t$(\"#xkit-one-click-reply-quick-reply-ok\").unbind(\"click\");\n\t\t$(\"#xkit-one-click-reply-quick-reply-ok\").click(function() {\n\n\t\t\tif ($(this).hasClass(\"disabled\")) { return; }\n\n\t\t\t$(\"#xkit-one-click-reply-quick-reply-text, #xkit-one-click-reply-quick-reply-tags\").prop('disabled', true);\n\n\t\t\t$(\"#xkit-one-click-reply-quick-reply-ok, #xkit-one-click-reply-quick-reply-new-tab, #xkit-one-click-reply-quick-reply-close, #xkit-one-click-reply-quick-reply-window-shadow\").addClass(\"disabled\");\n\n\t\t\tvar tags = $(\"#xkit-one-click-reply-quick-reply-tags\").val();\n\t\t\tXKit.extensions.one_click_reply.quick_reply_post(sentence, tags, $(\"#xkit-one-click-reply-quick-reply-text\").val(), m_blog);\n\n\t\t});\n\n\t\t$(\"#xkit-one-click-reply-quick-reply-new-tab\").unbind(\"click\");\n\t\t$(\"#xkit-one-click-reply-quick-reply-new-tab\").click(function() {\n\n\t\t\tif ($(this).hasClass(\"disabled\")) { return; }\n\n\t\t\tvar tags = $(\"#xkit-one-click-reply-quick-reply-tags\").val();\n\n\t\t\tvar data = {\n\t\t\t\ttags: tags,\n\t\t\t\tsentence: sentence + \"

    \"\n\t\t\t};\n\t\t\tXKit.tools.set_setting(\"xkit_one_click_reply_data\", JSON.stringify(data));\n\n\t\t\tvar m_url = \"https://www.tumblr.com/new/text\";\n\n\t\t\tif (document.location.href.indexOf(\"/blog/\") !== -1) {\n\t\t\t\t// Maybe we can make this better?\n\t\t\t\tif ($(\"#new_post_label_text\").length > 0) {\n\t\t\t\t\tm_url = $(\"#new_post_label_text\").attr('href');\n\t\t\t\t} else {\n\t\t\t\t\tm_url = $(\"body\").attr('data-new-root') + \"/new/text\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (m_url.indexOf('?') !== -1) {\n\t\t\t\tm_url = m_url.substring(0, m_url.indexOf('?'));\n\t\t\t}\n\n\n\t\t\tif (XKit.extensions.one_click_reply.preferences.tag_people.value === true) {\n\t\t\t\tm_url = m_url + \"?tags=\" + tags;\n\t\t\t\tif (XKit.extensions.one_click_reply.preferences.auto_tag.value === true && XKit.extensions.one_click_reply.preferences.auto_tag_text.value !== \"\") {\n\t\t\t\t\tm_url = m_url + \",\" + XKit.extensions.one_click_reply.preferences.auto_tag_text.value;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (XKit.extensions.one_click_reply.preferences.auto_tag.value === true && XKit.extensions.one_click_reply.preferences.auto_tag_text.value !== \"\") {\n\t\t\t\t\tm_url = m_url + \"?tags=\" + XKit.extensions.one_click_reply.preferences.auto_tag_text.value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tXKit.extensions.one_click_reply.quick_reply_close();\n\t\t\twindow.open(m_url);\n\n\t\t});\n\n\n\t},\n\n\tquick_reply_close: function() {\n\t\t$(\"#xkit-one-click-reply-quick-reply-window-shadow, #xkit-one-click-reply-quick-reply-window\").fadeOut('fast');\n\t},\n\n\texit_pn: function(event) {\n\t\tvar target = event.target;\n\t\tif (!$(target).hasClass('activity-notification')) {\n\t\t\ttarget = $(target).closest('.activity-notification');\n\t\t}\n\t\t$(target).find(\".xkit-reply-button-pn\").css(\"display\", \"none\");\n\t},\n\n\tenter_pn: function(event) {\n\t\tvar target = event.target;\n\t\tif (!$(target).hasClass('activity-notification')) {\n\t\t\ttarget = $(target).closest('.activity-notification');\n\t\t}\n\t\tif (!$(target).find('.xkit-reply-button-pn').length) {\n\t\t\tvar html = 'reply';\n\t\t\t$(target).append(html);\n\t\t\t$(target).find(\".xkit-reply-button-pn\").click(function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tXKit.extensions.one_click_reply.make_post(this, true, e);\n\t\t\t});\n\t\t}\n\t\t$(target).find(\".xkit-reply-button-pn\").css(\"display\", \"block\");\n\t},\n\n\tenter: function(event) {\n\t\tvar target = event.target;\n\t\tif (!$(target).hasClass('notification')) {\n\t\t\ttarget = $(target).closest('.notification');\n\t\t}\n\t\tif ($(target).find(\".xkit-reply-button\").length < 1) {\n\t\t\tvar m_html = 'reply';\n\t\t\tif ($(target).find(\".block\").length > 0) {\n\t\t\t\t$(target).find(\".block\").after(m_html);\n\t\t\t} else {\n\t\t\t\t$(target).find(\".notification_sentence\").append(m_html);\n\t\t\t\t$(target).find(\".xkit-reply-button\").css(\"top\", \"16px\");\n\t\t\t\t$(target).find(\".xkit-reply-button\").css(\"right\", \"38px\");\n\t\t\t}\n\n\t\t\t$(target).find(\".xkit-reply-button\").click(function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tXKit.extensions.one_click_reply.make_post(target, false, e);\n\t\t\t});\n\n\t\t\tvar m_right = 45 + $(target).find(\".xkit-reply-button\").width();\n\t\t\tif (XKit.extensions.one_click_reply.added_css !== true) {\n\t\t\t\tXKit.tools.add_css(\".notification .block, .notification .ignore { right: \" + m_right + \"px !important; }\", \"one_click_reply\");\n\t\t\t\tXKit.extensions.one_click_reply.added_css = true;\n\t\t\t}\n\t\t}\n\t},\n\n\tfill_post: function() {\n\t\tvar raw_data = XKit.tools.get_setting(\"xkit_one_click_reply_data\", \"{}\");\n\n\t\ttry {\n\t\t\tvar data = JSON.parse(raw_data);\n\n\t\t\tif (!data || !data.sentence) {\n\t\t\t\t// Terribly enough, we can't alert an error here because\n\t\t\t\t// post_window_listener might just not be referring to us\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar m_sentence = $.trim(data.sentence);\n\t\t\tvar tags = data.tags;\n\n\t\t\tif (XKit.extensions.one_click_reply.preferences.mention_people.value) {\n\t\t\t\tvar sentence_obj = $(\"
    \" + m_sentence + \"
    \");\n\n\t\t\t\t$(sentence_obj).find(\"a\").each(function() {\n\t\t\t\t\tif (typeof $(this).attr('href') !== \"undefined\") {\n\t\t\t\t\t\tif ($(this).attr('href').indexOf('/post/') === -1) {\n\t\t\t\t\t\t\t$(this).removeAttr('href').removeAttr('class').addClass(\"tumblelog\");\n\t\t\t\t\t\t\t$(this).text(\"@\" + $(this).text());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tm_sentence = sentence_obj.html();\n\t\t\t}\n\n\t\t\tif (tags) {\n\t\t\t\tXKit.interface.post_window.add_tag(tags.split(\",\"));\n\t\t\t}\n\t\t\tXKit.interface.post_window.set_content_html(m_sentence + \"


    \");\n\t\t\tXKit.interface.post_window_listener.remove(\"one_click_reply_fill_post\");\n\t\t\tXKit.tools.set_setting(\"xkit_one_click_reply_data\", \"{}\");\n\t\t} catch (e) {\n\t\t\tXKit.window.show(\"One-Click Reply Error\",\n\t\t\t\t\"Something went wrong.\" +\n\t\t\t\t\"

    \" + e.message + \"

    \" +\n\t\t\t\t\"Data:\" +\n\t\t\t\t\"

    \" + raw_data + \"

    \",\n\t\t\t\t\"error\",\n\t\t\t\t'

    OK
    '\n\t\t\t);\n\t\t}\n\t},\n\n\tmake_post: function(obj, pn_mode, event, silent_mode) {\n\t\tif (!$(obj).hasClass('xkit-reply-button-pn') && pn_mode) {\n\t\t\treturn;\n\t\t}\n\t\tif (XKit.extensions.one_click_reply.preferences.enable_quick_reply.value === true && silent_mode !== true) {\n\t\t\tif (!event.altKey && !pn_mode) {\n\t\t\t\t// Do not open window if pressing alt key to select items.\n\t\t\t\tif ($(\".xkit-reply-selected\").length <= 0 && $(\".xkit-reply-selected-pn\").length <= 0) {\n\t\t\t\t\t// Do not open window if there are selected items.\n\t\t\t\t\tvar m_return = XKit.extensions.one_click_reply.make_post(obj, false, \"\", true);\n\t\t\t\t\tXKit.extensions.one_click_reply.quick_reply_open(m_return.sentence, m_return.tags, m_return.avatar, m_return.username);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (XKit.extensions.one_click_reply.preferences.multi_reply.value === true && silent_mode !== true) {\n\t\t\tif (event.altKey) {\n\t\t\t\tvar alt_obj = $(obj);\n\t\t\t\tif (pn_mode === true) {\n\t\t\t\t\talt_obj.toggleClass(\"xkit-reply-selected-pn\");\n\t\t\t\t} else {\n\t\t\t\t\talt_obj.toggleClass(\"xkit-reply-selected\");\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tif ($(\".xkit-reply-selected\").length > 0 || $(\".xkit-reply-selected-pn\").length > 0) {\n\t\t\t\t\t// There are selected posts!\n\t\t\t\t\tif ($(obj).hasClass(\"xkit-reply-selected\") === false && $(obj).hasClass(\"xkit-reply-selected-pn\") === false) {\n\t\t\t\t\t\t// Add this too.\n\t\t\t\t\t\tvar m_obj = $(obj);\n\t\t\t\t\t\tif (pn_mode === true) {\n\t\t\t\t\t\t\tm_obj = $(obj).parent();\n\t\t\t\t\t\t\t$(m_obj).addClass(\"xkit-reply-selected-pn\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$(m_obj).addClass(\"xkit-reply-selected\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar m_text = \"\";\n\t\t\t\t\tvar m_tags = \"\";\n\n\t\t\t\t\t$(\".notification.xkit-reply-selected, .xkit-reply-selected-pn\").each(function() {\n\n\t\t\t\t\t\t// Cycle thru all the posts and gather information.\n\n\t\t\t\t\t\tif ($(this).hasClass(\"xkit-reply-selected-pn\") === true) {\n\t\t\t\t\t\t\tvar pn_post = XKit.extensions.one_click_reply.make_post_activity(this, true);\n\t\t\t\t\t\t\tm_tags = m_tags + \",\" + pn_post.tags;\n\t\t\t\t\t\t\tm_text = m_text + pn_post.sentence + \"

    \";\n\t\t\t\t\t\t\t// m_text = m_text + XKit.extensions.one_click_reply.make_post_activity(this, true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar standard_post = XKit.extensions.one_click_reply.make_post(this, pn_mode, \"\", true);\n\t\t\t\t\t\t\tm_tags = m_tags + \",\" + standard_post.tags;\n\t\t\t\t\t\t\tm_text = m_text + standard_post.sentence + \"

    \";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t});\n\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\tsentence: m_text,\n\t\t\t\t\t\ttags: m_tags\n\t\t\t\t\t};\n\t\t\t\t\tXKit.tools.set_setting(\"xkit_one_click_reply_data\", JSON.stringify(data));\n\n\t\t\t\t\tvar m_url = \"https://www.tumblr.com/new/text\";\n\n\t\t\t\t\tif (document.location.href.indexOf(\"/blog/\") !== -1) {\n\t\t\t\t\t\t// Maybe we can make this better?\n\t\t\t\t\t\tif ($(\"#new_post_label_text\").length > 0) {\n\t\t\t\t\t\t\tm_url = $(\"#new_post_label_text\").attr('href');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tm_url = $(\"body\").attr('data-new-root') + \"/new/text\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m_url.indexOf('?') !== -1) {\n\t\t\t\t\t\tm_url = m_url.substring(0, m_url.indexOf('?'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.preferences.tag_people.value === true) {\n\t\t\t\t\t\tm_url = m_url + \"?tags=\" + m_tags;\n\t\t\t\t\t\tif (this.preferences.auto_tag.value === true && this.preferences.auto_tag_text.value !== \"\") {\n\t\t\t\t\t\t\tm_url = m_url + \",\" + this.preferences.auto_tag_text.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (this.preferences.auto_tag.value === true && this.preferences.auto_tag_text.value !== \"\") {\n\t\t\t\t\t\t\tm_url = m_url + \"?tags=\" + this.preferences.auto_tag_text.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t$(\".xkit-reply-selected\").removeClass(\"xkit-reply-selected\");\n\t\t\t\t\t$(\".xkit-reply-selected-pn\").removeClass(\"xkit-reply-selected-pn\");\n\n\t\t\t\t\tif (this.preferences.open_in_new_tab.value === true) {\n\t\t\t\t\t\twindow.open(m_url, '_BLANK');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdocument.location.href = m_url;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tif (pn_mode === true) {\n\t\t\tXKit.extensions.one_click_reply.make_post_activity(obj);\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\n\t\t\treturn XKit.extensions.one_click_reply.make_post_dash(obj, pn_mode, event, silent_mode);\n\n\t\t} catch (e) {\n\t\t\tXKit.window.show(\"Error\",\n\t\t\t\t\"On 102:

    \" + e.message + \"

    \",\n\t\t\t\t\"error\",\n\t\t\t\t'
    OK
    '\n\t\t\t);\n\t\t}\n\t},\n\n\tmake_post_dash: function(obj, pn_mode, event, silent_mode) {\n\t\tvar username = $(obj).find(\".username\").html();\n\t\tvar real_username = username;\n\t\tif (XKit.extensions.one_click_reply.preferences.tag_person_replace_hyphens.value === true) {\n\t\t\ttry {\n\t\t\t\tusername = username.replace(/-/g, ' ');\n\t\t\t} catch (e) {\n\t\t\t\tconsole.log(\"Cant replace hyphens, \" + e.message);\n\t\t\t}\n\t\t}\n\n\t\tvar m_sentence = \"\";\n\n\t\tif ( $(obj).find(\".notification_sentence\").find(\".hide_overflow\") > 0) {\n\t\t\tm_sentence = \"

    \" + $(obj).find(\".notification_sentence\").find(\".hide_overflow\").html() + \"

    \";\n\t\t\tif ($(obj).find(\".notification_sentence\").attr('data-xkit-text-version-html')) {\n\t\t\t\tvar text_html = $(obj).find(\".notification_sentence\").attr('data-xkit-text-version-html');\n\t\t\t\tm_sentence = \"

    \" + $(text_html).find(\".hide_overflow\").html() + \"

    \";\n\t\t\t}\n\n\t\t} else {\n\t\t\tvar tmp_div = $(obj).find(\".notification_sentence\");\n\t\t\t$(\".xkit-reply-button\", tmp_div).remove();\n\t\t\t$(\".xkit-notification-notification-block-button\", tmp_div).remove();\n\t\t\tvar tmp_html = $(tmp_div).html();\n\n\t\t\tif ($(tmp_div).attr('data-xkit-text-version-html')) {\n\t\t\t\ttmp_html = $(tmp_div).attr('data-xkit-text-version-html');\n\t\t\t\ttmp_html = decodeURIComponent(escape(atob(tmp_html)));\n\t\t\t}\n\n\t\t\tm_sentence = \"

    \" + tmp_html + \"

    \";\n\t\t}\n\n\t\tm_sentence = XKit.extensions.one_click_reply.strip_sentence(m_sentence);\n\n\t\t// Fetch the avatar, slugify it to sentence.\n\t\tvar m_obj = $(obj);\n\n\t\tconsole.log(\" -- Now: \" + $(m_obj).attr('class'));\n\t\tvar avatar_url = $(m_obj).find(\".avatar_frame\").find(\".avatar\").attr('src');\n\t\t// This is ugly but it works:\n\t\ttry {\n\t\t\tvar avatar_url_start = avatar_url.indexOf('.media.tumblr.com');\n\t\t} catch (e) {\n\t\t\tconsole.log(\"Can't fetch avatar.\");\n\t\t}\n\t\tif (avatar_url_start !== -1) {\n\t\t\tavatar_url = \"https://31.\" + avatar_url.substring(avatar_url_start + 1);\n\t\t}\n\n\t\tif (XKit.extensions.one_click_reply.preferences.show_avatars.value === true) {\n\t\t\tm_sentence = \"\" + m_sentence;\n\t\t}\n\n\t\tvar m_url = \"https://www.tumblr.com/new/text\";\n\n\t\tif (document.location.href.indexOf(\"/blog/\") !== -1) {\n\t\t\t// Maybe we can make this better?\n\t\t\tm_url = $(\"#new_post_label_text\").attr('href');\n\t\t}\n\n\t\tif (m_url.indexOf('?') !== -1) {\n\t\t\tm_url = m_url.substring(0, m_url.indexOf('?'));\n\t\t}\n\n\t\tvar m_tags_to_return = \"\";\n\n\t\tif (this.preferences.tag_people.value === true) {\n\t\t\tm_url = m_url + \"?tags=\" + username;\n\t\t\tm_tags_to_return = username;\n\t\t\tif (this.preferences.auto_tag.value === true && this.preferences.auto_tag_text.value !== \"\") {\n\t\t\t\tm_url = m_url + \",\" + this.preferences.auto_tag_text.value;\n\t\t\t\tm_tags_to_return = m_tags_to_return + \",\" + this.preferences.auto_tag_text.value;\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.preferences.auto_tag.value === true && this.preferences.auto_tag_text.value !== \"\") {\n\t\t\t\tm_url = m_url + \"?tags=\" + this.preferences.auto_tag_text.value;\n\t\t\t\tm_tags_to_return = m_tags_to_return + \",\" + this.preferences.auto_tag_text.value;\n\t\t\t}\n\t\t}\n\n\t\tvar data = {\n\t\t\tsentence: m_sentence,\n\t\t\ttags: m_tags_to_return\n\t\t};\n\n\t\tif (silent_mode === true) {\n\t\t\tdata.avatar = avatar_url;\n\t\t\tdata.username = real_username;\n\t\t\treturn data;\n\t\t} else {\n\t\t\tXKit.tools.set_setting(\"xkit_one_click_reply_data\", JSON.stringify(data));\n\n\t\t\tif (this.preferences.open_in_new_tab.value === true) {\n\t\t\t\twindow.open(m_url, '_BLANK');\n\t\t\t} else {\n\t\t\t\tdocument.location.href = m_url;\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tmake_post_activity: function(obj, silent_mode) {\n\t\tif (!$(obj).hasClass('activity-notification')) {\n\t\t\tobj = $(obj).closest('.activity-notification');\n\t\t}\n\t\tvar username = $(obj).attr('data-tumblelog-name');\n\t\tvar post_url = $(obj).find(\".activity-notification__glass\").attr('href');\n\n\t\tvar m_sentence = \"\";\n\t\tif ( $(obj).find(\".activity-notification__activity_main\").length > 0) {\n\t\t\tm_sentence = \"

    \" + $(obj).find(\".activity-notification__activity_main\").html() + \"

    \";\n\t\t\tif ($(obj).find(\".activity-notification__activity_main\").attr('data-xkit-text-version-html')) {\n\t\t\t\tm_sentence = $(obj).find(\".activity-notification__activity_main\").attr('data-xkit-text-version-html');\n\t\t\t\tm_sentence = decodeURIComponent(escape(atob(m_sentence)));\n\t\t\t}\n\t\t}\n\n\t\tif ($(\".summary\", m_sentence).length > 0) {\n\t\t\tvar m_new = $(m_sentence);\n\t\t\t$(m_new).find(\".summary\").html($(m_new).find(\".summary\").html());\n\t\t\t$(m_new).find(\".summary\").wrap(\"\");\n\t\t\t$(m_new).find(\".summary\").parent().before(\" \");\n\t\t\tm_sentence = $(m_new).html();\n\t\t}\n\n\t\tif ($(obj).find(\".activity-notification__activity_response\").length > 0) {\n\t\t\tm_sentence = m_sentence + $(obj).find(\".activity-notification__activity_response\").html();\n\t\t}\n\n\t\tm_sentence = XKit.extensions.one_click_reply.strip_sentence(m_sentence);\n\n\t\tif (XKit.extensions.one_click_reply.preferences.show_avatars.value === true) {\n\t\t\t// Fetch the avatar, slugify it to sentence.\n\t\t\tvar m_obj = $(obj);\n\n\t\t\tconsole.log(\" -- Now: \" + $(m_obj).attr('class'));\n\t\t\tvar avatar_url = $(m_obj).find(\".ui_avatar_link\").attr('data-avatar-url');\n\n\t\t\tavatar_url = avatar_url.replace(/_\\d+(\\.\\w+)$/, \"_40$1\");\n\t\t\t// This is ugly but it works:\n\t\t\ttry {\n\t\t\t\tvar avatar_url_start = avatar_url.indexOf('.media.tumblr.com');\n\t\t\t} catch (e) {\n\t\t\t\tconsole.log(\"Can't fetch avatar.\");\n\t\t\t}\n\t\t\tif (avatar_url_start !== -1) {\n\t\t\t\tavatar_url = \"https://31.\" + avatar_url.substring(avatar_url_start + 1);\n\t\t\t}\n\t\t\tm_sentence = \"

    \" + m_sentence;\n\t\t}\n\n\t\tvar m_url = \"https://www.tumblr.com/new/text\";\n\n\t\tif (document.location.href.indexOf(\"/blog/\") !== -1) {\n\t\t\t// Maybe we can make this better?\n\t\t\tm_url = $(\"body\").attr('data-new-root') + \"/new/text\";\n\t\t}\n\n\t\tif (m_url.indexOf('?') !== -1) {\n\t\t\tm_url = m_url.substring(0, m_url.indexOf('?'));\n\t\t}\n\n\t\tvar m_tags_to_return = \"\";\n\n\t\tif (this.preferences.tag_people.value === true) {\n\t\t\tm_url = m_url + \"?tags=\" + username;\n\t\t\tm_tags_to_return = username;\n\t\t\tif (this.preferences.auto_tag.value === true && this.preferences.auto_tag_text.value !== \"\") {\n\t\t\t\tm_url = m_url + \",\" + this.preferences.auto_tag_text.value;\n\t\t\t\tm_tags_to_return = m_tags_to_return + \",\" + this.preferences.auto_tag_text.value;\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.preferences.auto_tag.value === true && this.preferences.auto_tag_text.value !== \"\") {\n\t\t\t\tm_url = m_url + \"?tags=\" + this.preferences.auto_tag_text.value;\n\t\t\t\tm_tags_to_return = m_tags_to_return + \",\" + this.preferences.auto_tag_text.value;\n\t\t\t}\n\t\t}\n\n\t\tvar data = {\n\t\t\tsentence: m_sentence,\n\t\t\ttags: m_tags_to_return\n\t\t};\n\t\tif (silent_mode === true) {\n\t\t\treturn data;\n\t\t} else {\n\t\t\tXKit.tools.set_setting(\"xkit_one_click_reply_data\", JSON.stringify(data));\n\n\t\t\tif (this.preferences.open_in_new_tab.value === true) {\n\t\t\t\twindow.open(m_url, '_BLANK');\n\t\t\t} else {\n\t\t\t\tdocument.location.href = m_url;\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tstrip_sentence: function(m_sentence) {\n\t\tm_sentence = XKit.tools.replace_all(m_sentence, \"[[MORE]]\", \"\");\n\t\tm_sentence = m_sentence.replace(/[^ -~]/g, function(chr) {\n\t\t\treturn \"&#\" + chr.charCodeAt(0) + \";\";\n\t\t});\n\t\tm_sentence = m_sentence.replace(\"

    \", \"\");\n\t\treturn m_sentence;\n\t},\n\n\tdestroy: function() {\n\t\tXKit.tools.remove_css(\"one_click_reply\");\n\t\tXKit.extensions.one_click_reply.added_css = false;\n\t\t$(\".xkit-reply-button, .xkit-reply-button-pn, #xkit-one-click-reply-quick-reply-window\").remove();\n\t\t$(document).off(\"mouseleave\", \".post.is_mine .notes_container .note, .ui_notes .ui_note, .ui_notes .activity-notification\", XKit.extensions.one_click_reply.exit_pn);\n\t\t$(document).off(\"mouseenter\", \".post.is_mine .notes_container .note, .ui_notes .ui_note, .ui_notes .activity-notification\", XKit.extensions.one_click_reply.enter_pn);\n\t\t$(document).off(\"mouseenter\", \".notification\", XKit.extensions.one_click_reply.enter);\n\t}\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","css":".notification:hover .xkit-reply-button {\n\n\tdisplay: block;\n\n}\n\n#xkit-one-click-reply-quick-reply-tags {\n\tdisplay: block;\n\twidth: 100%;\n\tbox-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tborder: 1px solid rgb(200,200,200);\n\tbox-shadow: 0px 1px 0px white;\n\tborder-radius: 4px;\n\tpadding: 5px 10px 5px 24px;\n\tmargin: 0px 0px 5px 0px;\n\tbackground: white no-repeat 7px 50% url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODQyMUI4RUYyMTM2MTFFM0IyMThFNEQ0NkQ3REQ0QzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODQyMUI4RjAyMTM2MTFFM0IyMThFNEQ0NkQ3REQ0QzMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4NDIxQjhFRDIxMzYxMUUzQjIxOEU0RDQ2RDdERDRDMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4NDIxQjhFRTIxMzYxMUUzQjIxOEU0RDQ2RDdERDRDMyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhezIuEAAAB1SURBVHjaYqyqqvrPgAkWtLa2JmIRZ2BCVoTETqiurp6PT8MBqIkHCGliRHISSLEDIechOwmbYgybmNDczkBIE+P///8ZoJwEIjQuADsJ6kZibEL4gQhNYM8jexqfJnhIMaHLYNGEEqxgT2MDsFBBTyIAAQYAnLw4uRj6VRYAAAAASUVORK5CYII=);\n\n}\n\n.xkit-qr-avatar {\n\tposition: absolute;\n\ttop: 0px;\n\tleft: 0px;\n\twidth: 30px;\n\theight: 30px;\n\tborder-radius: 3px;\n\tborder: 1px solid rgba(0,0,0,0.43);\n\tbox-shadow: 0px 1px 0px white;\n}\n\n#xkit-one-click-reply-quick-reply-close {\n\tbackground-image: url(data:image/gif;base64,R0lGODlhEAAQALMNAAAAAPDw8JaWljk5OQMDA9vb26Kioo2NjZmZmXh4eMbGxrS0tDY2Nv///wAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCQzM5MEExQzE4OTMxMUUzQkMzREJCQUM0M0UxRUM1NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCQzM5MEExRDE4OTMxMUUzQkMzREJCQUM0M0UxRUM1NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJDMzkwQTFBMTg5MzExRTNCQzNEQkJBQzQzRTFFQzU2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJDMzkwQTFCMTg5MzExRTNCQzNEQkJBQzQzRTFFQzU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAADQAsAAAAABAAEAAABEawyUkrRcE2VRMYGSUAyaQAKDiNKLKiX8bGIjwcdljDqV7NAIbvxxNqGsCeZXbL7WjMUIGglLAIi4mBoBIRDJXFUFI4miURADs=);\n\twidth: 16px; height: 16px;\n\tposition: absolute;\n\ttop: 17px; right: 16px;\n\topacity: 0.24; z-index: 1000;\n\tcursor: pointer;\n}\n\n#xkit-one-click-reply-quick-reply-close:hover {\n\topacity: 0.50;\n}\n\n#xkit-one-click-reply-quick-reply-close.disabled {\n\tcursor: default; opacity: 0.33 !important;\n}\n\n#xkit-one-click-reply-quick-reply-window-shadow {\n\tposition: fixed; top: 0; left: 0;\n\tbackground: rgba(0,0,0,0);\n\theight: 100%; width: 100%;\n\tz-index: 10000; display: none;\n}\n\n#xkit-one-click-reply-quick-reply-title {\n\tposition: relative;\n\theight: 40px;\n\tline-height: 30px;\n\tpadding-left: 45px;\n\tfont-weight: bold;\n\tcolor: rgb(120,120,120);\n\ttext-shadow: 0px 1px 0px white;\n}\n\n#xkit-one-click-reply-quick-reply-window {\n\tposition: fixed;\n\ttop: 50%; margin-top: -90px;\n\tleft: 50%; margin-left: -200px;\n\twidth: 400px;\n\theight: 180px;\n\tbackground: white;\n\tpadding: 10px;\n\tborder-radius: 8px;\n\tbox-shadow: 0px 1px 2px 1px rgba(0,0,0,0.33);\n\tz-index: 10010; display: none;\n}\n\n#xkit-one-click-reply-quick-reply-ok {\n\ttext-align: center;\n\twidth: 163px;\n\tmargin-right: 5px;\n\tfloat: left;\n}\n\n#xkit-one-click-reply-quick-reply-new-tab {\n\ttext-align: center;\n\twidth: 163px;\n\tmargin-right: 0px;\n\tmargin-left: 5px;\n\tfloat: left;\n}\n\n#xkit-one-click-reply-quick-reply-text {\n\tborder: 1px solid rgb(200,200,200);\n\tresize: none;\n\twidth: 100%;\n\tpadding: 10px;\n\tborder-radius: 4px;\n\tbox-shadow: 0px 1px 0px white;\n\tfont-size: 14px;\n\tcolor: rgb(40,40,40);\n\theight: 50px;\n}\n\n.ui_note {\n\tposition: relative !important;\n}\n\n.notification.xkit-reply-selected {\n\tbackground: green !important;\n}\n\n.activity-notification .xkit-reply-selected-pn, .activity-notification .xkit-reply-selected-pn:hover {\n\tbackground-color: #b1dda5 !important;\n}\n\n.note.xkit-reply-selected-pn {\n\tbackground: #b1dda5 !important;\n}\n\n.ui_note.xkit-reply-selected-pn {\n\tbackground: #b1dda5 !important;\n}\n\n.xkit-reply-button-pn {\n\tcolor: #fff !important;\n\tbackground: rgba(151,157,162,.6);\n\tposition: absolute;\n\tright: 17px; top: 17px;\n\tdisplay: none;\n\tfont-weight: bold;\n\tfont-size: 9px !important;\n\tpadding: 0px 2px; border-radius: 2px;\n\ttext-decoration: none;\n\ttext-transform: uppercase !important;\n\ttext-shadow: none !important;\n\tline-height: 12px !important; height: 12px !important;\n\tcursor: pointer;\n}\n\n.xkit-reply-button-pn.xkit-notes-activity {\n\n\twidth: 25px !important; height: 25px !important;\n\tbackground: no-repeat url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAJCAYAAAAGuM1UAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODBEMzQzNENFN0UxMTFFMkEzRjVGNDc4NTMxMDZBOUYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODBEMzQzNERFN0UxMTFFMkEzRjVGNDc4NTMxMDZBOUYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5Njc4QjY4REU3RDUxMUUyQTNGNUY0Nzg1MzEwNkE5RiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5Njc4QjY4RUU3RDUxMUUyQTNGNUY0Nzg1MzEwNkE5RiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtgF+G8AAACUSURBVHjaYvj//z8DNlxRUXEeiOXRxZkYcAMDIL5QWVnpjyzICNKFDIAK7KGKJyAJT2hvby9E0QBUWA+kCoBYAIeNF4A4gAWqeD6QSmDAD0C2HmD++fOnPZr1DHhsiGCCOgMEHkA1OkAxMlgAEgP64yLISQFA3ADkNKJ5HkR9ABkIlFsIE2fBphjJCQkgU5EFAQIMANoATulF5d0+AAAAAElFTkSuQmCC') #f0f0f0;\n\ttop: 30px; margin-top: -12px !important;\n\tbackground-position: 50% 50%;\n\tborder: 1px solid #d9d9d9;\n\tpadding: 0px !important;\n\tright: 75px !important;\n\tline-height: 300px !important;\n\toverflow: hidden;\n\tcursor: pointer;\n\n}\n\n.xkit-reply-button-pn.xkit-notes-new-style-fix-pn.xkit-reply-button-flush-to-right {\n\n\tright: 10px !important;\n\n}\n\n.xkit-reply-button {\n\n\tposition: absolute;\n\tright: 35px; top: 7px;\n\tbackground: rgba(255,255,255,.38) !important;\n\tdisplay: none;\n\tcolor: #3d546b !important;\n\tfont-weight: bold;\n\tfont-size: 9px !important;\n\tpadding: 0px 2px; border-radius: 2px;\n\ttext-decoration: none;\n\ttext-transform: uppercase !important;\n\tline-height: 12px !important; height: 12px !important;\n\n\n}\n\n.xkit-reply-button-pn:hover {\n\tbackground-color: #979da2 !important;\n}\n\n.xkit-reply-button:hover {\n\tbackground-color: rgba(255,255,255,.75) !important;\n}\n\n.xkit-reply-button-pn.xkit-notes-new-style-fix-pn:hover {\n\tborder-color: #c9c9c9;\n\tbackground-color: #f0f0f0 !important;\n}\n","title":"One-Click Reply","description":"Lets you reply to notifications","developer":"new-xkit","version":"2.1.4","details":"To use this extension, hover over a notification and click on the Reply button. If Multi-Reply is on, hold down the ALT key while clicking on the Reply button to select/deselect posts and reply to all of them at once.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/open_in_new_tabs.json b/Extensions/dist/open_in_new_tabs.json new file mode 100644 index 000000000..dbf81d34d --- /dev/null +++ b/Extensions/dist/open_in_new_tabs.json @@ -0,0 +1 @@ +{"id":"open_in_new_tabs","script":"//* TITLE Open In Tabs **//\n//* VERSION 1.1.8 **//\n//* DESCRIPTION Changes links to open in new tabs **//\n//* DETAILS Open In Tabs allows you to open links on new tabs, useful if you don't like being confined to one tab. Since some links, if opened in new tabs, can break functionality, they are not effected by this extension. **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n//* SLOW true **//\n\nXKit.extensions.open_in_new_tabs = new Object({\n\n\trunning: false,\n\tslow: true,\n\n\tpreferences: {\n\t\t\"sep-0\": {\n\t\t\ttext: \"Options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"button_tabs\": {\n\t\t\ttext: \"Make buttons open in tabs\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"no_sidebar\": {\n\t\t\ttext: \"Open in new tab instead of blog sidebar\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (document.location.href.indexOf('/mega-editor/') != -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (XKit.page.react) {\n\t\t\t$(document.body).on('click', 'a[role=\"link\"][target=\"_blank\"]', e => e.stopPropagation());\n\n\t\t\tXKit.tools.add_css(`\n\t\t\t\t.xkit--react [data-extension-id=\"open_in_new_tabs\"][data-setting-id=\"button_tabs\"],\n\t\t\t\t.xkit--react [data-extension-id=\"open_in_new_tabs\"][data-setting-id=\"no_sidebar\"] {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t`, 'open_in_new_tabs');\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (XKit.extensions.open_in_new_tabs.preferences.button_tabs.value) {\n\t\t\t$(\"#content area\").attr('target', '_blank');\n\t\t\t$(document).on(\"click\", XKit.extensions.open_in_new_tabs.do_open);\n\t\t}\n\n\t\tif (XKit.extensions.open_in_new_tabs.preferences.no_sidebar.value === true) {\n\t\t\tXKit.post_listener.add(\"open_in_new_tabs\", XKit.extensions.open_in_new_tabs.do);\n\t\t\tXKit.extensions.open_in_new_tabs.do();\n\t\t}\n\n\t},\n\n\tdo_open: function(e) {\n\n\t\t//XKit.window.show(\"do_open!\", JSON.stringify(e.target), \"info\", \"
    OK
    \");\n\t\t//return;\n\n\t\tvar m_box = e.target;\n\n\t\tvar m_url = $(m_box).attr('href');\n\n\t\tif ($(m_box).closest('.fan_mail').length && $(m_box).hasClass('reply'))\n\t\t\treturn;\n\n\t\tif (typeof m_url === \"undefined\") {\n\t\t\tm_url = $(m_box).parent().attr('href');\n\t\t}\n\n\t\tif (m_url === \"#\") { return; }\n\t\tif (typeof $(m_box).attr('onclick') !== \"undefined\" || typeof $(m_box).parent().attr('onclick') !== \"undefined\") { return; }\n\t\tif (typeof m_url === \"undefined\") { return; }\n\t\tif ($(m_box).hasClass(\"photoset_photo\") === true) { return; }\n\n\t\ttry {\n\t\t\tvar open_new_tab = false;\n\t\t\tif (typeof $(m_box).attr('target') === \"undefined\") {\n\t\t\t\topen_new_tab = true;\n\t\t\t} else {\n\t\t\t\tif ($(m_box).attr('target').toLowerCase() !== \"_blank\") {\n\t\t\t\t\topen_new_tab = true;\n\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ($(m_box).attr('title').toLowerCase() == \"dashboard\" && XKit.interface.where().dashboard === true) {\n\t\t\t\topen_new_tab = false;\n\t\t\t}\n\n\t\t\tif ($(m_box).attr('title').toLowerCase() == \"inbox\" && XKit.interface.where().inbox === true) {\n\t\t\t\topen_new_tab = false;\n\t\t\t}\n\n\t\t\tif ($(m_box).attr('title').toLowerCase() == \"activity\" || $(m_box).attr('title').toLowerCase() == \"edit\" ) {\n\t\t\t\topen_new_tab = false;\n\t\t\t}\n\n\t\t\tif (open_new_tab === true) {\n\t\t\t\te.preventDefault();\n\t\t\t\twindow.open(m_url, \"_blank\");\n\t\t\t}\n\n\t\t} catch (err) {\n\n\t\t\tconsole.error(err.message);\n\n\t\t}\n\n\t},\n\n\tdo: function() {\n\n\t\t$(\"a\").off(\"click\", XKit.extensions.open_in_new_tabs.click);\n\t\t$(\"a\").on(\"click\", XKit.extensions.open_in_new_tabs.click);\n\n\t\t$(\".note_link_current\").off(\"click\", XKit.extensions.open_in_new_tabs.click_notes);\n\t\t$(\".note_link_current\").on(\"click\", XKit.extensions.open_in_new_tabs.click_notes);\n\n\t},\n\n\tclick_notes: function(e) {\n\n\t\tif ($(\".notes_container\").length === 0) {\n\t\t\tsetTimeout(function() { XKit.extensions.open_in_new_tabs.click_notes(e); }, 100);\n\t\t}\n\n\t\tXKit.extensions.open_in_new_tabs.do();\n\n\t},\n\n\tclick: function(e) {\n\n\t\tvar link = $(this).attr('href');\n\t\tif (link == \"#\" || typeof link == \"undefined\" || link === \"\")\n\t\t\treturn;\n\n\t\tvar open_in_tab = false;\n\t\tvar tmp_link = link.replace(\"http://\", \"\").replace(\"https://\", \"\");\n\t\tvar link_components = tmp_link.split(\".\");\n\n\t\tif (link_components.length == 3)\n\t\t\topen_in_tab = true;\n\n\t\tif ($(this).hasClass(\"post_info_link\") || $(this).hasClass(\"post_avatar_link\"))\n\t\t\topen_in_tab = true;\n\n\t\tif ($(this).hasClass(\"tumblelog\"))\n\t\t\topen_in_tab = true;\n\n\t\tif ($(this).hasClass(\"xoldeheader-item\") || $(this).hasClass(\"tab_anchor\"))\n\t\t\topen_in_tab = false;\n\n\t\tif (link.indexOf(\"://www.tumblr.com\") != -1)\n\t\t\topen_in_tab = false;\n\n\t\tif (open_in_tab) {\n\t\t\te.preventDefault();\n\t\t\twindow.open($(this).attr('href'));\n\t\t\treturn false;\n\t\t}\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\t$(document.body).off('click', 'a[role=\"link\"][target=\"_blank\"]');\n\t\tXKit.tools.remove_css('open_in_new_tabs');\n\t\t$(document).off(\"click\", \"#right_column a\", XKit.extensions.open_in_new_tabs.do_open);\n\t\t$(\".note_link_current\").off(\"click\", XKit.extensions.open_in_new_tabs.click_notes);\n\t\t$(\"a\").off(\"click\", XKit.extensions.open_in_new_tabs.click);\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTU5RDUwRDlDRUE0MTFFMjlGRjNBNzgwQUUxNTkwRDkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTU5RDUwREFDRUE0MTFFMjlGRjNBNzgwQUUxNTkwRDkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCRjMyNzBCMkNFOTcxMUUyOUZGM0E3ODBBRTE1OTBEOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBNTlENTBEOENFQTQxMUUyOUZGM0E3ODBBRTE1OTBEOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ptxi4wkAAAKNSURBVHjapFa/S10xFL65hufTh0OhUBEHEUtLoe1QW3gIiosU1N2htEOhS9utQ/snFDq34Fho/QOcOugmdOji4iQ4CaKdVeQmx7ybXyfnJnkXDe+F3OTkO1/OOTk57OPmVlE3KYExBgASoLDNjaEeuB50L6VbHXwJYWScGEhuJYwcQSQN7Gx0tcBYtnFFPMk3hE4DqpPYoyg4DzIY8xQ6bm6/Bw2AcofmSrBkTAKQZWhsyNsHQhKa/kAB5j4U3ZgOYYHxr9S+lVL40zgFGKvJ0UAQZVhA62vYwJjIWzB2fG19vKRjMep8Zxasj0NSGuindWzQW+ME8mgjH4oOadZEJWETKMAS8/dnFh7O9rqjxjjkSgRDsDNwVVV/Dw7//NunPiBhvvBo7s1yv7hRezA9dWeit7W7hydLGcbc6rPHxS3ay+dPR9StEsI6BUoS6b1uJ7P/9bdN9csIdDifGOtGwhRac8ylOW0TxoIoouEPSe7ufr76+kNFya/P79sQ4jSis9x18A0uVCP9pU7JXYzn0X9+eqf6NtwhNALPJ9tG3hat/IReOnrR8kp+f/nQHl0bsxz6Yty4KXTVjzxZWVc6Z+7d3Vh68XZlcXy0c0vctf787NTk+eXF8el/pYTrEx2dnH3f3sFp1udeO4NTngknZGvqLVEZH5Acq98nxkqMHgRlOBOzKqpffLpGxLF+QOWCpSYyt7p+NAVmzPVcTVnimilAsZ8JdIiEkH2jVV2kM5/AVorCkbeeoNOyrjDyvMnaO7BOWzE7xGfwWf2LpkaqJI1WVAVA9HIS7q4qdXkCnzVIdn4/qSFz4Sh8vBXQzJg8Wpe1uacevf43KxpaVUSLg5RxRFXhaIlC63YtwADFzDLQBx2L7gAAAABJRU5ErkJggg==","title":"Open In Tabs","description":"Changes links to open in new tabs","developer":"STUDIOXENIX","version":"1.1.8","details":"Open In Tabs allows you to open links on new tabs, useful if you don't like being confined to one tab. Since some links, if opened in new tabs, can break functionality, they are not effected by this extension.","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/outbox.json b/Extensions/dist/outbox.json new file mode 100644 index 000000000..bbfd8ac86 --- /dev/null +++ b/Extensions/dist/outbox.json @@ -0,0 +1 @@ +{"id":"outbox","script":"//* TITLE Outbox **//\n//* VERSION 0.11.4 **//\n//* DESCRIPTION Saves your sent replies and asks. **//\n//* DETAILS This extension stores and lets you view the last 50 asks you've answered privately. Please keep in mind that this is a highly experimental extension, so if you hit a bug, please send the XKit blog an ask with the problem you've found. **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.outbox = new Object({\n\n\trunning: false,\n\n\tpreferences: {\n\t\t\"sep0\": {\n\t\t\ttext: \"User interface options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"show_checkbox\": {\n\t\t\ttext: \"Show 'Save to Outbox' checkbox in Inbox\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"sep1\": {\n\t\t\ttext: \"Storage options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"use_shared\": {\n\t\t\ttext: \"Use Shared Storage (turn on if outbox messages are disappearing)\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"export\": {\n\t\t\ttext: \"Export your data\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t},\n\n\tcpanel: function(m_div) {\n\n\t\t$(m_div).append(`\n\t\t\t
    \n\t\t\t\tThis feature no longer works and has been replaced by Outbox for Tumblr.

    For personal archiving, you can view and export your historical XKit Outbox data here:\n\t\t\t
    \n\t\t\t`);\n\n\t\tconst storage_keys = Object.keys(XKit.storage.get_all(\"outbox\"))\n\t\t\t.filter(key => key.startsWith('messages'));\n\n\t\tlet data = null;\n\t\tlet data_JSON = '';\n\t\tlet data_text = '';\n\t\tlet data_text_html = '';\n\t\tif (storage_keys) {\n\t\t\tconst dataArray = storage_keys.flatMap((key) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst m_messages = XKit.storage.get(\"outbox\", key, \"\");\n\t\t\t\t\tconst m_messages_array = JSON.parse(m_messages);\n\t\t\t\t\treturn [[key, m_messages_array]];\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (dataArray.length) {\n\t\t\t\tdata = Object.fromEntries(dataArray);\n\t\t\t\tdata_JSON = JSON.stringify(data, null, 2);\n\n\t\t\t\tconst create_text = function(strip_html) {\n\t\t\t\t\tlet text = '';\n\t\t\t\t\tdataArray.forEach(([category, messages]) => {\n\t\t\t\t\t\ttext += `==== ${category} ====\\n\\n`;\n\t\t\t\t\t\tmessages.forEach(messageItem => {\n\t\t\t\t\t\t\tlet { /* avatar, */ username, to, time, message, answer } = messageItem;\n\t\t\t\t\t\t\tmessage = message.replace(/<\\/p>/g, '').replace(/

    /g, '');\n\t\t\t\t\t\t\tif (strip_html) {\n\t\t\t\t\t\t\t\tanswer = answer\n\t\t\t\t\t\t\t\t\t.replace(/ /ig, '')\n\t\t\t\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t\t\t\t.split(/<[^>]+>/ig)\n\t\t\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t\t\t.join('\\n\\n');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst date = new Date();\n\t\t\t\t\t\t\tdate.setTime(time);\n\t\t\t\t\t\t\tif (answer.length) {\n\t\t\t\t\t\t\t\ttext +=\n\t\t\t\t\t\t\t\t\t// eslint-disable-next-line no-sparse-arrays\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tdate.toLocaleString(),\n\t\t\t\t\t\t\t\t\t\t`Private answer from ${to}:`,\n\t\t\t\t\t\t\t\t\t\t,\n\t\t\t\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\t\t\t\t,\n\t\t\t\t\t\t\t\t\t\t` - ${username}`,\n\t\t\t\t\t\t\t\t\t\t,\n\t\t\t\t\t\t\t\t\t\tanswer,\n\t\t\t\t\t\t\t\t\t\t,\n\t\t\t\t\t\t\t\t\t\t` - ${to}`,\n\t\t\t\t\t\t\t\t\t].join('\\n');\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttext +=\n\t\t\t\t\t\t\t\t\t// eslint-disable-next-line no-sparse-arrays\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tdate.toLocaleString(),\n\t\t\t\t\t\t\t\t\t\t`You asked ${to}:`,\n\t\t\t\t\t\t\t\t\t\t,\n\t\t\t\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\t\t\t\t,\n\t\t\t\t\t\t\t\t\t\t` - ${username}`,\n\t\t\t\t\t\t\t\t\t].join('\\n');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttext += '\\n\\n\\n\\n\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\ttext += '==== raw data: ==== \\n' + JSON.stringify(data);\n\t\t\t\t\treturn text;\n\t\t\t\t};\n\n\t\t\t\tdata_text = create_text(true);\n\t\t\t\tdata_text_html = create_text(false);\n\t\t\t}\n\t\t}\n\n\t\tconst toolbar_html = `\n\t\t\t

    \n\t\t\t\t
    \n\t\t\t\t\t
    Download plain text
    \n\t\t\t\t\t
    Download text with html tags
    \n\t\t\t\t\t
    Download raw json file
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    `;\n\t\t$(m_div).append(toolbar_html);\n\n\t\tif (data) {\n\t\t\t$(\"#xkit-outbox-cpanel-pre\").text(data_text)\n\t\t\t\t.css('min-height', '300px')\n\t\t\t\t.css('white-space', 'pre-wrap');\n\n\t\t\t$(\"#outbox-download-text-button\").mouseover(function() {\n\t\t\t\t$(\"#xkit-outbox-cpanel-pre\").text(data_text)\n\t\t\t\t\t.css('white-space', 'pre-wrap');\n\t\t\t});\n\t\t\t$(\"#outbox-download-text-button\").click(function() {\n\t\t\t\tsave_data(data_text, 'txt');\n\t\t\t});\n\n\t\t\t$(\"#outbox-download-text-html-button\").mouseover(function() {\n\t\t\t\t$(\"#xkit-outbox-cpanel-pre\").text(data_text_html)\n\t\t\t\t\t.css('white-space', 'pre-wrap');\n\t\t\t});\n\t\t\t$(\"#outbox-download-text-html-button\").click(function() {\n\t\t\t\tsave_data(data_text_html, 'txt');\n\t\t\t});\n\n\t\t\t$(\"#outbox-download-json-button\").mouseover(function() {\n\t\t\t\t$(\"#xkit-outbox-cpanel-pre\").text(data_JSON)\n\t\t\t\t\t.css('white-space', 'pre');\n\t\t\t});\n\t\t\t$(\"#outbox-download-json-button\").click(function() {\n\t\t\t\tsave_data(data_JSON, 'json');\n\t\t\t});\n\n\t\t} else {\n\t\t\t$(\"#xkit-outbox-cpanel-pre\").text('You have no outbox data!');\n\t\t}\n\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller();\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller({ scroll: 'top' });\n\n\t\tconst save_data = function(input, type) {\n\t\t\tconst mime_type = type === 'json' ? 'application/json' : 'text/plain;charset=UTF-8';\n\t\t\tconst storageBlob = new Blob([input], { type: mime_type });\n\t\t\tconst blobUrl = URL.createObjectURL(storageBlob);\n\n\t\t\tconst now = new Date();\n\n\t\t\tconst fourDigitYear = now.getFullYear().toString().padStart(4, '0');\n\t\t\tconst twoDigitMonth = (now.getMonth() + 1).toString().padStart(2, '0');\n\t\t\tconst twoDigitDate = now.getDate().toString().padStart(2, '0');\n\n\t\t\tconst dateString = `${fourDigitYear}-${twoDigitMonth}-${twoDigitDate}`;\n\n\t\t\tconst tempLink = document.createElement('a');\n\t\t\ttempLink.href = blobUrl;\n\t\t\ttempLink.download = `XKit Outbox Data @ ${dateString}.${type}`;\n\n\t\t\ttempLink.click();\n\t\t\tURL.revokeObjectURL(blobUrl);\n\t\t};\n\t},\n\n\tframe_run: function() {\n\n\t\tconsole.log(\"Outbox working on Frame mode...\");\n\t\tif (document.location.href.indexOf('/ask_form') !== -1) {\n\t\t\tthis.run_ask_frame();\n\t\t}\n\n\t},\n\n\trun_ask_frame: function() {\n\n\t\tvar form_key = $(\"#form_key\").val();\n\t\tif (typeof form_key === \"undefined\") { return; }\n\n\t\t$(document).on(\"click\", \"#ask_button\", function() {\n\n\t\t\tvar m_messages = XKit.storage.get(\"outbox\", \"messages_\" + form_key, \"\");\n\t\t\tif (XKit.extensions.outbox.preferences.use_shared.value) {\n\t\t\t\tm_messages = XKit.storage.get(\"outbox\", \"messages\", \"\");\n\t\t\t}\n\n\t\t\tvar m_messages_array = \"\";\n\n\t\t\ttry {\n\t\t\t\tm_messages_array = JSON.parse(m_messages);\n\t\t\t\tif (m_messages_array.length >= 50) {\n\t\t\t\t\t// remove the last element.\n\t\t\t\t\tm_messages_array.pop();\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tm_messages_array = [];\n\t\t\t}\n\n\t\t\tvar m_username = document.location.href.substring(document.location.href.indexOf('/ask_form') + 10);\n\t\t\tm_username = m_username.substring(0, m_username.indexOf(\".\"));\n\n\t\t\tvar m_obj = {};\n\t\t\tm_obj.avatar = \"ask\";\n\t\t\tm_obj.username = $(\"#tumblelog_name\").find(\".name\").html();\n\t\t\tm_obj.message = $(\"#question\").val();\n\t\t\tm_obj.answer = \"\";\n\t\t\tm_obj.to = m_username;\n\t\t\tm_obj.time = new Date().getTime();\n\n\t\t\tm_messages_array.unshift(m_obj);\n\t\t\t//XKit.storage.set(\"outbox\", \"messages_\" + form_key, JSON.stringify(m_messages_array));\n\t\t\tif (XKit.extensions.outbox.preferences.use_shared.value) {\n\t\t\t\tXKit.storage.set(\"outbox\", \"messages\", JSON.stringify(m_messages_array));\n\t\t\t} else {\n\t\t\t\tXKit.storage.set(\"outbox\", \"messages_\" + form_key, JSON.stringify(m_messages_array));\n\t\t\t}\n\n\n\t\t});\n\n\t},\n\n\tcheck_indash_asks: function() {\n\n\t\tvar form_key = XKit.interface.form_key();\n\n\t\t$(document).on(\"click\", \".post-form--asks .ask-button\", function() {\n\n\t\t\tvar $form = $(this).closest('.post-form--asks');\n\n\t\t\tvar m_messages = XKit.storage.get(\"outbox\", \"messages_\" + form_key, \"\");\n\t\t\tif (XKit.extensions.outbox.preferences.use_shared.value) {\n\t\t\t\tm_messages = XKit.storage.get(\"outbox\", \"messages\", \"\");\n\t\t\t}\n\n\t\t\tvar m_messages_array = \"\";\n\n\t\t\ttry {\n\t\t\t\tm_messages_array = JSON.parse(m_messages);\n\t\t\t\tif (m_messages_array.length >= 50) {\n\t\t\t\t\t// remove the last element.\n\t\t\t\t\tm_messages_array.pop();\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tm_messages_array = [];\n\t\t\t}\n\n\t\t\tvar m_obj = {};\n\t\t\tm_obj.avatar = \"ask\";\n\t\t\tm_obj.username = $form.find('.ask-from .tumblelog_name').text();\n\t\t\tm_obj.message = $form.find('textarea[name=question]').val();\n\t\t\tm_obj.answer = \"\";\n\t\t\tm_obj.to = $form.find(\".ask-recipient-label\").text();\n\t\t\tm_obj.time = new Date().getTime();\n\n\t\t\tm_messages_array.unshift(m_obj);\n\t\t\tif (XKit.extensions.outbox.preferences.use_shared.value) {\n\t\t\t\tXKit.storage.set(\"outbox\", \"messages\", JSON.stringify(m_messages_array));\n\t\t\t} else {\n\t\t\t\tXKit.storage.set(\"outbox\", \"messages_\" + form_key, JSON.stringify(m_messages_array));\n\t\t\t}\n\n\n\t\t});\n\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tXKit.tools.init_css(\"outbox\");\n\n\t\tXKit.extensions.outbox.check_indash_asks();\n\n\t\tif (XKit.interface.where().inbox !== true) {\n\t\t\tconsole.log(\"Outbox -> Quitting, not in inbox\");\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.interface.sidebar.add({\n\t\t\tid: \"xkit_outbox_sidebar\",\n\t\t\ttitle: \"Outgoing\",\n\t\t\titems: [{\n\t\t\t\tid: \"xkit-outbox-button\",\n\t\t\t\ttext: \"My Outbox\"\n\t\t\t}]\n\t\t});\n\n\t\t$(\".controls_section.inbox\").prepend('
  • Incoming
  • ');\n\n\t\t$(\"#xkit-outbox-button\").click(function() {\n\n\t\t\tif (!$(this).parent().hasClass(\"xkit-selected\")) {\n\n\t\t\t\t$(this).parent().addClass(\"xkit-selected\");\n\t\t\t\t$(this).parent().addClass(\"selected\");\n\t\t\t\tXKit.extensions.outbox.start();\n\n\t\t\t} else {\n\n\t\t\t\t$(this).parent().removeClass(\"xkit-selected\");\n\t\t\t\t$(this).parent().removeClass(\"selected\");\n\t\t\t\tXKit.extensions.outbox.end();\n\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\n\t\tvar form_key = $('meta[name=tumblr-form-key]').attr(\"content\");\n\t\tif (form_key === \"\" || typeof form_key === \"undefined\") {\n\t\t\tXKit.notifications.add(\"Can't load Outbox, data-form-key not defined.\", \"error\");\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.post_listener.add(\"outbox_init\", XKit.extensions.outbox.init_outbox_buttons);\n\t\tXKit.extensions.outbox.init_outbox_buttons();\n\n\t\t$(document).on('click', '.xkit-outbox-save-checkbox', function() {\n\t\t\t$(this).toggleClass(\"selected\");\n\t\t});\n\n\t},\n\n\tinit_outbox_buttons: function() {\n\n\t\t$(\"[id^='ask_answer_link_']\").unbind(\"click\", XKit.extensions.outbox.save_activate);\n\t\t$(\"[id^='ask_answer_link_']\").bind(\"click\", XKit.extensions.outbox.save_activate);\n\n\t},\n\n\tsave_activate: function(e) {\n\n\t\tvar obj = e.target || e.srcElement;\n\t\tvar m_parent = $(obj).parentsUntil(\".post\").parent();\n\t\tvar private_button = $(m_parent).find('[id^=\"private_answer_button_\"]');\n\n\t\tif ($(m_parent).hasClass(\"xkit-outbox-activated\") === true) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (XKit.extensions.outbox.preferences.show_checkbox.value) {\n\t\t\t$(m_parent).find(\".chrome.ask_cancel_button\").before(\"
     Save to outbox if answered privately
    \");\n\t\t}\n\n\t\t$(m_parent).addClass(\"xkit-outbox-activated\");\n\t\t$(private_button).bind(\"click\", XKit.extensions.outbox.save);\n\n\t},\n\n\tsave: function(e) {\n\n\t\tvar obj = e.target || e.srcElement;\n\n\t\tvar m_parent = $(obj).parentsUntil(\".post\").parent();\n\n\t\tif ($(m_parent).find(\".xkit-outbox-save-checkbox\").length > 0) {\n\n\t\t\tif (!$(m_parent).find(\".xkit-outbox-save-checkbox\").hasClass(\"selected\")) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t}\n\n\t\tvar m_avatar = $(m_parent).find(\".post_avatar_image\").attr('src');\n\t\tvar m_username = $(m_parent).find(\".post_info\").find(\"a\").html();\n\t\tvar m_message = $(m_parent).find(\".post_body\").html();\n\t\tvar m_to = $(m_parent).attr('data-tumblelog-name');\n\n\t\tvar post_id = $(m_parent).attr('data-post-id');\n\n\t\tif (m_message.indexOf(\"
    = 50) {\n\t\t\t\t\t// remove the last element.\n\t\t\t\t\tm_messages_array.pop();\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tm_messages_array = [];\n\t\t\t}\n\n\t\t\tvar m_obj = {};\n\t\t\tm_obj.avatar = m_avatar;\n\t\t\tm_obj.username = m_username;\n\t\t\tm_obj.message = m_message;\n\t\t\tm_obj.answer = m_answer;\n\t\t\tm_obj.to = m_to;\n\t\t\tm_obj.time = new Date().getTime();\n\n\t\t\tm_messages_array.unshift(m_obj);\n\n\t\t\tif (XKit.extensions.outbox.preferences.use_shared.value) {\n\t\t\t\tXKit.storage.set(\"outbox\", \"messages\", JSON.stringify(m_messages_array));\n\t\t\t} else {\n\t\t\t\tXKit.storage.set(\"outbox\", \"messages_\" + form_key, JSON.stringify(m_messages_array));\n\t\t\t}\n\t\t\tXKit.notifications.add(\"Saved to outbox.\", \"ok\");\n\n\t\t}, 1);\n\n\t},\n\n\tstart: function() {\n\n\t\tXKit.tools.add_css(\" .post { display: none; } .post.by-xkit-outbox { display: block !important; } #auto_pagination_loader, #next_page_link { display: none !important; } \", \"outbox_additional\");\n\n\t\tvar form_key = $('meta[name=tumblr-form-key]').attr(\"content\");\n\t\tif (form_key === \"\" || typeof form_key === \"undefined\") {\n\t\t\tXKit.extensions.outbox.show_empty(\"Can't load messages,
    data-form-key not found.\");\n\t\t\treturn;\n\t\t}\n\n\t\tvar m_messages = XKit.storage.get(\"outbox\", \"messages_\" + form_key, \"\");\n\t\tif (XKit.extensions.outbox.preferences.use_shared.value) {\n\t\t\tm_messages = XKit.storage.get(\"outbox\", \"messages\", \"\");\n\t\t}\n\n\t\tif (m_messages === \"\") {\n\t\t\tXKit.extensions.outbox.show_empty();\n\t\t\treturn;\n\t\t}\n\n\t\tvar messages_array;\n\t\ttry {\n\t\t\tmessages_array = JSON.parse(m_messages);\n\t\t\tXKit.extensions.outbox.show(messages_array);\n\t\t\t$(document).on('click', '.xkit-outbox-delete', XKit.extensions.outbox.delete);\n\t\t} catch (e) {\n\t\t\tXKit.extensions.outbox.show_empty(\"Can't load messages,
    \" + e.message);\n\t\t}\n\n\t},\n\n\tdelete: function(e) {\n\n\t\tvar obj = e.target;\n\n\t\tvar form_key = $('meta[name=tumblr-form-key]').attr(\"content\");\n\t\tvar m_messages = XKit.storage.get(\"outbox\", \"messages_\" + form_key, \"\");\n\t\tif (XKit.extensions.outbox.preferences.use_shared.value) {\n\t\t\tm_messages = XKit.storage.get(\"outbox\", \"messages\", \"\");\n\t\t}\n\n\t\tvar m_messages_array = [];\n\n\t\ttry {\n\t\t\tm_messages_array = JSON.parse(m_messages);\n\t\t} catch (err) {\n\t\t}\n\n\t\tm_messages_array.splice(parseInt($(obj).attr('data-outbox-id')), 1);\n\n\t\tif (XKit.extensions.outbox.preferences.use_shared.value) {\n\t\t\tXKit.storage.set(\"outbox\", \"messages\", JSON.stringify(m_messages_array));\n\t\t} else {\n\t\t\tXKit.storage.set(\"outbox\", \"messages_\" + form_key, JSON.stringify(m_messages_array));\n\t\t}\n\t\t// XKit.storage.set(\"outbox\", \"messages_\" + form_key, JSON.stringify(m_messages_array));\n\n\t\tvar parent = $(obj).parentsUntil('#posts');\n\t\t$(parent).fadeOut('slow', function() {\n\t\t\t$(parent).remove();\n\t\t});\n\n\n\n\t},\n\n\tshow: function(m_array) {\n\n\t\tvar m_html = \"\";\n\t\tfor (var m_message in m_array) {\n\n\t\t\tvar m_obj = m_array[m_message];\n\n\t\t\tm_html = m_html + XKit.extensions.outbox.render(m_obj, m_message);\n\n\t\t}\n\t\tif ($('.no_posts_found').length > 0) {\n\t\t\t$('.no_posts_found').after(\"
      \");\n\t\t\t$('.no_posts_found').hide();\n\t\t}\n\t\t$(\"#posts\").prepend(m_html);\n\n\t},\n\n\trender_ask: function(obj, m_id) {\n\n\t\tvar to_return = \"
    1. \";\n\n\t\tvar m_link = \"\" + obj.to + \"\";\n\n\t\tvar m_day = \"\";\n\t\tvar m_date = \"\";\n\n\t\tif (obj.time !== \"\" && typeof obj.time !== \"undefined\") {\n\t\t\t// defined in moment.js\n\t\t\t/* globals moment */\n\t\t\tvar moment_val = moment(obj.time);\n\t\t\tm_day = moment_val.format('ddd');\n\t\t\tm_date = moment_val.format('MM/DD/YY hh:mm a');\n\t\t} else {\n\t\t\tm_day = \"?\";\n\t\t\tm_date = \"Unknown\";\n\t\t}\n\n\t\tobj.message = $(\"
      \" + obj.message + \"
      \").text();\n\n\t\tto_return = to_return + \"
      \" +\n\t\t\t\t\"
      \" + m_day + \"
      \" +\n\t\t\t\t\"
      \" + m_date + \"
      \" +\n\t\t\t\"
      \";\n\n\t\tto_return = to_return + \"
      \" +\n\t\t\t\t\"sent ask\" +\n\t\t\t\t\"
      You've sent to \" + m_link + \"
      \" +\n\t\t\t\t\"
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
       
      \" +\n\t\t\t\t\t\t\"
      \" + obj.message + \"
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\"
      \" +\n\t\t\t\t\"\" +\n\t\t\t\"
      \";\n\n\t\tto_return = to_return + \"
    2. \";\n\n\t\treturn to_return;\n\n\t},\n\n\trender_fan_mail: function(obj, m_id) {\n\n\t\tvar to_return = \"
    3. \";\n\n\t\tvar m_link = \"\" + obj.to + \"\";\n\n\t\tvar m_day = \"\";\n\t\tvar m_date = \"\";\n\n\t\tif (obj.time !== \"\" && typeof obj.time !== \"undefined\") {\n\t\t\tvar moment_val = moment(obj.time);\n\t\t\tm_day = moment_val.format('ddd');\n\t\t\tm_date = moment_val.format('MM/DD/YY hh:mm a');\n\t\t} else {\n\t\t\tm_day = \"?\";\n\t\t\tm_date = \"Unknown\";\n\t\t}\n\n\t\tobj.message = $(\"
      \" + obj.message + \"
      \").text();\n\n\t\tto_return = to_return + \"
      \" +\n\t\t\t\t\"
      \" + m_day + \"
      \" +\n\t\t\t\t\"
      \" + m_date + \"
      \" +\n\t\t\t\"
      \";\n\n\t\tto_return = to_return + \"
      \" +\n\t\t\t\t\"fan mail\" +\n\t\t\t\t\"
      You've sent to \" + m_link + \"
      \" +\n\t\t\t\t\"
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
       
      \" +\n\t\t\t\t\t\t\"
      \" + obj.message + \"
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\"
      \" +\n\t\t\t\t\"\" +\n\t\t\t\"
      \";\n\n\t\tto_return = to_return + \"
    4. \";\n\n\t\treturn to_return;\n\n\t},\n\n\trender: function(obj, m_id) {\n\n\t\tif (obj.avatar === \"fan_mail\") {\n\t\t\treturn XKit.extensions.outbox.render_fan_mail(obj, m_id);\n\t\t}\n\n\t\tif (obj.avatar === \"ask\") {\n\t\t\treturn XKit.extensions.outbox.render_ask(obj, m_id);\n\t\t}\n\n\t\tvar to_return = \"
    5. \";\n\n\t\tvar m_link = \"\" + obj.username + \"\";\n\n\t\tvar av_link = \"\";\n\t\tvar av_text = \"\" + obj.username + \"\";\n\n\t\tvar m_day = \"\";\n\t\tvar m_date = \"\";\n\n\t\tif (obj.time !== \"\" && typeof obj.time !== \"undefined\") {\n\t\t\tvar moment_val = moment(obj.time);\n\t\t\tm_day = moment_val.format('ddd');\n\t\t\tm_date = moment_val.format('MM/DD/YY hh:mm a');\n\t\t} else {\n\t\t\tm_day = \"?\";\n\t\t\tm_date = \"Unknown\";\n\t\t}\n\n\t\tto_return = to_return + \"
      \" +\n\t\t\t\t\"
      \" + m_day + \"
      \" +\n\t\t\t\t\"
      \" + m_date + \"
      \" +\n\t\t\t\"
      \";\n\n\t\tif (obj.message.indexOf(\"\" +\n\t\t\t\t\"
      You've sent to \" + m_link + \"
      \" +\n\t\t\t\t\"
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
       
      \" +\n\t\t\t\t\t\t\"
      \" + obj.message + \"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\tav_link +\n\t\t\t\t\t\t\tav_text +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" + obj.answer + \"
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\"
      \" +\n\t\t\t\t\"\" +\n\t\t\t\"
      \";\n\n\t\tto_return = to_return + \"
    6. \";\n\n\t\treturn to_return;\n\n\t},\n\n\tshow_empty: function(m_message) {\n\n\t\tvar m_error = \"No messages on outbox yet.\";\n\t\tif (typeof m_message !== \"undefined\" && m_message !== \"\") {\n\t\t\tm_error = m_message;\n\t\t}\n\n\t\t$(\".no_posts_found\").remove();\n\t\t$(\"#posts\").before(\n\t\t\t\"
      \" +\n\t\t\t\t\"\" +\n\t\t\t\tm_error +\n\t\t\t\"
      \"\n\t\t);\n\n\t},\n\n\tend: function() {\n\n\t\t$(\".by-xkit-outbox\").parent().remove();\n\t\t$(\"#xkit-outbox-no-posts\").remove();\n\t\tif ($('.no_posts_found').length > 0) {\n\t\t\t$('.no_posts_found').show();\n\t\t\t$('#posts').remove();\n\t\t}\n\t\tXKit.tools.remove_css(\"outbox_additional\");\n\t\t$(document).off('click', '.xkit-outbox-delete', XKit.extensions.outbox.delete);\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.interface.sidebar.remove(\"xkit_outbox_sidebar\");\n\t\tXKit.extensions.outbox.end();\n\t\t$(\"[id^='ask_answer_link_']\").off(\"click\", XKit.extensions.outbox.save_activate);\n\t\tXKit.post_listener.remove(\"outbox_init\");\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDVFREE3NzNERUE0MTFFMjk3RDJBOUJGM0YwNzNFMEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDVFREE3NzRERUE0MTFFMjk3RDJBOUJGM0YwNzNFMEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowNUVEQTc3MURFQTQxMUUyOTdEMkE5QkYzRjA3M0UwQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowNUVEQTc3MkRFQTQxMUUyOTdEMkE5QkYzRjA3M0UwQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsarvEkAAAb1SURBVHjalJbNy25l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","css":".post_full .post_control.deny-xoutbox:after {\n\tbackground-position: -914px -123px;\n}\n\n.post_question_fan_mail {\n\n\tbackground: #e7eaec;\n\tpadding: 15px 20px; font-size: 22px;\n\tborder-radius: 5px;\n\tfont-weight: bold;\n\tline-height: 28px;\n\n}\n\n.xkit-outbox-fanmail-indicator {\n\n\tbackground: #e7eaec;\n\tfont-weight: bold;\n\tborder-radius: 4px;\n\tposition: absolute;\n\tbottom: 13px;\n\tleft: 20px;\n\tfont-size: 12px;\n\tpadding: 3px 8px;\n\n}\n\n#xkit-outbox-info {\n\tpadding: 15px;\n\tfont-size: 12px;\n\tcolor: rgb(80,80,80);\n}\n\n#xkit-outbox-toolbar {\n\tbackground: rgb(245,245,245);\n\tpadding: 3px 15px;\n\tborder-bottom: 1px solid rgb(190,190,190);\n}\n\n#xkit-outbox-cpanel-pre {\n\tpadding: 18px 0 0 18px;\n\toverflow-x: auto;\n\toverflow-y: hidden;\n\tfont-size: 12px;\n\tuser-select: text;\n\tfont-family: monospace;\n}\n","title":"Outbox","description":"Saves your sent replies and asks.","developer":"STUDIOXENIX","version":"0.11.4","details":"This extension stores and lets you view the last 50 asks you've answered privately. Please keep in mind that this is a highly experimental extension, so if you hit a bug, please send the XKit blog an ask with the problem you've found.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/page/gallery.json b/Extensions/dist/page/gallery.json new file mode 100644 index 000000000..b24859966 --- /dev/null +++ b/Extensions/dist/page/gallery.json @@ -0,0 +1 @@ +{"server":"up","extensions":[{"name":"accesskit","title":"AccessKit","version":"2.0.3","description":"Accessibility tools for Tumblr","icon":"data:image/png;base64,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\n","details":"Provides accessibility tools for XKit and your dashboard, such as increased font sizes, more contrast on icons and more."},{"name":"anti_capitalism","title":"Anti-Capitalism","version":"1.6.6","description":"Removes sponsored posts, vendor buttons, and other nonsense that wants your money.","icon":"data:image/png;base64,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\n"},{"name":"audio_downloader","title":"Audio Downloader","version":"3.0.2","description":"Lets you download audio posts hosted on Tumblr","icon":"data:image/png;base64,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\n","details":"This extension allows you to download audio posts as MP3 files on your computer. Please note that it only works on audio hosted on Tumblr. If they were posted from Spotify, SoundCloud, YouTube or any other service, it won't work."},{"name":"audio_plus","title":"Audio+","version":"1.0.0","description":"Enhancements for the Audio Player","icon":"data:image/png;base64,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\n"},{"name":"autoscroll","title":"Auto Scroll","version":"1.2.0","description":"Scrolls the page at a variable pace.","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAENpJREFUeAHFWwmsXVUVPe//D1axiljBqqgBAuKESiNgBNQAipWqRYWgAXECBxxiqlGZLIpGImqiaAFBcAgRB1BChBDAECBCUQERBRS1am1woDJD+55rrb3Xvefe937blILnce/ed589rL3PcId+BiXbwUvP3HO0Zu2SQSkLhqPRfIoHg0EZjUai1ntk6YhRcZCymScdb8ZGyrY+vPCyEprLBzPTJ51z7OFXyIang4497VOj0eAEBO5EQv4oAB1TC41xyEe8/iU1Hlbrx3PszG/Mt6HMAm9M3wLEGQ5GU8ecc8I7TxwcfMxpe44Go8sRZKqfUS9f2ze0D7hvr8o5C1l1PbrLCfYTGrMfM4CFZRvgvwEOhkWYKoNXzAzLcMloOJhqOnN043qEnAyLEvOkiD2EMjyJSkKhmaTOjpcCm5TXtmUl0TSVKbNNn1JvOJSdDMyTsgkeMfkyl3AKIhvI+MOADweDJTOjYVkwwklNDtKRCJWHMA+P1It1FvriEZx0UtMaRUeTEKujAkWVBrpEieMyXDhp2uEwJHYO0CdZ6phvzHNACikaZraciNIePwy4KPuHo+GCmeFwON8JcCQjqXQJB4rVIGRFmXwkDFvpk7LJFgaNPxpXIxr9bcEMhlSNYeuMcZlIot++suD9GRPYW/+NcTpBwoE3Bxz682fouR2hSXxMo0BgOKbdgrg4zYxCNpZFnChep1/JVzPIrhWQF21FYuBzULLfsvCvcwxa9tf25Lt4RmWmFsimczIaU4MJwHAXUzJLHXBDFm5sZ0ppy4/bc8exlLqM0864ls8Z0+sf5IwlZYsJWBfMvlr7mcigBSXLzqnqk8f0DDLmDni9DDsu8kJ7gqexZE42Csp8Ylo3BjmAFYaqgNo82JUJcyVydeSKbPhcMVF76tod+Bmti+b2L2/wGBrdK2IBYBTBm2IAJoAAPH5XYIe9kAOv/yiLVs8XDVnjNC3DRMqxh1R7TG/P0iZX4eN4sTUUwQfI1THJd2YAFT2NZKkRAecEpUCH9iytQEo16gtUyGPEK335Y5C2P/JNfxK3vPxRvdInW8d3UWXq0c0ZEfFj0CIik/e8hYQzgOhnmzLcLCOpNGcCKaMkChbU1zWlracl5fGgiYxyxgkgKuCE+glrOcGMVM2meW1spGzNuFhfsuoCuUYLSmzYBC2czUHayJnqj0AZkZNJvH1Ev4c4fLcJIkIDYN6Wjy+ffPsBZfPNpsuJZ15Q/v7POxtfrf/WogFexXPsVp/+jYEW5lu8rSw8Tgkk7XCoFklrXrglR8mS8u5B25bWPPsm9TPGqDzx8Y8rJxyxuGz39KeUZ2y9VVl6xBvL1k+aKxvCClv7aKljz4Znff19vNRXAaJjPAFukARDygMXDSVPO9PgI0EDHKfDMvexc8rS97yhzJ+3ZQwBzvO2nIsiLC5bzd0CSyaKHMnQf/hsMUbcydd10QMv8ROjcZraHi9ATjwChwGHQUNRUegRMvWz2zyp/Zi6cKYs4JzNNyvHI/lnzZ9HT5321Cc/sSw98o1l7hZz1lHwNinhhAdTOtMgJCWP13rJSHkQmyl52uolyAlRIJ605umUB3ajhubOpFsf+tjYxyYd0HoFPmazmXLcu99Qdth2G+lMOm27zZMxOxaXLR6zOZxELNPat21HuXuT6oBSQ8ErflLvAqb0QZ+xBJjYhIQYXI1UfEVhPpRNUPIMbhpAQjY9NVWOfsei8tztnh7+1nHe/hlbl+OwJ3C29OPH8mA8xsFsQDMNl4k3h2AMH3IQPlAtAWCeCgc0DLCmkUxU1gH7lLq1veLyFO4UZAr3qI8ftrC8aKdnBcYNOO/87KeVo9/5+jIzzRWaYDkAyZPWfK3T5TmTaR8zmljJOw8CjSWQjoWbvMoRSMnP1uicrQkKS/Gk6eWjb9u/7P6CHWZzMat8lx2fWT5x+AGFBdRsInjGMnVcU+dQ0VgCfHKN5QAinpSNWHMTTOCVsZLLa2hSWwamk/oDIXXpvZSjDtqv7L3rzgq2MaeXPm/7suTQhXgY4xMcfUZZSY3DVIVPjObXvwnqbRDO6kcp8gzAeDq3lHpKPPXNi1I3Si56xIGvKq/e44XpYePJni/eqTzw4EPl5O9cOI4Hbo1REYw98SkPyyrdxgZ9ne8B9ZShQybmFxAFyMK4QCocNyMHTP6whS8vr997V5lsitM+uz2/3PfAg+Xr517SYKLfMXwhbEP28DoX0lDl2yBBZ3NlTK3k/j6dVLCD9tu9HPzqPfqqD/v6gL1eoiKccd7lStwOm9kHwSQ8llHfuqaUaQ8gs0Gtrih4FS8p+UUY9cMX7b1BrjZG6S377l4Oec3LYMoh8jCZtrfEdpdvZYrXw09Z52UonKpm0leM6rI/5d1Fuh/W+3vfvE/YPYLnQw/Yq9yL5fDjS68F3Fx+pGyY2rxLeEl6pE0xBULPFFdTElGAQ/Kk4qFgSks7Iq2PvV7ynPLht74WcVmKR74d+aZ9yv4v2yXmALEgpPMwJXDe800nPdmyDx9EMJXDHGuIn41534xEeBthUnp+RhDzTpTyPV64Y/nY4YvK1NSjk7zL+8FD9teecOk1v2kKH6XgLVNlIGJwnB3GZnlQ5tpZAjY0ZTCPuvh07P7n77BtORrP7jPT0+x+VBsL/rG3Lyr/vee+svymP2TsboLKG4PUyZ+1sBpYfRX2iEoXCqRsnNGW8bq/5FbfdU858/zLGv8RicauOK3W0QzG6jatAK7DWl3/ufOuZpACL2dtWPnznN9zlHn1QYV5owBtiBjtfNihGH3qtg4ca7/JAH/5xz8Lj41u9EtflX/x6b/hm34CwIUz7Ck4F1Pi6vOdb57o1zfBdpoz+XbNSI5g7ufeQN57hPiqv0lm1gQyWffTQAhTwLdLJqe3TOhS3MJps8mshAcKDR4UJGRZMRL6yEvyVXrKRV+FvaYFRgZpIQDgSeknA5tGN4NGYzf5VAM/oWApSwtbVpdwkuElrHj5htDxYpNmvVIJHcKWCtJHl/XHPsoikPYAx1ifQaJtiO8YvosQeLXEEBmlpfPmM3XwDV4EJN/MaEINg4hhPg08GUjZiFeTRlc4OZGk4/ox1BgWWfCcdwG6oj1F7E4PY1RqzWn7beeXBc/bTjYhDPsGCTOrM+x1hx5jO575wNMEapgxB+Xq639fVvzjX9JwqKyX/Mb8DP+OYspctQn639IiTtvdd9iHt9UTHlfefeA+Zfr/cBsk1gcfWlNu+sMKPJLfEdA5eMo+Chj1RwmynmP5YGbig0g80/P5mbcL07h1YC5oQ2JR0KcdJCj5a35zWznx9B/FO0FCeLTImrVry3GnnFNuvOXPTcjYwIEU2HQAe0Mzj04+yHlKz87pYswBShbOSGNmmNKEtpdcfX354rfOb0A8GgwH6TPLflCu+uXNwqWvRJCxdfLJpQX08YOOONLUX/f3AFRN00jVm5Aapxb6fvrz5WXOnM3LUYcsnKC0aUUcgJPOOK9c9osblJ7/akRRcpBQlQhKQox56VzaJaHvAejNNUKr1CXb+qkdUN36VgY992dXlsfic/a7DtxXto/U6SvfuaBcgIKrAYdyTTx+BvBzgbKpbkscdGLPwVfeehBy1iOVCJOkyrCzi2bCLnA/ybPOu1RFeOvr9u53bZLrZd+/qPzw4qtaX9UAUMjpXdMYWd8Ms6cqCNXzNii78SGXjaOkTkX6FSeAb5zzMxVh8b6b9qvQ2edfWr79k8uq6BvCGrspbWo+C9C+DHHN+1YS9aN6PePJty7amtM15xc3zZPPOr/MwXJ47V6b5rvguRddWU499+IYoJylDGdsxmPss+VDm7pRLzZBLwom4IUCzXjUnP17gO4ISjoheG2Afm7Z9zETNiuv3O3hfRm+4PJry5dRUDYlDN9NwsSIoxmgjN/cqdCh254Vmh0xBMw1/mkMLvWDoKFZFN8uCKCzKxpIUoMyZfGO/er3ylW/ulmmG3O65Kpfl8+f9oPWNBMUjppPDSdOKh5gTFk18+5nrvEcQNRGbkqndRDweulISp7FMSUvx6boX4MntU9+6exy3U23JcQNJ1csv6kc/7Xv6SGLD13xEMZZGfd7ejI/W78Shl6TsLGR4mDOnb8P0FMgE0Rn8C3VQxKTJgBQHURBPls/IMX8R40lXzgDT2x/Sq31k2tuvKV86stnl7V42pPPjGfeCdWjWvPu3xDa+bdBQlOQxGjejpisZA2gKEY8LeYMQIGsH/JRuff++8tHPndq+f3tf11v9tf/7nYU7Jt4zn+I4XDQX9S55SlrY1vB2Prxww76aLJLFNTTu8BsDuqqko8lEFQ8HJnKJ5GyGbF50Lvvvb986LPLyu1/XUXpxHbzH1eoUPc/EMnTj1xO8EcHY0sAepLNog9gGZcUB/Q6SyACRod4qkMp1WVEPhxBXr1gkFflTWlnnhTHv1ffXT6w9JTyt1Xjn9H+uGJl+eBnlpV7UCg3jSij0dcEf9QLDGGxPv2Oj/SJTRDO/aOQvyZgTufcNLTR1Tx1ee1f396+sp+Fu+M/q8v7Pn1KWfWvOwM1zitW3lHeD9nq/96dicKn/ZrWvhIflKVPKh46psLUx9MbEOpMP23n3Y5vbpP9+yQU/LRHtNTjDLA+4zbPJexgMwUrfeqoQ9jE33X3feXK635bXrrLTioEl8Yd/16tPBp/tS/6pB84ckx1VzLKLQuOcfFcg5/fDTiwfliiDnENFiw+yjNnLECo0HOkMOagB6ivH9WgbaIDt+5m3Yg3br/ufhfHxegXrB+benoX6FSIVbMHWbTgFR59DTzxs+u3iYePsRHJ0eEoRetTSi1Llc61+4LKf2KSJcSBubZ1EdnnR2EnjD4lnxnylhFTJm8h4U6w6ZJq3AFSHVzwTohyy6iPpwroxv+1wWvzpGphEI4hICyPIvv9Td+f8KIfEVwHRaNmCAJHLIOw52BFTtKCYefvA/jxlqb5ETfcQMn++wlZ3lJZQ98SB48ELTcViEaXCbOA7YxSgVJGXd5yLeM1G0RtQ7ViALOg6Iy331AK+/Bjo/xr8bi0L1NKOzyjwXe7RNgbZQkPTJizJRPOivr/2SHaGlD4rsph32GeydTxiKdC5NDWxx2DU0aPuQTE6ZMy4YNp/TmAMLEHtIDl205l0T1pOkaMqqMFpBGEvQskV+gmZVN/Ul7LH4pCykYojpGSDmLv4KQT9SnGrc4B/bmMVPqMhZ/xUVGvw5BIIbRats9ZzbTfz+u6z7xp9LexDMS0bx+ZUD8TlqM6gW68ZnJkCNUCpqRsrBv/UNIFJ1h+EluJyut/lVWcNp4q5aqHgwjuEVC2GrKM0HdA3JU/+qibZgTsXQDHavz3Mlq/fu09+G7xuzKs0JV4FC7Lua70w0VD09LgZGpvpNKFNGmUgNZsPIOXflDy/UOa0iGHZp500lHr1HzqKh54xyGMkNF3y7sf+8Fy7AFTJ5WydiE09WZIv23rDmHc8uKvSKzDVOtWX5s37XqDlWdPzkmBrWYE7WzDGOSrHavhKWPTHQKZkrJ5Qw6qGkgqPIPBcAa5T6+6dflfttlx17X4EvwKFAG2MGZF1WoK3n0JWHqWUd+8+8NJe6a7OiPFyXjk+/a1TO5Dt1ki6BcvP/ZNPxlS9uDdn2IY4X+eHh3z6wtP/a7+tmXVrddd8dQdX3wZ1sQ86D4BOOZSlyPidclrYaeMF2jqT5oCEQVk0P4R85AWOuzbCXXi0bZXkHqG1Lqz2hMN/bgNplaCvRx/vP6eGy48/bsU/w8PVr+fCI/KEwAAAABJRU5ErkJggg==\n","details":"Automatically scrolls the dashboard."},{"name":"auto_tagger","title":"Auto Tagger","version":"0.7.5","description":"Tags posts automatically.","icon":"data:image/png;base64,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\n","details":"This extension allows you to automatically add tags to posts based on state (reblogged, original, queued) or post type (audio, video, etc) and keeping original tags while reblogging a post."},{"name":"blacklist","title":"Blacklist","version":"3.1.9","description":"Clean your dash","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAE/dJREFUeAGlW3uQnWV5f8/Zze5mk+xudpNIEoh4acWEAMaAU1pEpiqQQBJiQrHU/tsZp52p1nR6gxlhpEoUMGhtvbTTGbRM22lr1TpWLbTM1AGickkC0XprbpsNkAvJXrK75/T3e57n937f+c7ZxNh3853ned/3eX7P5X2+97uck1qKNnbfXdelmbQj1dL6ZqO53IZrtZSazZRI2cBi3in74mOaQ+VWnRYUqbXzCVTtl8HJVwHPI1+vpSPNZm136m7uXPYn9z5BCHN99MN/9qdg7mVfmJw8X6vmo+pQDQ41AUjKJp6UrTpvg+f4kG+hbuuisXOotU3VUq2ByO9adve999XG7sHKN5qPN1Oz3hZQVbUiUE14ZRo2kAD8kXprlWjtVY21F1hV/v+DzyTU6rV3dDcajR3wsW7m4adlN/sLk4pS/tGLaFoJUQ6XpoNnCtTEiXqCPFRp07jPS0qUco7mDjZTA7IcI1UrpOm7VVtUoAUX8diCN2o7ulEM6xsCkG5QK9EGqiUA2ko4HMorLN9bEgjHIkNeDQzPDbgvPEXkPKmcCFaYnKphjtOkbOJz16tN+LIrahXTZPWHwWZzfXejObt8rgDdb8CFAephg2TS3T7APMtaAQqYVxIA1RhZrojrUKCJ5NoY6VxNtjnfpGEMGLWBYozdCr4nyFVcmnaKikHcy7ttIkcIvBbeV9+cNsFWB2wFkZC8gkoOKRvFNQaWAauqbJoOlyqMYy1NuVQSzlMBsGD/4sNi8VV3ALPNCgiHGWu3rYKWNOJTl6tpqkqKzWOElM1xM6WYRFygJBMD5QQT31pQ0weAhg3MF83lLJkQyAkOPgKq5qeMTb694mrJKqCIwNxHlzSagmRXnsnhc4jYVKVkm3C0e3g4dQ2PpPr8/lTv63XIs1OpMTGeZl5+Oc0ef6ViB77IbtmHMn8uf8LHTMpYWEFUQCybSSharQwGlVay4UskPGOKIbZkbAy69YUDqW/16tT35jWp9/VvSLXuyLmUKrQ5M5OmfvyjNLlvb5p8YV9qvHoqSwhb9tvtQZSux/qRlLqWR2EYKARqh/74Q3Tb+oU41X6RFiZr9dT/1vWp/+q3pXkXX5LPuQtF5OkyffBAGn/6yTT+3d1wT+fDXP61hQyTGutkPU4BbXKdNgkfc4O2oSCnuoxwh9CYwzex0qvTwI0b0rzXXNTJoo01JifS7KlTdhC/vmhR6hoYwCkxv0WHcz2XrLJjwa9el05949/SFKpC4cu2/MHmAH0GTMomnjS6VI4u464d/KM/yJfN9gqgZKGh8iFl0wxp99JlaWjr9tR76etsrvwxfWzMS3rvnjQ9ejg1z54tT2e+3tOTui9akfrWXJ7mr15jmHkymKmf/Did+Kd/TDPAtEDkBOcr54QWj9Sm8aGINFA78IcfwN4UEdnoOT5kjBRNFdB72WVp+L3vwwr2+QTncHkb3/1UOv3Ef6bpMTiLRjPy0QbO89G1ZFla9PbrU//6a1Kt7jerVGlMTqZXHn0E1fBCa0SKTuHM4a9WnHHXDuxgAtwTnnPKmo9UECtdlsDC629IgzdvbHFwYt+edOrrX00zEbhjMWGt/lYHqglSsrpQXYM335LmozLUmOCTX/9aOvNfj+WLRJv+z2EPCfj9WE9Bl2jV40oChm7bnhb+yrVZoTExkV750iNpcv8+H6vqZ8lgKnjVhOR6pRxa35tWp+Hf/C1cQou94vR3/jud+Od/cIELtQetuhmlIg67SQnqNywoFi6DhMSDLnz7DS3Bz7x0LI09/GCafBHBU85kqUp9NfGBaXMhC95KM2iZFx6xaaMxfkaA5gN9scs5EewmKfBNSjbREatp0O4iQErrPjlSXl0hA8RKXLY6DW64JXrJrtvH/uZzqYkKaG+yyhnxoq3SOv20J9E3jblk0y6v9f4FLYr0ZfroKO4b9mIcMVhiKSI7otWAcJ9il0DO24HLR6Z4RsR5xmsvqY76kqVp+M735XN+Git/7K8R/DiCp2HTJ+100I5kyDpPagfsZGq2IROUuAPYawZ+/d2MrKVxgxy587dx1XjNufERi9si9VjtFJADRCWfm1jSOIa335Gv1zznj33+r6wkCViAR0AKLNOyDK7BwLRrMajzWHEbk34hP3DzhjRYCX7qpz/BLbRXHa9Ai7f/huEpHltv2CblwRhEyVMOCaAxzwjPH+NJ41wSpXbf6jWpD7ezai898rdWeuq3UWBbI7UDvUyJyHGnxnOaA2rB8gow+M4bNWp08of709GHH0r0QY2+zV99+dzxwLbFE/4wVpwCzJD/iVcG6Sx5cxpWFt+ySbbS+PPPpQnc2FDTEseEUT5oWTfjMTziWZAFr3nDCQzxFvy7KsH/YH8a+8tPp+bsLG6w9pgvcmwQPnLfsJWGHVFLbdiWPUrZ3YUqgMLkSZ13ACos4H39Rf6ymOfl8a/+i9mkvJoHRwwF5/yc85KjYzzYRMEObcTKV4KfiODTLO1SL5kvtldgpAc+0lf5UKaYtnFSNq8ABFMIiW8/JRZe+2uuhc/TT34nzYyOEqHl0Orb6lklACcoGDcelDbN/6DGx4bHYLizD77rpmyTjAX/mYdTA0+M3JSJQToNX+iT2sJrrzNs9w+j4advqKxS+uX6qAB3hKTtICLGuwYGU8+q17Jn7dS3v2nGvXK42gTzShA1QWKyZWwwxpO6nij1VIE81YbeXQ3+xXT0L3ZZ2WdAYhEQ/059+1vsWOtZtcoesGyKflGuJJsHMGZ7AJ2QI6IWSATWv3atnVdE5/V2+ujRABQwZ9AiCUZNl7ie6aLK/PToWAGQHdq4KQ1Wg9//Yhr99K7EspeeB6XgUAVHj+QNmXtA/+VXZNlOth3HrgLmOb1n7Jk6j1GM9V9xJSesjT/3rAEbAMpbNL+mYslHsznwpDzK+wp5DNoYKY+hWzanoRtvDm0nEwieK19DyULI5T16U+NYqCf6ptZ/5ZUYdx1SX1CaUdIoyQQQIM4J8aQ8eH4lfJ/U90tvEm46/ewzmHKHHYwOuAHfucEzMXbuF5Q6lpCg5Bum55S7d6fgRz+Fsp+ZNTw774FLar4Rgz6C8jhD36L1vfGXsZPjKm9+YJAh8UMUDOOO+wDTN2HDigB4U9KN93fl11jTBw4EmiEJmeho5THyrYc5Y4aVGEjA1uJbt6TFN20wBH1w5Uc/9Uk8+84UOAaPD8GS0RiYKfPNEWrz5qXukRFPuhQYnOlQjwvCZwFmyOpRpsu0luYtW5YH+OKyOX02QPNwwViNoys82tMYpcCzAjXP6/DQps0dgn8hHXkYweM6fy59YRklLHyjj3zhyta9dKk9klvlcaCDPy1XAS9RJsfLlaVdCzDqz5w4iTlGoEZENlIc1g1qfExRhK08Bn7oVga/0efic+JFBL8rgi9jlnniGBY+RMHQ75kTJzJeFx6aFFOWK8lzDE+DlLePSLY2Go42U1dv8ZZn9uQJA8Qma43g5M2ID2WskAApl0AWSsObb0uL8XBTbuMIfnTXQ6gSlj0bdUslk3lfBH9SxCKFQ1yc2ZMnU1q+wrV7+dq9vGBVPLwWh4QJ8wPbF0zWjLJf5tlXrgpQPnqWHRSWaNYig8bxWgRfPE5zhsEf2fWAXerCEofRylitfW6ADN42QkxZQihSbi3q6oiiApgAdX2tigrgo1lzYjLDdQ8Ogpc0uLYK4Fyx4kwg0UnZyI9s2ZoWl94lcJzBH/7kA7jUYbcHxNwV1gEfC5Dxoew+EhW5hO/l6pRn7o1H4i9EYoTG6atRIqA/e/o0OWtdg0O2a6tvstUCsOfZkBBPijbcMfh96fBDXHkEH2qyb6cX8IuEkEcaJVjBpzp9VGuY7xAOeamJ0n98TVMIFNEXOZoew11ftK7+/lTrmVe81lbwpGoZPewG/PCW96ThDbdKyug43vEfeugTtvI2QF2aDgxdoEjZmAhe9nNCwr5O81pvT6KPaua7VtUGKwbQxa0w7MGCHUDKlKiYO3vsKC5908JMvRevKuQxavKkISHKrsqPKz+8sT34wwg+zWLDo5IURQ1PnRCwLj5y13meWvzrWXmJafGjAZ/Nd8bGuOygT+RJcWCubimVmlJNGooJd2Hj+1+QROq/6i2Zz7pcFhwWcFDyNODBF+8RqGwr/+DHcYeHxJoz7iA3MzpIahsb9EXdH/nFoBw/U8gueMu67BtvpPyRGUNQswO4mZJHs/cBng5KoTE10Swg8Ke/910NpYVXrTMn6SibaJn3LDfSkq3b0nDpJQplGPzBB+5vCV4O2okH86R+JviGjFDtj77xz3w0P4PnGA76pnYGPptv1LFVb/eXOPZS1LJoghQuDgqwf/r7BKMRvHBYvhzf++HFCG37h9Eyz+ERfGfQFjy+8T34iftxR4U7POoTM6jb9SrKDttcrFqJ7zRPn+gbm/n8DBYNOm4gCBctcByj8jToGtTS4QCzuLvid3JqwzfhiY3JQdmJGg890hGs/MitlbJH8AcYPM55DzZ0LQnOG34kuoXPMhg1npQS1HNqPpFFm4Sv068cB8dTiAJxhKy6HLf3AXT6fMeJx/6D2NYGrrs+zUO2/SrPMvWDGEvesx3Bb5ao0TMM/uMfw8ojeDoUAXkFwDb6dtAP8vKHpWtjvjdgBvPg9cc5/HH16ZPaSfoaOKKOA2nZiHl7GpQiha2RGl/Qk088nqYOHbRpvodfsg2voAFmmxNBccwV/MGdH7XgmfGMW+Zlr0q5E5gfsSuIr8gtvf2O/D0FfTyJL2TZLMFBjYeeqOPGJli8D4BS7I4GwAAJwADxNubY3z9qfX4s4g8grrjK+gQd2XZ7Gtm0Jc+TOYM3tgfu/3PoYuUtYGAFNWKBuKPubDjISUrynA1qK08/VBXk8de/9qq0cN1bac4afWzaHSXvEF1eFUoB8mr2PsAN+5AbpENechzVGHnurOO8vERb8f7ftbewS/CFxJJq8HhlfuB+rDwfaT0exwJf4LuDEmA+yFteso4NuQiBQoZMD35LQB/UeLm2K5YADCN0SNoSbjdCyPIcCj5OB0wb1d5Mo1/4XJodHzebvOtadfeH5wgeK2/XeQ/SEmkwtEfMcFuUXdoRBe86nfXr8xekiz+4I9/50afRL3w+dIhFOH44Je+JF/W4fQ8wwXaDrUqGZPvAYbyg1KnStXChOx2fZ7Dy//ux+xD8TP6ai7fsdtsOO6KGbSUNu6Rl3pwtnM8JMz+xakj8xR/8ECrAf4ZDX+iT7VEtATOm4kAnkuKxsI8EFBkSL4NU1pjx6JCefuZ7aezRL7UEzs74D3+QfvbRj/iGBzlWDI2QlnmOdTraV5z2igolBq/1l95zX+q/7M3ZPn2hT4bpDhvv/pcTwGGPSXH5nSB7EZxoWVnOcpXIk778lS+n49/69+wEmd6VK9OitVeYDOW4d4uSJ6ao4ZdsYtb+ZWouxZg53UyLcBt+6T0fyStPePpAXzpVkGyR8mAT9R782XvHNqbI+6ZRSLU/zztASDMiu+Yve++d+TJEoFNPP4UK+WI6e/iQByWrVJQNClabPf9CSI97tjD4pdiKFYk2BvBbITWW/djffdGCr8pHJgvbcriKzwXZc/vW/CMpWyEI+erI1NxUeIvWrUsrf+8DeUOiBi9FJx5/LL30lX9N00cOdwSp2hMeKVvPipVphK/L33EDEtzlg/jkhndw14PpzDPf96qSQpZwpopfmUbesMR7br+NKa/ORb+6ZFq+kGflhNc9KP8Vv/P+tKB0bgp0CpXwKqqClTH5s5+m5tSUT4WuVpCvsvte93qs9NVp0dXXpF4koNrO8O3RZz+Tzh5idRX2Ta6Kh0FFwHmUOiK1uwMTZ9y1PdtvQ6Ioxlh89Uk7tWpGO8kvgvPL8EOmPvxCdK42i9/4zOBefZq/C0abt3gY3z8sRgW1/vSlrD+JX4yO4QdYr+5+ujzcwv88/pUVTP75bVtKP5PLC1qWy3wlwe0LAEnLOG6VWbaL8dX2/De80RKbQS6AoYMTP/qfdPyb30jHcTrx67HWFeUauk3Ciu+8fEU1+HJ7rLXnt21mZXg7X4QhlknVorzLeHjnNrQ4DVzzNivpBWvWpjrK/FyNb3LO7H3eT5mnnsR7fjzVZTwYVNkTRHxU8Llwba6Dv7Xntm4S/Hn1qwIXmq+EyujBb4h7cS3nDVQXfu9H4/bb4VdPp6kj+IZ3bNSeO2irg795rOqLycMhnQbsiyedq/n3ArRkrWpS40ErGReuKL2z55fA04ZDysaftPCKYJfHgGwhlYya4xGU5FpCqcrzQY7ypGziKcdW8Z9u2Wvx7CC8940tAFwtf9ocwOfcJHGD5DLhJgx4EA6hlRB1W65DCTouG9lozi7jqaxwRV66pNakG5R2OZPto+f/e0GC1CrzhlJ8SFG0mHFO4GHeDGmMEuLnmqdMGdvkQ09zwmCfrSyffS8HHEkzYfKsjlKCujF0BK+N7GUaM8f7bWWQ4JbVABQ/17w5ZJbiQ8bDoMo3U+JKBipt+AHzi8pT/VwJwjXlCF+J7Q47WZhKUhQ1mUiEZbrMC6BKyzLCDCpc0Y741C8fFGJfTXzIGBZ40jLfghGyHEM17cYpUNuJKtgIhXgwEno7lWlRSnTiy2NVlJY5VgYdUoUEb85XFaNf1hcvSpFOfHlMsKg2ngs761d++WtPwIG7OSDDpJ0OwrsMIXHQYVHj2e1kLsxqjhSHnY9BtXOLmkZFvmWMnQucN99dh6+87mLs3FOsPbvxxuua9foOPFauR23oBbuvThhqO0cxrjHhXAiVLikbHdSYDVQqxALWGAQkO6e+gZQ+6rUjeCGzu9bVtdMWHlP/BzTGUv/qwBaoAAAAAElFTkSuQmCC\n","details":"This extension allows you to block posts based on the words you specify. If a post has the text you've written in the post itself or it's tags, it will be replaced by a warning, or won't be shown on your dashboard, depending on your settings."},{"name":"people_notifier","title":"Blog Tracker","version":"0.6.7","description":"Track people like tags","icon":"data:image/png;base64,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\n","details":"Blog Tracker lets you track blogs like you can track tags. Add them on your dashboard, and it will let you know how many new posts they've made the last time you've checked their blogs, or if they've changed their URLs.

      Please be aware that the more blogs you add, the longer it will take to track them all."},{"name":"bookmarker","title":"Bookmarker","version":"2.3.9","description":"Dashboard Time Machine","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAAHdbkFIAAAAAXNSR0IArs4c6QAADSdJREFUeAG9W0vIZEcVrpYWBt0MI4JoUNCVYCJEowtxETCgLkRRDAhuXGqSvSA4iYJZK74gEJKVr5WI26hBfI1KZkBXKgYTBHGYjWH+f/rh+b5zvlN1697bf/c/83cN01V16pzvPKvq3u6ZxeNf+9W2bLelLBblm1/5cFF74usvcrg8PTnhIpm0av3pyal9bsvy9PS0XyMbBW20PLl9Uhb2x/RwQR8nPcJCK9Enwult04XVIUCR6sVHP/fM1prLmScyaGFj0GlDInB9ax5jEDKMg43bGGDJ6GS0OMDfcbtzeodED9R4vZxYAGH70v0dcwj5bAT4O9XuBN3jYBzQh5bxshjAXbPBsokFW4H7yRESiy9efcHrARhk2JZvX32YQlMfX3ryF04Gogm4EzbmlKj8mJIl7dSqA6YgTWGiORlozBDHs/JeBFjuLaDIHhagPhkMACBISIh741ox3tWUlpCvABGFTMdqtSmf/MLzBr4t73jb5fKdb3yKuF4ivkOwUxYf+ez3fLd0seu3UZ2D0ewMs+kCoIECpr45OhLma3JX/Iv2XIDw1cceKlcuX+pxOMdZofSJYblerWxs6LRM+rQ87NfrtRMihZBZrtebEMYaDMTf6bZeBQB5qNEAzAL6hTkg5+ULrW2qEMxmwbrB2ylfWl7aCBdWEYMsY/o340IoUxlnDNwbCO0O4mouBjKnieakCYoBLYDJfQwotSuITbykdLkyIrDQILtDnkEknzHRAJssNwaQjQjzECok7URosywAAEKqdod79gfXyk9+foOTp7/8sXL/u99SkDFtKnHX28XzyGPK4QxWqqJn2CLNvGAMfrm6Y3tBQXDlqSWmzdwjHwZzebneDGNA7QHInQf0kKOExtHbXkApn+8sAODCzvktwNCgfao99cQHZ8+IKX7RHnvqlxwqXr4FhnpYBlKchogQSLs3iNSNe5VYB5cWIO8sIxVlJHiMNEIYs0xRhnvXwh2KWF0UsGsp9ycIvQUSmELfg6aNky6zmhpB0xdbOYPP1ZHDvWENxq4hnQNDF+IW32rAroQsv6Ehu8D3WeN1Q8ZWZSs5l4LOjjnxFmpqvF7jwqyZ7QLBhHSnqVS5BbJjVBtT2iZoukSHqJURdBbhuDor092M/Lqs1S+sugtgwB410AoIZJ/e6wsVphj0UnvWQC+273wVNZD6ta1jVyHFkzWgu0qKXvzdP8oLv/5b+fvLN0U6s3/0Ew/Yc1Bz0UxIIC6LRx79/vasGqjrjqJqFqZSJL596eBbbjY4B4ZNgGYfF1KhUhnbQ3wZMW2bji9TEGpUEzCYD3YCyIVQrHka0gMknxxwzcKr1CFdhkOc97lClwuSHHnkhEoOV2c8HuFWQWko9f0ApIx1rnPQv0sPV6dnN2/dLl/91u+5KEOmOJdbqwE50J94MnhK8BAadKClnhAGfhRhqJLG2Ke2PYL18A7KssDzNh3qQcqXG/vAOyPattsQi0VvM9n2/NhWAyQRhsgvoFsKrNblaOoLg3IuhMN6YHtT74pqsds23JrbveeHqZnhNp2beORWEUKXNzcEEeYDSdqnSMT+HpfNjLIZslKvWpAhZholYA9rQNUvQ+p2TMqMinkyJBUBHWQZelmGk7DdhgqAGDWfV7N7ZRM1oCJPbgHbum1D2OqeKkNiFJ/mB/XmpRzJvgPAkW0G4Mp0Vbk9IkR3cw5Al3KvFEuPSgxFabug5rkd09i6xOmhHzoBq1wANvueKVCOqr46qsKHjYCgGlCKMwKxCzBnBNJzJV36NT9Md3IrBX1qE9YGw+8o2hXANOlJ1H0HbRHqRAxL8jkD5wC8T0LkZpySfbUO+TICIodDbYB5G1aCjzSX3Hn7kQECikjDnkEN9Irr0SnJ/XtidR5nrQUM8O07mo22ZaLLkEUA5MKBA0VAMCpGweBRII5iVZ9UOwueFM7dDFwGCEOG1O0IA0gdKtazUxanEA7sFXIpzggkAdsQW6QhUIfsuYsAAEfvhrpddTAlLGrAwxQacxuGqzIkpuhu/PXf5bvP/6b885VbScWl8umPv6d8/jMPluXydaRDtEbArzm9LwgW61EDTuoZpOG5H10rP/zpdU1HPVL1459d518svvPtV8rDH3rXuAYitzIAkajflUJSSYqUaBu2AmCTZz2/5gpx8kHImvB85p9+EKkG2pVGQMuyT2y67RI4GLG90JIeAv2uwLp/SSWTg1GdPFBqBKz17CNEddc4YD6E9iEMQTw1LykkALka+18eyxAdC5rLsK3eH1KRANNEDlJOwEaNXTBk1LbUI1ryC1chlkWKoAwQXE+Peb4v2NxfTKI60yOdRFIgxR1fvlX2BoUB6XHgtIrBsrBt70XYAcsBq3cOe8c2+UTjnL3h4lcAxC8++Yf0d7dhiEoykZxQybGgrqsBVX8WbQgqInIQfAv7Tl9qRM8ecliU4lyIgdbQP/n4B871m0KPuc+8/e5hH/5dPDyJdYD1jIyYRSkjh92AetOusDFfHaIGe/mLnNMm2ZL6u5R107Rd/OYH94BKBqAYDxzGlyuNw3RKAOixZj2Ps4v0uMFGxfFQb/RzOWyp9oYQBNA6fvhqAYATzoGAYd+gR8OpQUzwWOvxjQImrHD9eB/2rKcf3mm/a4YbSISOBMzcNrff/TcOn9qSHUIbc0ACore9g0oBXlegQA43nBoeIwqmK7cAk+DKZYJ6d74mSLajR4NvS4QjEjzKMCOFJAvRJJzmBIxVFcfwu9VRn2tkXLvqY08XwhA89AVG+zr8jmchp8hR9WAbjgHUnBE2ZTGAfOSWFdBmQGP01jzTCoMRVAzo0Yxv8P2cU9tPdxhQaLjIrV7YY96W1DFjAF34Uov2YAvbH9pj2cIoD3FkT0EBA8Y8M5wf2fVrEItTjcIWLvTWtHfUA8ArACYdNwQ4vN03791A2GO2wnG1qXFD84fhcFAy2esKjN8ZMpriB5AUNjpT/qIGpgtZ5vuQ6dd7kRljGlXnNsQUdnn+PDCy18iw3X+mCOMB2j4HkDciDf6MbETQ/TdDjuk8DTFTLCm9fnzpL5rbK2bvGQtjkLm8BXCfwlG11pmzCgCh9f3WAAjoAns4gF/aYbdshLptnMjek2IfsM1d9uDUPELeXkYQyTkHENEKMHZYsaxRhdrjNHzx5RWrr3uqs+4PK9i8VoKVLO89YIO3MRcwmIiHR8zLCk71JTaMqIJxDPe3XgGmCu/ENX2yITIepogKRr4Tp394EuQjpVPgEJp6UHlrkIoxlC3Yk2T8WSCpJZgvsoNes4WZtGwpozq/0KOhLv3qDuN0PrbPARSWx53RY344j72ngIWCGfkO7p5OdQO0h4BouhXgNp5clBtYDVPdep/4NThnmqLbOAxWRRxoo3t3Duse0/1RmC4Zslxyl5F7tTqq1JYWX46LveuVWfX9ss3xEwIAW9CO7Z5PqQ967S9yo4RoHPnaS29UgEfQAds9BXBzUgFmpKF+gh+MR2u4AfQc4DZCtQegtfcsg+ILkcoG57XzFdkaEHe8BgAK9UhaMY4wMhP0NjiMu2xVgmpQ3CrZXpPFCsiXCStkiNZjYygwOmUDZ2jEEQIAG03pqGLNetguf2BJddX9am8FjO0MAJjfC3CQV13UvCtwZQRjdEyFBxgLfYjBtrP957//K3+8/kq59tK/ykt/eZU3Cv6V+0Pvva+874H7ypvf9Mad8lrUN0KDez3crQkUt3oEqK1w+6cKeq0ECxxu+6mxx0BxRfSGNQOZm7deo4N/MCf/fOPV8tpt/w9ZzukbCXxRbuW3f3qZf2m/mGz50qXXlwfvfyuD834L0JXLb6AYtHsFBESYI1H0U02v8h4EyNof/Ee1KeZJWn/KnKMCBri9xbBEtAHjzOQe2NM9CvshogedkdqoEJa+LfZ7sOcfnxm4tnRQGXfnAH23ICiDo3h0AReW7CW/8aBn6wA6dbR/8CA0tQWENddLZkohf7UzI/TrndtvBoaFo3eLUCIH+gDTYbv+0uF4Tm9/8yK2Igg8gWEYY/VY9lsAobHWK6z16OtTEVQWIM8T1tDRoxHPxgoSePUGh3WN69scqMMmWVLNAeZXjtgM31Ar571+Og9TWn7YEwTYM6gAAOCHvHQgxu2hAWGt22DwdqX3BPRoPZ6w88dCBqTJKIJnNDkN+VZfL08lzYdk0bPB8R0BAA9/niWTTagYTjU1omiB2Q98owQ+vlGhDkUYco18vwXALJrjgRA0Erp1ooPFmNAYHAtuOmh0jMNeYWvLUSZENRYP5ybqhyD2kjVGML5kwByBUFRzPWiY65kB/WRDoLCEnp1nVxXkvzwZLfTTGe7rEEjhwNcV7gXmuKJBgcxQn+l3PJpja4luuvj/2dIgRbJxaFAN3Tr06GUI+qkgesx7g5RJ9RBoH2QsouFUetCAELFiTuAHR9MJx3v/8gTb3Ofw234ZQiY9pMq29tBZFcDgsCwd0D+HNjbWjIbn0ScZgGk8Z2+vEHw6p7CG8f8B/kkFRRyRjpYAAAAASUVORK5CYII=\n","details":"The Bookmarker extension allows you to bookmark posts and get back to them whenever you want to. Just click on the Bookmark icon on posts and the post will be added to your Bookmark List on your sidebar."},{"name":"disable_search","title":"Classic Search","version":"2.0.2","description":"Get the old search back","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NTY1ODZDMDM4QzQxMUUzQTFDQUFDOThEMTlDRUY3OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NTY1ODZCRjM4QzQxMUUzQTFDQUFDOThEMTlDRUY3OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZCN0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MHc+egAAA7NJREFUeNpi/BrKQFPAxMAwagF+wEJYCTcDs7wDhPn34QGGr6RawIhbzj6ZxSuPSUEPWfDfg0t/tk36c3AukRYwfo3AFnByhmxZC5nkdXFp+/fw8q9p8f8enSfCgkhM0004avcwcPMT0Pr1449ml3+PzhCyIAqVz8XB0XaTUVQOGujXjvzZMeXv2ZUQLrOmO0tQDbOWDdyO7wUS/7/9wJuKmBmQEWtQH9z0X0uqfnbY/n9yjjWkgy1jGZD8/+4eUOTXrCxY/POzxs5FMwENMX6NQ3I+pzDnjDcQ9p9Dy3/NjWJxq2KLbkV20a/ZOX+OTGUN6GQNLIOI/CjW/PfmBm4fMDHAEbMJLEK+ffq9opBJ3gZi+u8NPT87fP/smgVks6VOYeQW/7O7D6gGaoRxMLIhaIiFkRE5eqHJ5s+57Qw/XrLYNoOi4fzOP5tKQSnn1hYGbgFGERlGMc3/jw4A1bDYhIMiRsPm7x7caZ2RiRURRPB0+e4pUJxRXgdkwc3jcDV/5sdAVQJF3j2FxwSyIRgZjYkDORHBaCawOJjLxAhXwyhrzsAlwPDm4f+3N0Bq4LpQDEGPAxY4+v/4OswgLTAXFHXMhh5wBewl69mLVzPKGYK4wjJQM75/QjYEDQExwnf/nkETA7OB228eyb8H5rA4JzCrmjNkrfp7YTezZRADJw/D9y//7h5h4JFkMXCH5pU7pxhwBxEw6bDD0b8rOxm+f4ZIsMZN/P/h0e8lVUATmfVc2OI6QTZ9//JrcQXDz88sIc0MXLwQlf8v70Y2BA2BPQIHPz/9ObCYxROUj4CG/o+Z9GdZ0b+7J5hULBmFpP//+Pzv0s7/7x6weFWwWARBo/3khv8fHqMYglZUfC9URxHg4GfLWsQkAxX89+Tm38NL/17eyfDjI1AKaBOzXQyziglC/ffPP6cm/n92BbcFxdroQpLa7FlzQcFNJPj+5ee05P/PrxJORdC09PLmjw6vv3fP4zcUwebkATqIUVofaypi/F5ugjMBKJkxW4cza9shC/69eujf9UN/r+5nS53BJKWK4o/ZWf+fXUcPjx9VloQDQVCKUUDy/48vDM9vIjmcjzVpCpOUCoodc3NR1IAsqLUlv0bn4GVNnMQkqYwQ+fH1Z5snWj5gIR/9/v57UfG/53cRAXjjKJoaJjy5nCj069vvJWX/X9wDmX5xz5/NPeiR/KPViwqtH3YeRgnl/w8vYitNmVmpYMGfn/+fXMNqFDikaNuyY2SmsQUsbDS1ACDAAHFXUgQGOTnxAAAAAElFTkSuQmCC","details":"This is a very simple extension that simply redirects your search requests to the old Tumblr tag search pages. Note that features of the new search page, such as multiple tag search will not work when this extension is enabled."},{"name":"cleanfeed","title":"CleanFeed","version":"1.5.5","description":"Browse safely in public","icon":"data:image/png;base64,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\n","details":"This extension, when enabled, hides photo posts until you hover over them. Useful to browse Tumblr in a workspace or in public, and not worry about NSFW stuff appearing. You can also set it to hide avatars and not show non-text posts at all. To activate or disable it, click on the CleanFeed button on your sidebar. It will remember it's on/off setting."},{"name":"convert_links","title":"Convert Links","version":"0.1 REV B","description":"Clickable links on asks","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjU2ODI1RTIyNjE2MTFFM0E4QURBMkY5NDVFMjREMzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjU2ODI1RTMyNjE2MTFFM0E4QURBMkY5NDVFMjREMzgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRjA2RjY3RjI2MTAxMUUzQThBREEyRjk0NUUyNEQzOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozRjA2RjY4MDI2MTAxMUUzQThBREEyRjk0NUUyNEQzOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvM31wIAAAcQSURBVHjadFZrbBVFFJ7Z3QItpaX3llZelkcARatERA0kaGIUjZFojEYUjSaAItFoiD80GjE+MISE+KPGJ6DBRCEqMYjxBSJEoNCW8iyGtkjf5ba99/a+yu7MeL4z22sjuLe73Z05c8533keuWPex57iOIxwpyyPjJpVHhSOEMJJuIYUxht6N0PSp8aW1xpNvZQKjpaIVjWXa10rRAXo1ICMOwvGkA+64XCkdCUnCdaTBB+1JXpQkTzpEr4kAf5IIgEkK7AtsCdDwDwjtkhF8mA+xKMsRNC6O4hQdNywFl+tKPkz8CYMwBIeItSNcejEALKG31FaYpi1XOp4rCbJUkk8yXGDEzWLoaWVJyAIkw2JcGQInMVpiRzA4WnSFNAwEgKEHVCjAF5vfsXAdtgsL5G8RvrAscpuBAUJXQRUDXiQbvJmcZRj6MQxj8owsWn5jMvyX9mlJXGOBWNcwL3iEoZJYeAhhAOGehDpWe+wyb0gQFgYrTHcum+3quJBMxFPJpFcwKjqhcuKUKsYkECzEn4JIMBopFAvhZe0xBnDxXNaPlbFCLFVPd+fpxvpoJLJ44c1VUyZXTZ2cHEwdPFK/+9c9pMqc6pvHFBbBneCitbD2Io3CQJfPv7vVcykGECDRknETJ5TaMBIc+w0H/5g7e8YzTy0Tw9fQJT+dG4qUFNN7X//A2xtrCorLJkyaogKcoDTgZFAENtBg4Rm2n7WEdZj9T7+GQwdeevbJaVdP7Y7FDx1v9grcY42Nvd2d02dec+TPfaueevSORbdteve1zdt2NLW1RyqmUoLhKPtAs7e1Y0iDLcgBl8wvy8vGTaooFeyuns72h+5eNHN6VTqT3f7zYaAxxsn2zb9hblN7/NF7F4oRV82n21JmLCWvIgHQgnQhBchwMBc9RQDrGTge9QBZPn6MQ9zp8OhRo5D0iAm97KGl86rnDiRTO/cciQ+m8wLWrFh+vOEQqw7kzEWyFYRc885mDhbHK5DRUvLBePrKpTOrH7vXHj7WdL7uTCtEAwmKjNKi6USdHsrWbHwzL+P8hfYvdx8GFbFVGgWKVskHRE2Z6bjkGVehSkGpbDqeP1l35jyU4kKgWdFcNr3sgbsXLrgJcMOgFtOunnKx97vyiqs4Ok3oUuJM0lAZla2QsITSwQ1zZuQFDCYTvGNTg6hErKOVuIe1Y8S1oHo255YQKowUwCXH2AIM1VkKOac8UpI/lkvE4DWljxz4/fjRWtJi1RMPiytdldHxhsu6kiEcejiBIreTzYxPEmAjhHBp6b8Cli5ZnIjFSOpbr7yw5ulH9v/24/SqqVcUECkrMcMxzoUAMe8QWyQIN47AV2gVygymMvljc+fMCjJ9yUT/xMqK66+d/dWn74v/uRKpHELHllqJrCOXkYkQuEGgfaWSqbQfIJqTWTXy5KsvrU70XFi28sVNW3eJ/7/6kjmq2sYm63C5casXLYHjWC3CP+T748YWxhKpBdfNzJ8kZ955+8IH77vrk8821zacuGX+vB/21x892dwXHywo8EqKiyzZjp8PCm6pNp8NFyaPMg5tgEq2klrLvoFUMpUdWzgmkx0qKhw9EqDrultqNvh+sHbj5zoATp+sGYiCXG/NhtfrT7cKjsaQuzBkj97YgAc7cSw53MsCI8l0uVyw7oMdG9Yuv9wOmVyuN5agaqYF0qnl1OHGPd/S+vd7a4UyocZCdMcGzv3dRQIdIgropkgK4BRtQ8ro9p7+rTv3XS6g92Jfy+k6okv0drWcDLmvq9lum5mV0NLefa61A5MGOVlxdBIi4hrgg5xuA1f9uL/+w69/+o+AWTOqdm7Z1Hzi4J23Xtu4F9xXvvEBSpxGlSCoZ5vb2rtiRtiOKeT9z61HQ3bDrs6N2A4gAtMCd9INLz8+fXLl5drsrzuz/qNvZk2bWFpcRNx83z/1V9tgJmu4pEjMRtQPCDb1MuXySEMe4A4HYRq1ityvxdr3vqCVexbfOHlCtKy0uLtvoD8++O0vtRSSozxZMhbc09lcU0tHJpML3WDCkuqRt2QAfjxgWC0UU0iMIvRhNDc4s2vvUQoznLNlFaGio2VR2o0n0mdbOy75PpdEw92GUhdJ4RnfaAxPAQmiWQTRi2louGurfKvj8LOq2yERFVBWRMZ39Qyc7+xFt1QKHHgD8iV86SnCa8ARLAPNzVPxgMSl2OalYVTCTqlYQdUSMlJS1NYd677YjzrJIcQF09ZeQxlGoDxKGSMDDGWOgos1+Bqqh7SLEZWp2StWA4OyJeycEk9ng/4kBmBjJ12QEGoac7XNYzKR4g6juPePGFg0hjtFrLQIU5Njwto4nNyEuuQHZERtR3AbcZijNaNGjAjpcezSUEQJjMh1bDRRDCnmE/YsPTxuSBMO9ZrKu7AeEcNrYc8Lu5Ptav8IMAA60MnT5iy5WQAAAABJRU5ErkJggg==","details":"This extension allows you to turn the 'encrypted' links that people can send you using asks to clickable ones."},{"name":"disable_gifs","title":"Disable Gifs","version":"1.0.0","description":"Stops GIFs on dashboard","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNEVGRjI5NzNBQkYxMUUzOEU0MkZBNUQ5QjU5M0FBOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNEVGRjI5NjNBQkYxMUUzOEU0MkZBNUQ5QjU5M0FBOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZCN0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Uek0cwAAAPtJREFUeNpi/L6agaaAiYFh1IIBtoCFgXHUB+RYwBH4nxjNP9Yz0tgHjMT4AI8DN+A0gCPgPzXigJEaPmDErQiP1M9NjPgVkOYDdl+iAuTnZkZqBxER6kmw4OdWnErZvf/jsoAJJIqJ4BZg4wKNYxRwwqceCTGBCgtMBHGX138gQpQmSLJs1nsZBdzQ1GM1Cq8P0AIKVZbNaicxPsAeBz93MWK3AAn8OZ+O0ylkFhVIKv9cyPj7ZhZxFjCxEl20Q1X+3MuGzMVUgOYDASLNZ3f+RciLAliLCm5qFf1YjWL8eUCD1hUOK60tYKe1BWyjFhCo0ZhYhnYkAwQYAB9LJMlalcSTAAAAAElFTkSuQmCC","details":"This is a very early preview version of an extension that allows you to stop the GIFs from playing on your dashboard. If you still would like to view them, you can click on the Play button on the post. Please note that for now, this extension can't stop GIFs added to text posts."},{"name":"dont_stretch_photosets","title":"Don't stretch photosets","version":"1.0.1","description":"Don't allow images in photosets to be stretched past their “natural” length.","icon":"data:image/png;base64,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\n"},{"name":"drafts_plus","title":"Drafts+","version":"0.2.7","description":"Enhancements for Drafts page","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExOEE2REFBMEI0RDEyNThDRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2MjRFNUEwRTExOTYxMUUzODA1QkYzQThDQUE5QTlCQiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2MjRFNUEwRDExOTYxMUUzODA1QkYzQThDQUE5QTlCQiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY3N0YxMTc0MDcyMDY4MTE4QTZEQUEwQjREMTI1OENFIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4QTZEQUEwQjREMTI1OENFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LRi/0QAAAxRJREFUeNqcls1qFEEQx6tnZmc/xllnRrKJqEGJoqIJgooHwRcQBQ968AEEX0AQ8RQ1eNC7r+HFa0B9Cj0oQi5Cvtysm53+sKfno7une3azFsPQmXR+VfXvquog8g6AQmZILPiblevcGEhD+hcEmlEwzSug6q//g25D852McQcVHRm7GTTa0egkc1DbQRvQavhmxsxCp+Lx5AFMoU8XiukfSzoPn9A8A9ScqaqGIxBMyYPpLsWPKp1oZ2DGjow8mP7dOLYavczAWl7P61/whi0/5W9NOqY87SkVaVj3BZJcOpvOF87silQspSzzYcs4p2s+WJ7BTOlNHy/rO3IiFcR8zRcYsseZi271wYl5yRMkHqdAY6GSZ6c3uMGv662R0zm0Eh0TwGlB1x3Mopt1dbgu6YXoE4nmT0pqGZiNOtWoI480I07EWqFjrZPBGNSzTKWTiUTLDHDVyTndOWrsavFgHZ3S7Bg4mmdwEF/16vS5HKRFXRZ0UshSvAH2Lz5x5CCb15iiOCdi8abSx97yo/biBUdGPVf4YmcReIVWjvcgvkauPI6iyJGDd0565gAJOpX0VKg0bkej68+iOInj2LFfBnQ2PTsDo+r52R62/P0br8ITi0mS9Ho9RN4q+iCLg2wMVK00KdsVip5KS3GyBYFfe+Df+xAurSwsLHB9Wq2WU0xdZm9gO53W6VjQv2/D04/QP3l+MBhwuudlJYrIRuP1JEdYPt8nypgsHaRldX76Bu+/ooOJVHBra0v8X2TeiDY6L3mTnhfozl9Y34TPP+wTRh92TL+eqBxkxUnWpCfw5Se82US/R40lWErEtMuP1OjVBFYc/Akv7Z19CKdu9ft9rvja2pqqjC2DGp1pdNmxFLaT27vLD5zB5WNBwOlBEHS73aYMPDV8Vt6rlT6cWN3gIx/thHf3l++78ZnjQRCGIS/zTqfDqwUh1OzAoFd3E1+MXNjt3NmJbo6TVQgG7XY76XZ5yBzt+76KrilTlyinjx0YuqeH/srYjYbBuWF/FfeW2sLCToe/fWGc67rulKhV+yfAAHmTz1TEQ6ZcAAAAAElFTkSuQmCC"},{"name":"editable_reblogs","title":"Editable Reblogs","version":"3.3.14","description":"Restores ability to edit previous reblogs of a post","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAA4VBMVEUAAAAAAQEBAgICBAQCBQYDBggEBwkHDRAHDhIIEBQIEBUJEhYKFhALFRoLFRsMGRUNGSAPIRgQHycYLzsYNScbNkMcNkQcN0UdOEYdOEceOkgfPUwfPU0gPk0gPk4gP08hQFAiQlMjTTgjTTkkTjktV20tWG4yYXoyYns4bIg7co9Bfp9Bj2lEhKZFhqdFh6lFh6pHiq1JjrJJj7NMlLpNlbtNlrtNlrxNl7pNl7tNmLpOmLlQpKpQpalRpqZRpqdRp6VSqaNSsoNTr5tTsJpTsZhTsZlUspdUsphWu4lWvIqrAtY3AAABFklEQVR42qXQa1OCQBiG4cdKOtn5bEmaZklaZi5v27kgi/3/PygY9l1g02Gm7m/wXMPsAippCpBlYCJLgGIxE6hPWQTfyooFA/W7txIQ+DZ4pCzeC4DyIJRkg/c80Ltodg14sf/ka7yfotLV4Inonmi0Pw9ua0DjPaBynoJ4/yI6gGn3Q7R6iWhoICeKqIqhuUbkLjmxaIgU+KGKAaD3BxV1Vr2Vhd5YpGfwA5UEKF3UrnnrQIuv+awYmL0f78n3p34hOqv1N3jXZwjyZ3AXvTXAFdcZIBlm4AZzy8l+u8kgFQZcAMlO22CQCgOOATQFPxpA5s3OyeWQaAbg/giqGOT2Kzg2qKNY3QajQwdZztEdg5L+D34AmZvHFbsM2NwAAAAASUVORK5CYII=\n"},{"name":"shuffle_queue","title":"Enhanced Queue","version":"2.2.1","description":"Additions to the Queue page.","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2Q0Y3QkY5NTgyMDYxMUUzQjI4QzgxNzhBMDBERDcwMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2Q0Y3QkY5NDgyMDYxMUUzQjI4QzgxNzhBMDBERDcwMCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTE4QkRBRjU5ODYxRUUyRjREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","details":"Go to your queue and click on the Shuffle button on the sidebar to shuffle the posts. Note that only the posts you see will be shuffled. If you have more than 15 posts on your queue, scroll down and load more posts in order to shuffle them too. Or click on Shrink Posts button to quickly rearrange them."},{"name":"find_blogs","title":"Find Blogs","version":"1.2.4","description":"Lets you find similar blogs","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1QTExQUI5RjU3ODQxMUUzODM5QzhFMjcwMUMyMERGNiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1QTExQUI5RTU3ODQxMUUzODM5QzhFMjcwMUMyMERGNiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","details":"Requires User Menus+ to be installed."},{"name":"find_inactives","title":"Find Inactives","version":"0.4.3","description":"Find the inactive blogs you follow","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3MzI5Rjk5RDVENDQxMUUzOTc0NUVFMzYyMTQ1MzcwNSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3MzI5Rjk5QzVENDQxMUUzOTc0NUVFMzYyMTQ1MzcwNSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","details":"This extension lets you find blogs that haven't been updated in a certain amount of time. Just go to list of blogs you follow, then click on "Find Inactive Blogs" button below your Crushes to get started."},{"name":"fresh_prince","title":"Fresh Prince","version":"0.1.1","description":"Everything's flipped, turned upside down","icon":"data:image/png;base64,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\n","details":"This extension flips everything on the dashboard. Don't expect Tumblr to function correctly whatsoever while this extension is installed."},{"name":"glowing_follow","title":"Glowing Follow","version":"1.0.7","description":"Glowing plusses on non-mutual followers' blogs","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkYzMjcwQUNDRTk3MTFFMjlGRjNBNzgwQUUxNTkwRDkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkYzMjcwQURDRTk3MTFFMjlGRjNBNzgwQUUxNTkwRDkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCRjMyNzBBQUNFOTcxMUUyOUZGM0E3ODBBRTE1OTBEOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCRjMyNzBBQkNFOTcxMUUyOUZGM0E3ODBBRTE1OTBEOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Plmir2wAAAOiSURBVHjapJZZkuowDEUhmLEZ9gXLoBfTBSugeh3sjHnsk5yUKi+kq14X+oDYlq+ka1ly++vr63A4dDqdXq/Xbrfv9/t+v+/3+wxbrdbtdjufz8PhMKXE6uVyccjS4/E4nU7X6xVlh+A8n8/BYPAsRNjkH0pMVdFVAnE0GnW7XW2DMplM+OYDaBRYBZ0lDDPENkt8HI9HfGJj7pdwLIjOrEP2sJ9VPCAUJqfTKfp84DsfHx8ffLPEUGM6EehMJiIywCo6IhWgo8o2dGazWZZlhsUH6MyDzpBVlBmG7zrNfBIOdLEkij1swJiIonsMMMMHoQDNt6Hoew3dQJOHg+8syCaznmqgA7dcLlv/yvf3N1GiAzqWxGEYHGAM2xmz+i46s5CGErwzg954PJbGV2EXZ44muBhjF462C2HIL8OsV4iJEbyLzgzokbI1YZ7IUiEmK36ILm+mbxmReQa6XJmU+s6M9mqC7xhmO5qosTfP+sIYAWksj1IePFU2sCZXeKc9toHyagAIeSedIpf4xQZbTLx8iFKg6yna5Ez4znzjGXQKAR0FTs6c0UUvDbCAJ5iJU5WZV3SDrQn7zQ7QGcIM6SSuq1695Bnqu8wEOlZFN1lrgqfmD9GDLp9e6bjYhJKsM54z6J+fn63/k/l83ji/Xq+951jN70GUKota620BlGhkFeQMOyYoZhu5/qsElCUng68g2vN5XyyxoIGcmYKWT6J5Hx3HwRG9PAMrOAYab+xf5VwIxwksxpJZ5dUnrs1mA4MkLkOT1au/WCxqQNvtVn9xlo24CA5l35rKjFc4v2h82T0Yo2QbQI8Zu+lvkVnbA/1QCLTcCgE57wcmqKUD+7YBNjCDNvVOe7+hEx9qVXRmXCqbmO3eY2AZOEyKboGyQzRyjZuoobDb7US/F4IN0cuWKbopzJrbLCEeT2N2yYzowBmTfdQmZnLm5Vp0EH0T2HXR8CViFXs1cCpEZrQnM9ZUkzM3wDJfQDwKwZik67Xp3NjR0DRnwneUDd3+aAPO+4G+26at8gztqzZCiapJnKroKAczVV/LQw70eBPArL3aPF6tVnzHI0q4yBnfLzZhqS/REbQl1PZi6fc96YPOhPF5Er3FR4O8wwzz8bStopdZJHr1TWe+atsKCDrzHiYGWBXdUKzzVWYAFC0FeuRG9bUqqOkbWQgV9ltP1fdgPFLDd31NVWa8a1LpMiigs9PyAjrH4F0xKePFJhM1dMB/BBgAm4e/rS3FFMoAAAAASUVORK5CYII=","details":"Makes the Follow button on people's blogs glow if they are following you and you are not following them. Before proceeding, please keep in mind that sometimes, ignorance is bliss."},{"name":"go_to_dash","title":"Go-To-Dash","version":"1.3.5","description":"View a post from a blog on your dashboard or sidebar.","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REE1QTk4RUYzODVBMTFFM0ExQ0FBQzk4RDE5Q0VGNzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REE1QTk4RjAzODVBMTFFM0ExQ0FBQzk4RDE5Q0VGNzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpEQTVBOThFRDM4NUExMUUzQTFDQUFDOThEMTlDRUY3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEQTVBOThFRTM4NUExMUUzQTFDQUFDOThEMTlDRUY3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pste0wkAAAT2SURBVHja7FZZbFRlFL77LLedtTOdLkJbullLaGmgIlDENI1oKtL6orESI4LGRJKiTwb7wBOJGhqNaQyoWFRiCA0mRDRGSTAa29IlLdbudJ0us+93Hc+dO8stTic+0Df/nIf7n//c7zv3bP9FR9qRLV0YgvxPkHkR/8kLClFZS1N7kQsvzz0EApREdI+1aosbdDtbSH2h8khkQ8zycGD6V//oN6HFe4i4OcjombRqRGWxmva/b9x3CsUyOcF5Fpx3LnjvfsQHNiN4Jw26OndHfmu3pmhfXBONCiEnszbGeRYxUk3oCilLGa4xJE5Fd++l9VsnuUDaEP0rzZSeyH/ha832+qSP7r5LkaV+1jHMuhdxEiF0xSpbPV3elF35LJFlRVDMWP86WK79cJIPP4iGv3UAQdGUQDxyj3ZnVx6RXQsv9Nmvn/AOXmEdk0LIh0SRKI8IQQ+zOhqavMG6lihTKaGzga2msE4IMeH535RoEiAEJCUYklVxzFD7Uhx9rnf5Wlto/o+kgdr2qGl/O66RnkUe8Y18a+85EVkakp01Pf4GXfLkBkAgQIEiIeC+pbFDtuYDa/aeV1jnRPyUQLIrmx9pu2nc8ypGUclXIvZ+550PRUYKP2naTpc/owSUMKUcJIQyV6nzd0ne86yn/zLjmpT14LK5oSPv+S7SXBwVeFxbChoiS4trpVP/2BXf6HXZLbrkkBIQhIAwJRdd1pzopKCn9wP5iDSUWBrPZ1c1o4RKKoGc0vxjX4pCBEUJjKLd/V94+i+E537X17yI4iRlKVcCSlWEKqpIZa2Si5JdHRfCDgiLtvio5XCHurA21dWqLPW2PamSs1YCAuedh2KjzCVQu7rq4/6/LqcnoIzb5PTywTXQ63a9bWk8i9M5mbodFhC4RjnnNBBIdZllU2Ju6ANMpZMbDcWk3EQFJjN6zFjOogrBsCTnBkyYBEmJrN6T38FpK2yDUz1LV19mVseQzJ+AEQRdgGtMCQWuxCQQVJMaLO778SlnKsKoApFzhWZvrgTXcw6egb6NzwWBFYIumB1ScEgN718HBMpSTeWUxdInCmG3EpNA8dQmYh+M97dar6t5zTvwicTqHFr/+SzjmDI98SZwc86ZtZ/e4wMrKE4hKC4E7YCg2bYXkg/GjH0kOHlNiQnNQCWFdf7NuaRBDxVpqDuOkgZZzweX3X92rnzfLgSdUaD0LvB+KJspzj0usj66tBWKWIYLLw0qAUHw00+bIeaySAXEMnTpU7GPyKZMZcGpW4kjCNhEeHFICKyxrglEZGS9ylpjbniXMhXBKxAc78BXvHc2CQiCnz6SK6UlLhjvW1Lbagl9PiSLMu9Q59WFZn6B0MoGQnidc45DdYElbNW2vdamcypbtey+b/g7/0i3Ai0m0507HxzXpsq8li5cK1dFFO4A79DVwPgNkfElbUhjhWF3G3yrHHpYgfEfHbfPKW3iRTXz8e40d3BOpe25ziRHVODgjhT8qxB9jKQJQyH0BwyG5GUHA9Vx+zznnkhTxrOf1qe950ljibH+lLb4oEIJt0E01oeKcSMKvtEez93PxYgrfZ/Mdh3Y9GeCpDVFh/TVLZS1It15NDzf5+67yDoydSJ6/7PDmX9ZUJzAtVZ1QR2RnYtBWKgsPrDO+1ciywNCcCU2lMVMBHMXm7b4xwsntpYg82/PQyGgtpTgHwEGAAr05bylXlXaAAAAAElFTkSuQmCC","details":"This extension adds a 'view' button on blogs that allows you to go back to that post on your dashboard. This feature only works on the blogs you follow, and may fail if the post dates to before you followed them."},{"name":"classic_header","title":"Header Options","version":"3.0.0","description":"Customize the header.","icon":"data:image/png;base64,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","details":"This extension adds your blogs on the top of the page, so you can easily switch between blogs. The blog limit on the header is five, but you can limit this to three blogs and turn off the blog title bubble from the settings."},{"name":"hideavatars","title":"Hide Avatars","version":"1.0.0","description":"Hides avatars on a per-url basis","icon":"data:image/png;base64,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\n"},{"name":"highlighter","title":"Highlighter","version":"0.1.6","description":"Don't miss things","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAADZ1JREFUeAHNW8/LnFcVvvPlCy4UCy6qKWjBlZtSitlIsWQhgrgSt7r1P2gVpC4UW7Bbf6BuLBgXLiqxUNSKtEqxagpK0rQB01bE/KpW28Sm7dfO+DzPOc+9970zk5mkki83nfece+758Zxzz3vfdybprORYXPz1Jxfz+b1lNju8WCwOhXgGssCH9EYMxyLluHr8BbDN8Ic0tIOnbNWYzcq5spgdn+2Uh2a3fup3YYPr4vzjX4WLb8ARPWyfr3Uj/nLMAf8CegBRSDnMk241xniD/yUfa/RRgPlsUe6ffejTD8y084v5EwC1I2RGteSt9ULi37A/cGBf6zIcKzLGHO1H/XF9sEcnAwL2lHYYfb0gns92DhzZXczfuRfrO9U2lWM+LWG0VrSd1y2r9j2juLhEfLXqUssu5gDmFpjGW8yZAMxBOZTMHPoUcsBWaYlS0KcYM26qvROI8Spn3PK7EPKep7UWfV+lAMtYczyCVUUZGOLkKyBJu4ttq3+udYDQh/gPjiJ+WDbeeZrKVlhSx7Z1GsVclMQH4BvyObw7n88PeQdoGDuUDnQkEGRUIGK3BBa5e6QcYcv10FcLgq8FVsGw7oycqxNAoaKoKaAbsuFOfvuExCfGFj9y4LwVO/wt4SmzQ7sJVermM56AE2tNQC4rHoClgKBl3njv+LAuAL0/8fCX9kF7f/ArH+l/6Bh3T22gYZ0w6DPhJN/5R3V3nRxDOFbiiai5GQlhIFML7w4pB4GRqwAp7P2ZTyrdTkXeITQeJcR12w3+xg70Iy1o2NknTTl4Bqi1YtqCce7Apk03EGw8pDof8r+0JZA6a+kKXofH2CKecZgGwuYA7zHYZaQLymG+3nI1mP3NUACVMwR2FTP5mFx8PvgeV8tCOVqXFU4A9UyY5Be++u1zoKTRQbTxAk0a7/PBCa2MB/+1QOb7mJ0/+lYHtL1msNgFhh5bajwk+d4kgN0hGQcNrSMR++DcvAsYMl49rh6fm6XkakLQV310gRNjlxbUoc+OsD7EYmNZ+joE6yku5dhFQlqq8Ib1gOd9pIcoQnC4DofCCDDA9vGZAHE4QVKi95x3N9s9MnLnmNqWtI6OZ355C8SyA5lS2vMtsAFII4xxJZyA2K/XZVVf8LvliX8nmlRYoWvM9m3zMV6sN5QtcnIrFPQUqPcU4LtNaWLeLRuHHsLmmxl1jFm8soNsirghglz6ub7kf4if1Vxrb1/G4Hav+ehNcopXPgkWg3pxBrikdTUEbiVTGk12jIJuDB0eK9V3JK8apcx+TbWmIjRT+6RkU8GMzZQ2Pc/5ZACHCmAADNHfU9quuJFkt1RhlN4yKgxnIgQQRlayl07lYgcIsO7Y4I+22l36wFDnUbbmu4F9rU3aWOwPAOMQDP/0TFRBJTMfFnZsGgCRZTocE3btSDmYjGUxZ4UoDwouEpYjLtAQa37KYGofYTd97BJIHOgR0LEcnzYVK1hGnbwJcj0RiGU/UIl01RAYLFT81DNoySOBRSZARZ4y1WBAmNoVY2rDJuI7jikxteJpxgvGev1Yb1c8BXLXbRcopNHSX10AbqcAuMRU627aGXiCJZV7+FZRGUOCacepOEo3FUCUbNWHEfmEM9RP4m45jK2kgMMFazgDMCYlHZQcbRT3dmvsLTaVyeinX6yxMsMkVTw4sKnpsByR+sUVsYenwKDh6pFy0JllnLvcubzplF7aosF+yeFGA1bITohvOsVsOqyaeKkfL0LrEqRDaomClQNMqgPymGSV4/ZH23frlgmJddfFq4EcMOPL2JdVaylb8g8bYU5b4Wx4iX3FLdAH8GsmKUZkkzRETj7W07Zvu57ntzSCzG9rlXdBqsv2aEyRVwbKaYfXsSZ0mvD0zNPvAXiUpNtWrpDwECQXh6FXQyaTWIwFChjYu7BaIfF2oOH9P69dKc+9cLE8d+ZiOXXmQnn10hvlh1//PDxMAwQeP5vGVapD3xgUn5cWS99t4DMelWGfvwhZ28pBGZ4OgvZ8rI+vxnopyu/kMq3BU187sygvnf13OfXXC0j6ZSV+9uJroZ7XWz/wvuQ24YkkqvFk5wcXmC7nk+8BtQMZj1oZd5guFTje4Fq78pHYvxn2G/LI48+WZ079ozz/4svl9StvJbqrEPjaFJ/5OgY9GXrdsEGwpI91dIDD0IV5UlesUS7LeSynPjWtj1W8V/jLE9tRPOix35wqF1+5TOUtRxaWPrxDjO+k4EXYcS5FDnRrXigRPuL7ZUmmzkEo8hBc9xPS1XaU9vA/2QEXwjSwEoS0dd3uwoLiw3d+Gue7P6Xde1bGZoHSqwDRlJqBTZvg9bFAuF31GHQFo2K0Twfy5QTkEi4Eg5NMrFEJh0uNPcg3TgOCa5nqjp2Lw1NJhyRk7dAOvu9Iga75+SmQJTRYU0bt+fFHR6EyUClDW7uQVuYzoPS3viAN2E3PFCTEWyzxmq+nOuSWMcy4oRBAmhjJQT/eA/Ie3oSXcQMU3WMMGxICL4CqDlDKenBl++HKmtLSfNBw23eo+VwngVJ+FQm4SNJe6E+HoAoTuiqS8aZ9M9jQclWxRSDq6xpt91r9tEHw1vByx5l0liJ5yuroWGo5J65TTR3AO8WC2GVN5XZiAL1wEvobO8LOSK919EmkrdwgtN25G/uE+/1dDj99SjBvfR2OdCLKNO60Zk7D1NXvAWQtp86mTrcqRUSO3a1JGWhSpQPftQO0QUwrFBzW1Ct1w4Fk+qMonaFsTqg6mmTV8IdudyhhySWjFvknjv+tXPrvm+XKm29TtNWg7s+fPF1uee97yj2Hb5cfGqrgHb4IhmRzR4KwIDFG/aF+3SGYJVJrqQh2EO3mCqbfSmqhOgUHsdJPHjtR/n5h+qrrtXWUBfveT4+XD3/w/eWej3+k7igzjRM/U824xjH6i1uAmxorVA9ZakKg3wM6/HFK5DrtZNT0pw6kgMUMEHcYdyAE7qA0vy7iEDRe1cL9uhq1E2gzcOk3pc+VfLwIBd5IFryVbGjq6q2tqF/T+ufOdaXdjPyMp8Q4THsZ+Y34qNQN6usp4Ba61kOFvlysnu9lDXYXeWuWqbZ0V3WYZeviT7G4PWLHmbeeAsbjljWV0w6AOpt4wh4kmpJUunDYH6LaEq28iwszyJZTN4CfdkVXIK0FBuEBdmMUAvkCR5oj3wRjxjhdvMpXfdsl9V+iBKUPg4uCsDz/l1EBwFvPD859QLYCEYF/1UrlAVJ0gCusb18wym9fNJnEGyrENNktkS5145FoAG0lg18P4c/2HkP8pR3Sev7sJhtn6x0DtQ+ug88OsCKlPc95N1yNpNY0pabPE1lZv3NxXWyrMJuMQZqbnq/Yc51rfcI0VkGrQ/77QChxx7XrHYU8kgna87KhnYIn7Xmsnf/X5fL9R/4M+noDe40cbeXjn/ghBf6FIel2eIZiEbMGKT7IebZ36rvs4u2Gq0nKwaQt4xz8S2dfLUd/8Xz5/Ymz+PF3W8c0Xj92dmblE3fcVr7wmY+V2w/dkoWHvmNfBU/FKPfEoxaKYIT/1snvLHhybzemDqazUh576sXyg5+dKHtvd/ftdo630jq4u1O+9Lk7ymfv/mjqjwicnPOZri/vF54Reye/jT4IA7ZV/xgb3a2r+N7eO+VbP36mPPWXs1sl8m6V7r7ztnLfFw+XgweA0F1Ap+a9odP8oTAIoBf/RpilYfJ0kjSSDxnvEd0nWDOlnvkHH/7TDUueEFnoB3/0R7KA0XWbeVJ89AhM6ke1aRrnIQhVWMBZo+oGBYgiqDjQMaU++WO/PVOePnle/m7khTGPPXkm7mgmyaQxTMkH1qDGbUr8/OifyDPZSLhRv8SY0uE4rryxV47+8vQovmHzo786XYiBSSkx5GGKhJSTqTa3k1m+48SZKP+YaoafjSslP3z+8Oz5cvn1vRuW8BiIsZ8Ghja4qxyxu0xSPGmXfL/heMBwMfSieq1luBbVjcLEvPEnX3iF0fZ1nAIGtr1aX0ny/o+EdRaCJ9WH+ZBXXpF3fhvsD5KWj75IwPm6Lzv7uftGeQldoI2DQN2MDNXuUsjN1Q4zca71+eAvRsIo3C05oGdWMyOwemyXoMHzur8DN2kegONPdMLl6mDiXF0g5hF/N4gcOSI/tngMGYC1QYpvXsLN4kjKGXNJafCYOD8uTP+VmLWtAUd4TawOtfXqCCsw2j4P4smEa7Zr4EmtS4fIcQa0HW/1Wu1hqSMceJ9rwEONg3CI3LD8VutXfT7RdA6kPnX1m6B2WR54GLJEeSjKLyvMRaygG1SEdgjEwj5f6y1K6MTKzDgG/LUyWSHmrafApIL4QdMVjHLCUTpUIAXJiijKzXAJPN7d9tSa/kDDROLAjISYN94DyjkK4/EQJyoXVBS8+JjGP2xCIMiitAx6MxSiYfDTwPlwaywj3/Am9sX83A7+6vS48oBMO5zUbWVKcxUjqXnK9384ISJhAkGEETxp4G009GbHUQD8j8Qz3vRpdRUaxWCXxGf/E08EvGd133YUeSzhNW5QFGReDpSHdg7eeR/+L+rZ13Ae8D4Ij6SrPiyOdKiXujdFFYxnA03sSr6U+5m7fg84eNeXv1l2do7glH8UzXCu5eQk7ZgrlpHt+GZ0Y7keg3nSFR+ed/g8Wg4cOHLwrq88QKD/A4+SyXcu1BIBAAAAAElFTkSuQmCC\n","details":"The cousin of Blacklister, this extension highlights posts depending on the words you decide. When a word you add is found on a post, the post will get a yellow-ish background."},{"name":"jk_across_pages","title":"J/K Across Pages","version":"1.1.3","description":"Allow Tumblr's J/K navigation to move between pages","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTU5RDUwRTFDRUE0MTFFMjlGRjNBNzgwQUUxNTkwRDkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTU5RDUwRTJDRUE0MTFFMjlGRjNBNzgwQUUxNTkwRDkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBNTlENTBERkNFQTQxMUUyOUZGM0E3ODBBRTE1OTBEOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBNTlENTBFMENFQTQxMUUyOUZGM0E3ODBBRTE1OTBEOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Poz+E8EAAAOsSURBVHjapFbNSyRHFK+qrnZmR9dxVlYxCcqiCyrsZQMeBGFhCYHc9ri3XPJP5Lz/RU655JJDWJLLgqKLBxkQXBDFsISQIavLgitqnFGn6728quouq3uqm/14DENX1av3/X6v+LNffmCGFALnHDUBywhQ2Q/aNf9gv5FZRnSntAUqO0WeXgGUqSCG2Rn4EgtkRZedZjzcX0rl2VuQTgYMHgW1QuYKgKcbtD2yTLpPAKoo1FzO+Jl3kRc4JerQCzQ39FrIh/cf3R390rtonEnXOGiE/SQjdv9uv/531zdfC/Rt5yi+/+ZH0a+xT6J74w+2W2vrr37LioU5BWne5r94+NXde+wz6LvJpy93/kCeuB3hnFUKxm9PVd/vdDqnp6cVDDKSzca4jbdxAoWuVfujUsAq6RcXFxsbG6urq0mSVLBRmbqi0h54PYUMK67h2tra5eXl8fHx1tYWq9SgC1eB9sM1mg0U7Smlgre2t7ePjo7s9/7+/uTk5OzsbJAT8lZKV+a6XSCs4PDwcGdnx9/Z3NxstVrNZjPgAORaUvhNRH4lA3R2dra+vl6Q0u/3KRlXV1eD/GDjk1GukxUoulmQdX19vbKyQmra7bbbXF5eHh4e7na79Xq92gOZwY5OMcVnUMGQIUT0u7fRaIyNjVlXBnDF9DY6BTc4GlbgYuIr6BsqK6JiklMnACmCFJAyBeD5TssyztRX54GdEinqlntAun3TaFnG6WZULge2AxMVTjIls9fr+QpOTk5ov24o2Mk8M1rmIReCMLC3t0c4UdiJ43hpaWmQHxX67gh/YthGKxBZsbi4KITAPC0sLEgpA/wM/Z6WAOnsRgW6EUKdXKvV5ubmDg4O3M709PTo6GiQ2Q476EMG14AVU97RxMTE1FQK5oQQMzMzHzIeDFzfEKuGa0K3kZERarr5+XmaWWVsdADJzcvDJVkPud71fxUKKA0UdyoniljV2Oid6ymjm5nbMuUUfZoLHFnn3Z9q4ds7rTtll4Pw6YiG3Zt3/3SvzmqNmJnYUIIlGuSjdx0T/Lz7/vnmz4+/ftIcaX3CQH7d2X/R/jWSETcu2Lkmb0AMWVyTb8//+un3Z6qvjynOdrQWqgCLD5q0MGUc3WrEQzKmPEDWDdII4jY7kRT1BjEImhGYBy8YKDbuvbc03nAmIiG4JqUgDHY6kxEfiuL8Yy0g3SlQNsIsYqZMiFMV5oHrjo8Kd066Ea07VQXer7ICyiuCkyRZDxvpQdGW/hdgAP9if38Csi+wAAAAAElFTkSuQmCC"},{"name":"limit_people","title":"Limit People","version":"0.2.4","description":"Limit the appearance of blogs on dash","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFREI5QTZDMzZEMjIxMUUzOUM1NkIzMjQ0OERGQUU5RCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFREI5QTZDMjZEMjIxMUUzOUM1NkIzMjQ0OERGQUU5RCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTE4QkRBRjU5ODYxRUUyRjREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+j7AWYwAABIBJREFUeNrsmW9sFEUUwOfN7O7dXu8Kd7e9lgOu6aE9FUr90BiblLQBFT6ABeM/xA/wycQmfve7MfGbicHEGIIxRlNSqU1NQFP/F/GDkIgBq6VF0HIVK9Bq7+jtzY6zZwVpusvt3dztNe5k09zeztv3fn1v3rx5B5nX0IoeGCEPwNUhIfA84Hngf+4B0YOs7SKp53B8C9Q33/ySzV00Ln9Ff3yDTo2KVQeZ18W9S0HK1mHcstNmjnHhw9ynu1iu9kKIW+/rPWNvvamvZSefxieLA+CLWMQld70DWltRqFobnyxKrxgPYG0TSe1zsE5S+7hIDXlAanvRcfbgIjXkgXhXFUQquIghlKiCyPKeBPd2YiGqXS0lPAAvhLwQ8sppL4Q8gNoo5oxfRpwqNkWE1JEIguX/G/JnXlXWP+RURIhqDkDKfwu7Pqp/0Sd3Hyxyfm7kWS4iRDUHkIXEszF1BKFiAdiVj0Tp5QBubAXilHIAnxsAPoEAkhsAwpTyalRxwX5xSsVkIecExAMQl0YhkIDmR6W7nyheROn92rh4jI6/yzKXytW+8H5H6cKr7iN37cXNO0rfPdKjdLyfzXxTBsDRB0spodZsIxseh4b7hYQBu36eTgwYl4ZKAhjsdGZ6opfcsx8CjcLXBcv8RsfeMtKfIX3OCcBQd1ET5RBJPonXP1IJ028b+l90cpBOHkH6n0UC9BRh+lMk2YvkYPXSlIkxRCf774gBC8MP2zwmrQdIy66qmr4E48Iw/emwbRq1PtdLG/swt97FIQdJ616Qg/mzB61PZFiyuvC6bbXQdzDNsDZSsjuZyoGa6JyYZoD1Gji223bPjChbDy0eo47v4SWAsn3g1i1/vmOwOrfWAMcfW95xTd2k9RmUn4dQ4dfS3Kx+6hWoWyO19bEbV42pz+nEe0gJ48hmlplm878iOu9WY2v50pzbCqqGkPavK1bJnS8vPlI1nppAbUCSihsfMPegme/10y9BpF1K7mHZKzR9gl39DklBs2jTZytbFuY+fnr5BLrxeRzf4qSsyaN8FimhxT11vB+HUzixHTFqnB+gP38A9a04usng7rr2A8pdq7wHVIc7Ls8JBesL9Wmj1P7CzcoZJ3dDdDOS6yCUwOaJ/tv8ucNkXQ+s7UHZGTpxlM2OQSCOiI9l/0D5OacA2CKEmoS5mfggcu+tN8c65FgHYoapWm0gyn6WPgFaO4RTpiPH3qZTn+B4D9QnUfZ3evlL+yCE3MgBS63+KFJjWI0hVQP/P38jSPJXdlUyyrIzIKlIqTfvpk/mz75ZUlvF0Hl6QZlpuhTMXwDTCmANBbCoCUYENRqA/LdehKZOdO6Q0L6QkWOZNMqkl4JJKvg0DoN5djJ91WiC+cKIlH1+t7VQXFuF6tZgkYLHOF4M/BryRxyAMWpvYeU7c3TBAixgBp4/ugjmi/LP4F+N8O1ndD1zJw9gN7oSZihagdWBP8wdVfBV1PSArYUutVXsPHaDzaf5VWQPRlrpv/PxEFrpAK40d4UCYA/AVQCotSzkcPwtwACiu2RPTpU5QwAAAABJRU5ErkJggg==","details":"Some people on your dashboard posting a lot? Limit people limits how many consecutive posts by the same person appear on your dashboard at once. If a user makes more than 2 consecutive posts, the rest will be hidden until you click on a button to show them."},{"name":"mass_deleter","title":"Mass Deleter","version":"0.2.1","description":"Mass unlike likes / delete drafts","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjExQzlDMzgyMTRGMTFFM0IyMThFNEQ0NkQ3REQ0QzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjExQzlDMzkyMTRGMTFFM0IyMThFNEQ0NkQ3REQ0QzMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGMTFDOUMzNjIxNEYxMUUzQjIxOEU0RDQ2RDdERDRDMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGMTFDOUMzNzIxNEYxMUUzQjIxOEU0RDQ2RDdERDRDMyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgS2HqQAAAWWSURBVHjajFY7bx1FFD4zdx3Hju1r+/oR/MKBkioNKDUVBXQICsQvoKQAiY4GiV+AUtCgKKBQRSko6JBoEH8ABCkCcnydBDtyHndn5vB958yuLwiirO+uZ2dnznee35nw06c/hJkQYwhxEGIQDMSuELSolKxFiqrmolnzBHfmXJtKKvkpxiXnFvNpUrQUadMkFckt9ratiOYmNBAbo9hjYNL7OwYVlaAxS8E4C1QRidjmesQmFuIHaBcHEC+ZimEXJqihKjTHFOTOAMLE8qc+CAMsIj5/uAec41/kBLShEpyMtFhdJcCaEvUK0d7NK8S0T/gXTA+zRH1P6K4pH9peqaBNlE49u+tHm6VEMUmh4piVYsr1SO624NoEgzFtgmuganIc/czTNF7gx6oh/pUg0itptsc66CZC/7mIOye4h/waiKvrixr3HuJREVWkM8c+JY/a5Q9fk6nrx4++17qF6qtorwMCbeZIolwAmCiFEepRi+74Vz64LP9/Xfns9enX796/wRxDPtcJ7W5tSslIMYpGpseBxYfQt2/+AhiqhipAMrIUMEA1FFQA3zFuC+sg5fHPf0AA8rTItLMAmWCBLYXnotK8LjFefe/K4fGRPMc1mlu99vYXngAGkDsMRjPyNVPFXMxPeHJGXtp5WZ7vurS1nxPUDNrmflKTe0iiFb4qrCYHZMPBTN6/+KIvHV5Y6retLq70435+f7RHYZCD2CX6lLmhNQiRrk9gGPqPMNCl5fPSxr7vv/X5zV7otU++6sc3Pr7ug53hNjMKanl4zdN9qCMjRo0VlIX/MAJRRNz2VrZ91fHto6X5RR8/uXPsg4XzF+7/Oq4Ai1tMH/AV1M8JM23xZG9hEAAwicTINKW1DLHf7nDX9x88uLu5sunj0uXh5vLG4cNDH2/NbUpCFBC/RLfDBxaEYhGPhQpn0C9g/FfsuXZ+NDsziyWHJ0frw7Vqc1v9s760fnR6D4P52flRXPQErsmjXtu0CXCRsZ3QL3AR7NA2kdFTzk+Sx/nw+O7G0nq1IFfvri+uHZ0yiffX99pH2Imw4hN8AC9gGhK0simkF6udklKB6BYY2Z5pb51eOjgZbyx0AMnZRzbmR4dmwe7ydmJf4kctlpyW7GYH78jYJkosrRkBvMQBmtTeyo656HBtbvVfAKPzq2OzYHd5FwqptbDcihFU0uTSidJA+5i0tspIfkQTUqPHvSEBxifjUQfAIvSCmFsdPyTAzsIWm5plfqHQzHRVy1tGQRvgZ/a1wm7UkLAZLgAUeWGeyfPng4NzMuNyTx8/9sFsjgcndzG4eG4EmdLKhEILySJV3Vu1DnPr3a9JcYPonUrZYmorezqT3rz6Dhk+DhAokntsEnORHRyKN4Pmm7eu6iO4U6yIi04q3dFjwtQCm1aC8pZqlFsRmhw3hmugPJfuyVGDQbfIzspWOvXMYhUghXqW5jAlrIs4aJSnhRVIUiL9Eg0SEfpJ2hntPoPmdpa3maCg9TKBSLssUDWFrBsZ8eRaZUxT4KWMurOy2B1uPQtgaVtKC+kkiS4vUQdUUlUc+9s3vgx+yEAo+uNCT5l7w/mNhTP20pArE/BxcufeyW/3jT2d6Djb0vdcH+A7dDTkkvkTnaFIPSmUuj6Ev34f4+fVD8+lUqUHz8qkvSuMhNjU2BlK7gpNmnbCU8MgWnAb4op2bc/EYdvAOziLKNDd7KHiVGOdwFgKWCkZdjmTAACutnZq/EpZpVohvdXOK+hYmgxUpeaaGeD5btJL7QdTbbkJpe2OHjzQJK5GSuEQmmSqtyq5wE4DPWOadEYE6Vff+zZzdrho1I8vPEyksz4UJqrSSyvTezqSQfrxeEPpwX0vXbBrrbgFxblb/ysNwz+VsRueR3YEO9DwhF4PhjIt/cxJqn8LMAARHl/PPEs13gAAAABJRU5ErkJggg==","details":"Used to mass unlike posts or delete drafts. Please use with caution, especially Mass Unlike part is extremely experimental."},{"name":"mass_plus","title":"Mass+","version":"0.4.8","description":"Enhancements for the Mass Editor","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBRTdBNjZFQjM4NjcxMUUzQTFDQUFDOThEMTlDRUY3OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBRTdBNjZFQTM4NjcxMUUzQTFDQUFDOThEMTlDRUY3OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ZPtM9wAAAYhJREFUeNq0Vs1KxDAQ7rTT1MoWERXxKPoEPoMnX0F8Bj0u/pzWBY/rxRfwHQTBR1E8ioinikWXNkaFdJbNbKa0nUNJPjLfdL5MJoF8bxz0aRiA7jlAVPUbAMKeM9Bh6V308p078S2VCSSKBRlwKgp8ESL/ohDdayS+qNGfgGZUlPiaKnL/xeDusp7sn5jP7sPEAo9/yOB+ZJGPg3MuA8EeRH6E40GIRafFi3A8qAWVoJUAYXggPzy1k9evz04O12ayTCRSdZFD1U3boJxYku3SZLxze23HT0fHQuTfKKfJgESuuD9qhtDxTJlqphLm8cUI5cQoIS1Bg7tVKGiEUE7Ih0M7eSuKTjZ5I03JgVGkfsugGyOcM81uPVuy4+ziyo6fz347z/Z4sgDJR7USummrAAQ/wrWKQIE/QAJehOMR3Wjzfd9xE7C96GboDfBeTJ34WurXVyYRV10CXyORYJOnDJHA11SRIAMM3XgsyYBxpra6oto8HXt92BmJBBm0ezoKdGxjPwIMANdcZlZzJu/lAAAAAElFTkSuQmCC","details":"This extension allows you to select multiple posts by once, by type or month. It also comes with visual enhancements for the mass post editor, such as selected post count and more!"},{"name":"messaging_tweaks","title":"Messaging Tweaks","version":"1.8.3","description":"Helpful tweaks for Tumblr IM","icon":"data:image/png;base64,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\n","details":"This adds a few helpful tweaks to the Tumblr IM, for example minimising the chat, hiding the IM icon or changing the looks of the chat window."},{"name":"mirrorposts","title":"Mirror Button","version":"1.0.1","description":"A button to easily backup posts","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABtlBMVEUWWYsWWYwXWYwXWY0XWo0YWo4YW44YW48YXI8YXJAZXJAZXJEZXZEZXZIZXpIaXpIaXpMaX5MaX5QbX5QbX5UbYJUbYZYbYpccYpgcY5gcY5kcY5odZJodZZsdZZweZp0eZp4eZ58fZ58faJ8faKAfaKEfaaEfaaIgaqMgaqQga6Qga6UgbKUhbachbagibqkib6kib6oicKwjca4jcq4kaZ0kaZ4kc7Akc7EkdLIkdbMldrUld7Uld7Yld7cleLcmebkmebome7sme7wne7wnfL0nfL4nfb4ofsAofsEof8IogMMpgMQpgcQpgcUpgsYwdKg3eatThaxTha1Thq1Th65Th69Uh7BUiLBUibBVibJVibNVirNWi7NWjLRWjLZXjbhXjrdXj7lYj7pYkLxYkbxZkr1Zkr9Zk79ZlMFalcJblcFblsRbmMZcmMhcmclcmslcm8tcnMxcnM1dnc5enMtzosV3psp3p8x5rNN5rNR6psh6q9GFq8eOss2QssyWt9Cfv9ihw96tx9uuyNy70eLE1+XK2+fU4u3f6vHj7fXj7vbk7PPq8fbs8vfv9Pjx9fn///9KfHrSAAAB5klEQVQ4EQXBTQqoYxgG4Ot5fTgSM5L8Fs6RQqeOY2APBnaADViMLEAWQMnESIyOsQUgvxEZ8X3vfbuueRsAAABwbFNjVKcDdNCBI6YTQydGwdRop46YTgHAFJjiyLRTrz4NwOfo6uzBca2wXn36vwc+nZrO68/sTmcPxZHgtWd/PZ8KENvUZAqraV5/7pev/9Om2a2d3Sa7O+lx4XlPvMM1SiLAFI5Sf/+OttPxqNsA3xrHht/umQJ3HvMCwL1Oj92p7Bod3njx3wc/Rrl785zOEaWh1N2bP//zUoBqdSXZkuzuvd+49dMX226ys6PZPbah0da87Ml3SUantdlHOyQF/vqx02qnapseF/RiuuL7b6x45/wMsaeO6Gim7NHM5ZXH3fpuWm1mnTun5trJPvW8cr7Jm+fecZ3J6r4q13WdZyK5zvdvZD/03rnr2td5pMbt24BWH/7jxt6PNFV6JGvfYzrqTlKf/PTB+dFTaVwrc1ziS4A7vcwP7j/yPZFwBAAk8GeCas1R1aWGSjudD4dOpea4pmNTg+wsZTpi49h1316ZkRVvvQUAV6dHsk6t6WxfTcZUVzvTa8zcmJaFrKyYrhgjqyNrHgzTMTEKWLFiZcUcyAKALACYhU6s6XSaBTJjarb/AQ4eh7vhlccfAAAAAElFTkSuQmCC","details":"This extension provides a button that will create a mirror of a post on either archive.org or archive.is"},{"name":"mute","title":"Mute!","version":"2.4.0","description":"Better than "shut up!"","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTUzRDRDRjhCQ0Q4MTFFMjlEODhCN0Q1MDg3NTkwRDkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTUzRDRDRjlCQ0Q4MTFFMjlEODhCN0Q1MDg3NTkwRDkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxNTNENENGNkJDRDgxMUUyOUQ4OEI3RDUwODc1OTBEOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxNTNENENGN0JDRDgxMUUyOUQ4OEI3RDUwODc1OTBEOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgIQgzkAAAiRSURBVHjafFZbiCVH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","details":"This extension allows you to hide text and answer posts by an user while still seeing their other posts. Useful if a blogger has nice posts but a bad personality. Please note that you'll need to re-mute them if a user changes their URL."},{"name":"mutualchecker","title":"Mutual Checker","version":"2.0.4","description":"A simple way to see who follows you back","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAACGUlEQVRIS7XTzU8TQRgG8PeP62GzaW3TLxMFCR68SPDQBS4YoQYOiKCiFxMPbWH5iJAaAwmVCATx4gE8EBJNKX6gUMCP+HV1Z+fZnTrTylCyv9sz77zzpJuU/gSMfgcs+IJfAaOf9Ryvj7UbIS3nsvNYqo9+qI7ms7GQGUtpyeS2sFYffZdVn/bHQqGW0TXkM1ILXt695Pzya7kK8hnRN9m6W9AEM903u4NHBPoqe3GnFRun1zONRwT6IltzC3qmEPVsP7rqFqhbdCzjBd2TiJomu1lBnS06EvgljxFJXB4ovsXsJF4BolBbsHzvSjKZiPj/MDM9UNzD7CSNCw5lq6PuJ7IRfW9meuNutxHveLiKQ5/NC5StQ6rKVkZYQZeN6LO72BNc68gKTj18qm5V6UCGgglE38S/BTj18Km6dUD7suXbLezqOKJve/ZmW9j5Rka4re/xaxz6xnmBsrWvX/B/jQs+y56jAFGTV4Ao0Cdh+kbSEWffwWFGkxeu21uYbT4Zs9qjJhsY4fOdw3OvdjHhChYbWQVEgfYEfslnpjrvlypssFGwojj0Ra3ChrvFeQWIAn2ULQ2zT2TlER0Lg2m2LUsPLuCCI88LaraAPsie3WIFmTyiI59hyyr1Tu0J6BTomOmNNCh4LyvxghyipoZb9E5WGrroXG1KIlvEIwLtyhabLDBTHQ8W8UYNqgQs+IKdgFE5UOXyX4UwNMSHFXXQAAAAAElFTkSuQmCC","details":"Adds a small icon and "[user] follows you" hovertext to URLs you see in post headers (when appropriate).

      Only checks the URL when the person directly made/reblogged/submitted/published the post, and can only check main blogs."},{"name":"norecommended","title":"No Recommended","version":"2.3.4","description":"Removes recommended posts","icon":"data:image/png;base64,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\n","details":"This extension removes recommended posts from your dashboard. To remove Recommended Blogs on the sidebar, please use Tweaks extension."},{"name":"notificationblock","title":"NotificationBlock","version":"1.4.2","description":"Blocks notifications from a post","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NTY1ODZDODM4QzQxMUUzQTFDQUFDOThEMTlDRUY3OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NTY1ODZDNzM4QzQxMUUzQTFDQUFDOThEMTlDRUY3OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZCN0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+lGIJ0gAAAmpJREFUeNpi/Kpkw0BLwMRAYzBqAUHAwsDIRGsLGIlUyr5s2v8v336llVDZB0yaOgwM//9dv8psqgXk/iLRx4R9wLGim+Hv32/GvlA+IyNbb8P/bz9+13YQaQEzASWc7GBzYcoYmVl8bBn+//9d103VSIYrgzCA/iZOIwsDE3EWwJUhMVjTYv99+vJ3xXp8FjASZwFcGTKDNS+C4fvP76s24vUBMzNRPoArQ2YAA4qLA78JTCAvYyAmcxOWzDgGbl54gDAqKkIZSkrIYfXdIgLIYJSSYt88C6tR2COZvbeEgYeTUULkd9MkaGJdPwHKWNcP9Xte0nfjYJBFtpaslUlM3FxYjQIGERbRf49eMGkpsvjZ/Vm3C6vHf89Y82feSqBezoNLIOn498y1WI0CWsCCKfp39wmgBaA8VZ6CKfvdPZ3h0ycGPj7O3XMg+fTfzYd/Vm7FahQwmJgx0Z8dhxh+/gJJaylicf+XryxR/px75sJLgX+3H4HUYzOKiYGFGQv69u3P1qNYA+ffpdtABazJASjh4GbJvmEyVqOwpyIg+rNmB8Pff1i8rKcKlP3unfnv+n2EKBvLv2v3caQiHKn4/6u3v9fvZw1xxiLHysLw7z+TJiz0vnz7vXDLn/W7sBqFL6P9WbKJ2VqfSVIERXDfaWByZG3IhIbYjQe/Ji//f+cBLnOYGFmYcaLfv383zfz/7hNKApu3DijFYmMAMv3h81/lfQwPHuMxhAUUFbjB/2cvfhZ0saaHMptoMrCzgUQ+f4Vo+T15xd894ISA1wTG7wH5NK6TWZiHugXMNPcBy1D3ASttfQAQYADCE7PREUA/jAAAAABJRU5ErkJggg==","details":"One post got way too popular and now just annoying you? Click on the notification block icon on that post to hide the notifications from that post. If you have Go-To-Dash installed, you can click on a notification, then click View button on top-right corner to quickly go back to the post on your dashboard."},{"name":"notifications_plus","title":"Notifications+","version":"1.5.7","description":"Enhances the notifications","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyRUE5M0U2NTZDRjQxMUUzOUM1NkIzMjQ0OERGQUU5RCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyRUE5M0U2NDZDRjQxMUUzOUM1NkIzMjQ0OERGQUU5RCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTE4QkRBRjU5ODYxRUUyRjREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","details":"This extension replaces both XPreview and Only Replies extensions of XKit 6. Using this, you can hover over notifications to get post notes, and toggle the option that dims non-reply notifications."},{"name":"old_blue","title":"Old Blue","version":"2.1.5","description":"No more dark blue background!","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjEuNWRHWFIAAABeSURBVGhD7c8BCQAgEAAxUxnhW3z/GsYYwsEK7NzZrxXQCmgFtAJaAa2AVkAroBXQCmgFtAJaAa2AVkAroBXQCmgFtAJaAa2AVkAroBXQCmgFtAJaAa2AVkD7PDD7AO0ekMT8f38lAAAAAElFTkSuQmCC","details":"Reverts the colour scheme and font to that of 2018 Tumblr. Overrides any Tumblr-provided color palettes."},{"name":"estufars_sidebar_fix","title":"Old Sidebar","version":"1.2.3","description":"Get the sidebar back","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAL8SURBVHjatFbJkRRBDFRqyg1wgPdGYAM81xTemIAp+9tYJzCA4LEfHAAPRClTqu6BYKY+9ERPH1WtIyWlhPefX+x/HgOwyBsYr7xANzy4aIh8E1qfG7gtkO/1r51Af7Aeh5lzWz629PWl5Sp3ozWm9OAeSCtKbe4sa3r/NCkGUgLoRy54mYPenitR0rHOTx/ePT68+RcsT19/fHn5JrnOP4TnrTmML9KXeUJ2oF6hD8cN6fN4fHirjdPNYRJn7STlxAJiWS4olzN3D5ermBAtx3UThYvcWOGTpoXc3aPNHlJlJ7in6fPnygIZ3VnDuG7pmHYr/qM1VZp4ylZmVCqli6nET3nrGw6klITIXBoq56RGWuO4OlMuYN5peTcGc1OiMJwfW4mXsDjL4D6a3b7GRhTcU/o8h13obwRUDJXoKEmMyzQiDtyBzSAzcplFsSLQVIFAi0qXFHUTXEdR35RPu6fZozQRY2NciLeFlATzhmlLAomNAFcd6PPRFTHvRRqsr2Du0FSik3JpkrzZ8MCd2M4gXzwaI4leNYfmofIxSFXTotiqA1Xt9IAuNAdjUeeRSQvyqPqI7UJ2xoD4o0m2v1883QHKpfPLe0GWzSPvOrdVfIUGKuJB5UV9yYMB38tSVz+gByKFjGVl02JWU+7Q9i6RvSALj1loQFnLr09N78yCR5e0Pca+VHEqyMyPo8y6DVdVoTFE9zRsBZnuDxYEuqMzdYsgBN6f/L5HdUlGMk2FhgY8FjTFsUtis5TbVldTH0sPsuSOIcP+qoMz9Wj42Cq0Ls7syW2ZVQhrxqj6Q+si+27XwSKIIeK21W4KjnJLKe9HR7pOrw2URoMdODigZyx0Fwq7Cvh2HZAsciICGHTORawxTUFcZH9F1WM/Pr/+vCH9+fUX6Tr9x8en7+e1uJpKC//jJFmXM3GGLeyaII/ht1tx5aQfA4omVmcMxOK+ooRuRT3I9ni6xttmtNE8IHuObdaEdEylmvgYkZLIQSk6BUqOqDFqKPktwACwoUhAKRqCTgAAAABJRU5ErkJggg=="},{"name":"old_stats","title":"Old Stats","version":"1.0.0","description":"Blog stats where they were"},{"name":"one_click_postage","title":"One-Click Postage","version":"4.4.24","description":"Lets you easily reblog, draft and queue posts","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAACzVBMVEUAAACWySrE5k/J5k+UxyjE5E2VxyfF5E2UxieVxyiWxyjD4kzE5E3G5U+TxSeVxSeXyCmYyCnC4kvF5E7F5E+UxieUxyeVxyeVxyjE5E3F5E7F5EyTxSaUxSaUxSeUxieVxieVxiiVxyiWxyiWxymXxymXyCmXyCqYyCqZyCqZySuaySuaySyayiybyiybyi2byjCcyi2cyy2dyy6ezC+fzC+fzTCgzTCgzTGhzjGizjKizzKjzzKjzzOkzzOk0DOk0DSl0DSl0DWm0DWm0TWn0TWn0Tan0jao0jao0jep0jep0zep0ziq0USq0ziq1Dmr1Dms1Dms1Dqs1Tqt1Tqt1Tut1juu1juu1jyv1Fev1VCv1jyv1zyv1z2w1lGw1z2x1lqx1z2x1z6x11Kx2D6y1luy11Ky2D6y2D+y2T+z11yz2T+z2UC011O011y011202FS02UC02kC11W212VW12kC12kG21W622F622V622la220G220K31W631W+32V+32la32l+320K320O33EO41m+42la421e43EO43ES51nC52mC53ES53Fi53US61nG622G63Fm63UW73GK73kW73ka83GK83Vq83ka830a830e93Vq93WO93mS930e930i+3lu+3mW+30i+30q+4Ei/3ly/3ma/4Ei/4Em/4UnA3mbA31zA313A4F7A4UnA4UrB32bB32fB4F7B4UrB4V/B4krB4kvC4GfC4GjC4V/C4kvC4kzC40vD4V/D4WnD4kzD40zE4WnE4mDE40zE403E5E3F4mHF4mnF4mrF5E3F5E7G42DH42vH42zI42zI5GzJ5W3K5WzK5W3Y2NjZ2dna2tnb29vd3d3e3t7m5ubn8s3o6Ojo6eTp6enr6+vs7Ozt9s7u8Ofw+Nby8vLz8/P09PT39/f4+Pj5+fn6+vr7+/v9/f39/vv+/v7////REcRKAAAAHHRSTlMAPT09enp7e7KysrKysubm5ubm5ub9/f39/f3+7gexhgAABDxJREFUWMOVl0uu3UQQhr9ql33yQEiER1gDQmyBOUMmiM0xYAKZkGSQCMGAZbAGlIgIcuNz3V1dxaBtn3MuyY3dE9st1+uvt0B39/CUvvSYGn3pCQkkhJAAoPSFvvRICHnI6/s301gRDp88CkFCAPDk1K6ippgaaroyOxfQhHz3okh6+BPzWSQDK4PldLW7YDyf7/+S+88u1MxDBmDIA3nI6/PmHUAeMt/qYURNIcOoIzoqyRM5ZciQyaSc8OTkdtH+m2kGeXxgOkyoKV3tmA7TKukwHahdXVU+vw+J9i6PT/YDKwY3MTl/v/jWab1DQlYcFuQXqeduPUwHylDat5quDIoWCgUd2531RtRAJsHFEW8avNE36JvZzZp9sbH/+gO2nX//gNIA9kStVAC+2krPh1/GGOPICFXNSZ7w5MLmU3LKCcNw9UqlQsW3M6BKbaBWzd3/XLRJByl4cjo1FhBjO7lVmOn0FKqNQc23knZDw6B2lf7Yk5WKiSE2R4n9fSuD+wOAmZpCB1Vzoc89QewwoViRlr1FrwauhisA287APQ+ZiYlBo6VoyKzB8PGtpDrHwUxD1rK6sKEnd7ZoMK1ZqqWn9GVnHIggcxVTKUgR8pBbRtg/t5LevQcwldIXhnGg6NgKpoW1ylCvb4+DeycMxm4EDcFxxGVPMlnyRHggmjs8OcBcm7rbrZ9DuVKpXaVT76ipkjzN9erzbTr0BRy6xPHIETI5bzchX/u1Ow7HZDAxTUy7stnCIizM0NwRNahRWyjnV2+z/LN31wOC2lUkpLTQsndCd6aAhwQ4hIYhJrj4jmTKNSRInjCNoKaKLF0jDRsYhCdPrc1rpamyVLT+0y0axNILUF9b1h43xtpLk0cQ4HjdgwEVHPfQaKkstiedrXo4YkJRS1hnJE91TyQFDfykLROpqZYdjam50RKus9zYU5TnAaNSIfkSa3swmAqlgYha642e/GqHCVFjqQcEnhxxSbvSsWspcJ4L1ztKWqU2T5h6nDyzIw662kph6I7BpCwoxWtMDBxE23iDhBzfG8Bje6bfXkK0wTwpvmTjVhPSs1/mab0Kriyju2wsKOnJ02U9EAj1gGB7b0xPnoT4OtnGUg8q23IhPXoO0UI5CESJPQ5MPz+fx4GZJjTWKb1soX8G+IUJ8wojIe9vLenHX0MCNW07VGeoYmBQU/3z5YP3zCU//N7CN6zFQEmYfHG5L0jIElgstf/8e1nAPPm8L5xvIUuZskTMWYqflf0ZuHmunL1wIwAXiU1n8LfN4HFiGE1Ia9WOu7kZdroLIjx85bPcV2r16o589GCVei79Jh5vW7wkhBc6gSVb7V4DZMYDb2Yta/EipKsdLk4WeXh34bYgu0hZtDjtypeeCYnji46sSTxibnHn6oXEeogTeEHMyo6vXEDu9B+1Cjsv2Bdz4Xy3SD//5/U0Bf8BBdxZWHJNwMEAAAAASUVORK5CYII=\n"},{"name":"one_click_reply","title":"One-Click Reply","version":"2.1.4","description":"Lets you reply to notifications","icon":"data:image/png;base64,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\n","details":"To use this extension, hover over a notification and click on the Reply button. If Multi-Reply is on, hold down the ALT key while clicking on the Reply button to select/deselect posts and reply to all of them at once."},{"name":"open_in_new_tabs","title":"Open In Tabs","version":"1.1.8","description":"Changes links to open in new tabs","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTU5RDUwRDlDRUE0MTFFMjlGRjNBNzgwQUUxNTkwRDkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTU5RDUwREFDRUE0MTFFMjlGRjNBNzgwQUUxNTkwRDkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCRjMyNzBCMkNFOTcxMUUyOUZGM0E3ODBBRTE1OTBEOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBNTlENTBEOENFQTQxMUUyOUZGM0E3ODBBRTE1OTBEOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ptxi4wkAAAKNSURBVHjapFa/S10xFL65hufTh0OhUBEHEUtLoe1QW3gIiosU1N2htEOhS9utQ/snFDq34Fho/QOcOugmdOji4iQ4CaKdVeQmx7ybXyfnJnkXDe+F3OTkO1/OOTk57OPmVlE3KYExBgASoLDNjaEeuB50L6VbHXwJYWScGEhuJYwcQSQN7Gx0tcBYtnFFPMk3hE4DqpPYoyg4DzIY8xQ6bm6/Bw2AcofmSrBkTAKQZWhsyNsHQhKa/kAB5j4U3ZgOYYHxr9S+lVL40zgFGKvJ0UAQZVhA62vYwJjIWzB2fG19vKRjMep8Zxasj0NSGuindWzQW+ME8mgjH4oOadZEJWETKMAS8/dnFh7O9rqjxjjkSgRDsDNwVVV/Dw7//NunPiBhvvBo7s1yv7hRezA9dWeit7W7hydLGcbc6rPHxS3ay+dPR9StEsI6BUoS6b1uJ7P/9bdN9csIdDifGOtGwhRac8ylOW0TxoIoouEPSe7ufr76+kNFya/P79sQ4jSis9x18A0uVCP9pU7JXYzn0X9+eqf6NtwhNALPJ9tG3hat/IReOnrR8kp+f/nQHl0bsxz6Yty4KXTVjzxZWVc6Z+7d3Vh68XZlcXy0c0vctf787NTk+eXF8el/pYTrEx2dnH3f3sFp1udeO4NTngknZGvqLVEZH5Acq98nxkqMHgRlOBOzKqpffLpGxLF+QOWCpSYyt7p+NAVmzPVcTVnimilAsZ8JdIiEkH2jVV2kM5/AVorCkbeeoNOyrjDyvMnaO7BOWzE7xGfwWf2LpkaqJI1WVAVA9HIS7q4qdXkCnzVIdn4/qSFz4Sh8vBXQzJg8Wpe1uacevf43KxpaVUSLg5RxRFXhaIlC63YtwADFzDLQBx2L7gAAAABJRU5ErkJggg==","details":"Open In Tabs allows you to open links on new tabs, useful if you don't like being confined to one tab. Since some links, if opened in new tabs, can break functionality, they are not effected by this extension."},{"name":"outbox","title":"Outbox","version":"0.11.4","description":"Saves your sent replies and asks.","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDVFREE3NzNERUE0MTFFMjk3RDJBOUJGM0YwNzNFMEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDVFREE3NzRERUE0MTFFMjk3RDJBOUJGM0YwNzNFMEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowNUVEQTc3MURFQTQxMUUyOTdEMkE5QkYzRjA3M0UwQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowNUVEQTc3MkRFQTQxMUUyOTdEMkE5QkYzRjA3M0UwQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsarvEkAAAb1SURBVHjalJbNy25lFcbX/bn3c9ISJEhQJFBnQQ2kM1KqiZyg1D4mBxqkOJAGWTTQiSBOmoSOIpoGUtMEgyCaRQT+A05EMVCQU53z7H1/3/7Wfs+B6DWi+30G7/5aH9e61rWWefXFN72VKSZG2/toZeiZMzrfpNfcWuNqDhnO2Ly13vXOmC24eGvbJ/9Ln018NGkbtaXaxJlmbWy9pL3bYAzmo3etzZz5UoyVGPyQ2Uvn2otz1gXna+7qyIi1sq6x5qqXInOYEF3JvffKG97gLHLRyrR22C6Tr7E0endWY/XGzzFKax1vU7rtuMQ6EWim04TFFzKbDdOcuPjRR27dmGmFp260nklEpM5hnXM8bhWX0poE78ROzVNjNcYa720plQDEDLHioq2p6iedK2ODrbWX2s3EuVmWpbeZyvBEIn2N3s4xByiPSfjLQgqSMtaN0ejEedNzxzJvU4MQXE1ak9rFO3M6+U4NqMvs4BZCzK2U0qxIke69N9bjv2pNhZ+VMUsDWTIlezHOVC2DYMBM54PNpMaNTjQSwb30IzkNfl0imYzah5lUIgbLj9Q8mcAQ66xmwtcAfZTRmon1qbhPA2zW5NRS2QDHmQUWZGKtzVBkK6cQyt5aJVMg6dYZWLNvpNcthffQxMhRBk3FaOy2JHKfXRnYXTCQpOT04MN3P/jIZ6e9mUvNuTsxGmz0reofvvTS2zWE7az2QNZHb7AzjiqCDJE6Z1Ki/oq7caDh814h/+lz/YWXvgc3/vSHt9/49V+cW/hwWShDJ1eQqGMGespL3gqunaFBxOLzoDCZjam8MbsmC12ncOVcLyQ69vyPF178ToyB3xPf+uqXHv3CmDXCdx5SJxkQg6KG4GsqXW8YarOu3rbCI3g/iB2DxE4lFHcFasLnXPqt7V/Xn33svvvvlTvnRz97+u57oQAUaV3bnFBsdHED+KqEIdrTKQKbVfpXbVdrbdsHj4HS2GH8yPuAYr3Vr1y9/7FvfFn+7ayn+JOXvrulf4rGJt46CplymooCNNQXoDPYWUrpAu06t3NpXW8eOFmVEa3DON3Tfvj8Nbl0vvjQfT94/us5bUSGFpSSKWU/+L6c4GCrOXURCwOxmFO+MEetlFHqS9t9r9uPFXovn3auffvq1a89ZP1MKVFQYDZd4hJbM9sO5WGVYjH3rbajRbjjgzZXzk2rIuabT10d3fz9/RuXrd/4+Pz+ux8/+f3HP7MuVQUW5enLGsCA/qKZoQ/JmZ8+85tDE0Wr6i18nap7o8sILiCQpdCp/Ve/e+4/HFy/9tri/U4sBfmZxO4Xmli2VAQCYdMIJPYqBtMsSKhKLrKi6g+QcXGNZq0qosjk5QxC9Ocz3UhzQclDRPtIe0FZPHrphqe9c/X48iQS7L6rLFEdkr1x8z2yuOeuBy4EH8W97CCfq/aKTifJ+cObe1/d54HBQg661Xt11tERzYUi16rAYRZz5o03X/7tW69o90lHQbUzLh2VLSg+xhrDW3/9xR//9jp6jqxijeGoNEH3GD7ozJ4qFdFMLYLumEUXJqztBIKMpPwpDmAI2dPamvLFHcXWLavLqrqKKu5JBJlBFA2EZdp0CHXHnLUKYtHMzPUnXiMzH1zaCsrkVWOaClGXlPIdnxbrBePVqDORJXrfdMzr8KImaCSSq4PxOB989A5TVo7ZRO/Rq3nXTpRDqFzw532g2f1OBusaAINmPZKZV9YAKjjQIoCMynvVMcwwu/jg93/+ufw/J+eqw0i9YzAgzvstHTjKSCpsDkqgsf+tb/+3g6a6SYvBC2LPZ50H5tmnf1mZk8oTpJ8h6nSlKP2YVMieMFpR1GMX0p3DoVwyEhtO0+5gdoL7vh3jRWkDhZyOABYDfX/6lIoWearAaa9VVKphGNlCrlfVd8x3td0tOoNenXNmlcE7/cR4YFgeA0AVPgTLd8fKpHUFJc88oc/FDdYbFgKsD42DHYmqhp3Gb8x/S6+CJApC7FatqSiyleiCpMKixCMVCjpgSu8oJg6vnKJH8Ole7yKMZHocMjEts8m7854dzodyzvMxIpY0OR3tToFmsSzsb7T/sdGQRtrzBUGh/ZXV76l46eKWyMJB+Dok9WO2KZe3rudgXFwdPUOwCoth/Fodjbq2stwxyHU3VK2/WHmMigN4ZBhb2Y4Wk4932ZJ0HnmN5YwiaqfCrLmeQq+DFhmi/Yiix9XSqyVdZAsJWeME94idOWT5tAaegwepefqM8LmtSyrWXdi2Q28VZ0Psky2WBUn7j1r4ZcUW9m/3ilqfIyVlgVq3lCocaGuH8pFPJRtFxul25eWczmSosQ05XXGjsmjq8mVVOaxfGV6V2MUc1tl5rNkJ6DbshoGja3K9LTaA8YkAAwD2zfBLe4vCPQAAAABJRU5ErkJggg==","details":"This extension stores and lets you view the last 50 asks you've answered privately. Please keep in mind that this is a highly experimental extension, so if you hit a bug, please send the XKit blog an ask with the problem you've found."},{"name":"panaroma","title":"Panorama","version":"2.0.0","description":"Widescreen dashboard","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjdBMzE5NTBCNEJFMTFFMkJGQjZENkUwMjNDREIzNjUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjdBMzE5NTFCNEJFMTFFMkJGQjZENkUwMjNDREIzNjUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyN0EzMTk0RUI0QkUxMUUyQkZCNkQ2RTAyM0NEQjM2NSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyN0EzMTk0RkI0QkUxMUUyQkZCNkQ2RTAyM0NEQjM2NSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pim9Y4YAAAMFSURBVHjalFY9qpUxEJ25ZAE2FvIaEeS1go2dpfo2YGGjdmJppYilpY3iCgRxAVYWdmIpWFkoWAhaCG7gzTHJTCaT5Htwby73+8mXnMxMzpwJ333ykggk+V8aACo/EYE38VseUK61R6CjdUZ5rfN1FPSNaFcu4PzCZF3QKawrli79RFzueazCkhtUb3UgxDD0X4Ylchgd5jPFJoY+yo5RbAG9XFmfWV3SScnNAaupxVeWPrGtV6M0oiOYBvcDJSDNTEodHWRr5R0YkMalpEWRhm1TOO/n5n0C23ZU7/tEFCihdg0h97ALKSGWFqOa0KOB4SpCgSK6Dsb4NHyPFQK8uZFiYI1jTMY1jRlaDJp3jYohgDag7XQgTtJZD++cvHrz/tqV4z9//33/+fvti0d0eLt5/9nxpaML5899/Pz18YPbz1+/y8i7Egvx0CCjb4Z1n5YBvv34pVkVPTB3NVQiQ6gPXSL87T2hb6qoPvjwD5++2D62zes06z3FspPrV4fMC2mSpCWn540vMWO5wAT06G2kC3Wa2tTiQmaHatw0DpHwmDA58sl2sg/NNM0eVBWTTspIswkdi1RsLBg9SmKwphMy2E+0oGN2A4NeqfSHnfZEc9GPOrSNfgb+IhumRaZBZOFHFJ6Fe1gisqqQCnLrSIJpf4Ah1aPhk40zfH/dMTWoZDbBZFg0htMKe9g+7FsvHpy6rpUQcVXNkeIz9OrW+CQcg5tcGJVEUr2g/aCnZxN2wgaLankxFrX6T7eaAOytRGt2066Ke41KWZsvXzwKLhyqdZLlugKZepa8u3HvqR9Z4ETrFydBrMkUy1mtUENYQirlYwtoPi6MZZWp42gcOB9Mwja28m7QzAPNQh4seYqJkKKMWzN2CH08I6gHiCaa5S6R7AcIXvWhCfGoXTx8T6AoYXGdinmKVgGFpqn9rOUTMVqnNJ10JH89RagDNBkwHuOmCjWzVMrJToKIMedDo2xlUsBmo82kr0uTOjRhLJLNY572wgoVM4VDEp9xPJBQdP8LMACU3YogjgSdLQAAAABJRU5ErkJggg==","details":"This extension extends your dashboard to fit the screen. It this an experimental extension, and no support for it provided yet."},{"name":"pokes","title":"Pokés","version":"0.12.0","description":"Gotta catch them all!","icon":"data:image/png;base64,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\n","details":"Randomly spawns Pokémon on your dash for you to collect."},{"name":"postarchive","title":"Post Archiver","version":"1.0.6","description":"Never lose a post again.","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4QzczNEU1QzcyODYxMUUzOTE2Nzg1OUU5MDkxNjVGNyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4QzczNEU1QjcyODYxMUUzOTE2Nzg1OUU5MDkxNjVGNyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yjqFuwAAAuNJREFUeNrsWs1vEkEUfzPgB0a82AMno1e1J2ts/KgXjT2YeJGbp95MvBhNPGg8+HXQePBg/CO0xmBIRI3btCYWLY0eCC0fIZFdjCgUkEJhC+u0NOkHdDu7O+1kmnn5nRaW9377fm/evGHR9bcgtGEASYCruRGSGeCbAZAZkBmQRSwzsGRPLhg0XxuO+sfVV+wI8HhsiGUGeETPkgCHVQgZDJ1uAwltOQPiESGhCQBbAlJCvCUk+wDnPiB+EfNoZGLXgPASAtnIOA80bJ8YejBipxNdPvLSt7dvzfV9uw7S3F6bz+vNf2suvokdypS2rIgN+JTyDx0r73R5bdztce8nWHnlq3pfLdnMDG43dquYmYPg9HkmGtDKYyPpu/bCIMC275zOhyPZxw6jJ3IKTA20ADgQIFDSt3KzE04IBOMnyw1wEgPGiyuRPRgGBGLHGx0VSWlh9U66EHcSAAZnGSAo1iGUOGdL+srnnw8deidwDQ4t9XbbKNQ0z449Pu8p+uirem442qs3nbomwE4zuIgxUgyVMD2Bd/Gj1QYwcY2dJ5GgtVCO/fVmkUr6mZuZ0h8mfp0W8UpU5uBj4vSG0aul0Df1KSunzDLQRnom+v3XPZPoZ/Xs+8QgADB0ip5/Ybm1ciG4dHjU5z3TZf9hNAMxj1bWWZ9Or//Z1f5Vp80vxjferbQM+JAc8Pf+3b16t0NsQruRLeuUGx561xgvdOPu6Ng2UYEsL0rqRIf0g5PaM8pfsOp63SW26yhIg0wx9SN7e1n6jYySumhpdad3bbYKdc4+9Iioj3KV0bb0leSBum7tdguuTQq864kaJYiEleTZ+nw+ol77XbG8ttC7dtPPlFanT1IMoamefJXB2IqZDPU2JvFCjc38bvIjFkZKjv/HmrjeRAkxNG4SYngizyADV/oMsTPA0UwzIAIBvK0JgAgETNT1ehKENuHfF3KL/sKQ+ASElxACSUAS2KQWIYb9F2AArvzPhmFrSFwAAAAASUVORK5CYII=","details":"Post Archiver lets you save posts to your XKit.

      Found a good recipe? Think those hotline numbers on that signal boost post might come in handy in the future?

      Click on the save button, then click on the My Archive button on your sidebar anytime to access those posts. You can also name and categorize posts."},{"name":"post_crushes","title":"Post Crushes","version":"2.0.9","description":"Lets you share your Tumblr Crushes","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjY0RDkxMTVCMzFEMTFFMkJGQjZENkUwMjNDREIzNjUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjY0RDkxMTZCMzFEMTFFMkJGQjZENkUwMjNDREIzNjUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3MDQxOUJCNkIzMTkxMUUyQkZCNkQ2RTAyM0NEQjM2NSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyNjREOTExNEIzMUQxMUUyQkZCNkQ2RTAyM0NEQjM2NSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgVv98EAAAbhSURBVHjajJZ7bFVV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","details":"To use this extension, go to the 'Following' page on your dashboard, and click on the 'Post My Crushes' button below your Tumblr Crushes."},{"name":"post_limit_checker","title":"Post Limit Checker","version":"1.0.0","description":"Are you close to the limit?","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMDZEQzlCRTZEMUIxMUUzOUM1NkIzMjQ0OERGQUU5RCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMDZEQzlCRDZEMUIxMUUzOUM1NkIzMjQ0OERGQUU5RCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTE4QkRBRjU5ODYxRUUyRjREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","details":"Shows you how many posts you can make or reblog today."},{"name":"postblock","title":"PostBlock","version":"1.0.2","description":"Block the posts you don't like","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUJCQjBGRjNFNjU5MTFFMkJEMTFFMTAzOUE3MTJBQkUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUJCQjBGRjRFNjU5MTFFMkJEMTFFMTAzOUE3MTJBQkUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1QkJCMEZGMUU2NTkxMUUyQkQxMUUxMDM5QTcxMkFCRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1QkJCMEZGMkU2NTkxMUUyQkQxMUUxMDM5QTcxMkFCRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ppl22eQAAAUGSURBVHjajFbPa11VED735vYm1mg3tVJxof4HKkGpVFqk1EURwRbEjSgWRDdCcVMXhWARtD9ArYtSBVGwQqPQCHaha4Vgrba4qTVNGrVIbTaxeXmemXHmmzk37UsIXnjv3XPeOd/MfPOzOjlxhiWxiH6lhI/gIUm6pY9+kf/LhL+Tbek7dvWk3hdbsLDf1U1dVwBoYk+/gWwyFFPXdt2OAkCBxdFNsO4bIJClHOOCg7UdsY80xIFs2jAk4C1BJF6SlA/Qk+qewmh7VFt2dBdAZJboMbVBuPHdoMXQzALcFXZdDSoVvYwvBhsMRkP5FOYLu/12njnrbwOtO3qcCF+Kk6UHTCVyZTmbeIDbGUjDcYKz2LGYQmlSC9yvnfeKLRTeggLsLiLAsV+IN3jLb4XFIs4YdKbGGUrOGlMxO0hl9yOno28fGB4e2fvqvkD3GBKnJCUHRSwsewPcNgnkusjk2hSOdHP614u6uO+B+6cvXYRsRCRLDfVAUCpqkHuIEINAMuENUfEBBEVEMeKQ+f0jB+u6euvwccSL3pdPP/pgXdvufvZF8zaUyc5UGGZKVIg3RiTUIJh9R0psO7qu+v2lXq/HqTzC58/98OPU9yWr9CCFwZnCx2oDke2bBdK4xkRF93AxUiVJKC7UWbAcPcuJy+AbGe/xCQcRnNC4oxzdIxYRhyzjgktcJHGxRL79ZnJkZP3Ylsfdm3aYw5+wLQGGm4ykiVpRwUvuhJKoHiPlRU58fEr/mrv6166n9+ScFxZumK5c0hLM2xIhrYAN2IhSQPBLF3MFNnWSFOql53enm57940c9nJBL+ptRCuFRJFxtepKJzhZfJu6XCz9/fXqit3ijo+jP36/4S5853fqoFl99eVKxsvmWK2WGwmjYoj7QLVROZKrp/cmHx3q9xfn5a3uee8FR3n1nvCNrQICSdv7clMbgzl3PWAVn5GnB00Vd6iWKGhx89+bNunN26ruZy5fSoMK8YscUvvDT2TOTp6IYeiypttl811AirzfGD/w79shjM9O/6ZHJic8G0GiFBRrxh987off/WVi8Pj/PHkgmJ6Ky8YqJUuaC5OGxR09/8Xm/35+7MjNISBoUcOjg/u79lX0HkCqoGgpb2fka3dH8TFyaUt1u2bo9rfbISopupcujG4S7l6lOyA8jjH1Hcqat23bUQ0OrIEheAx/xSlabvI3YimsqlcEz233e3ja67Ymdq+m4lgHi3Sk5R1F46uQMlV6MLkSZ8o4nn9p416YVLl1LgpoeDd7rW/5X32tyD1izoRhT4Mmlpf7el1+7c8OGgahf2wK0DEY9jWJQS/QG1NwyFGnnzSTt+ttff2P8wYfG2rb9PwKST0TMGj5V8r6YqjePHE/oDBIdwmsbCknmoaH6jtHR4Xad59js7B/33rMpeiSVMcxLfZLpy7O8PMBE220k5jrA+0EJV+hvn/rXrv8tPq0gDWfnrpKVG0QGqm9JLk6lJ0dvhfQGqpXiHHK9IfsAw93I4KNJQmuRm/pNDIH6d1ZGKrffKUC55pg3JBLBpwqKuQ7DjpcELk0tNKxcNa7KDBX9vwxgGEOl8Zps9nMXYBgRGYXdG2cMbyjwzMVGu1DFaNFVnDLhxdxCOpuaKpqh4iOtrkxWFUOJQVTBbzfvlPkqerOHYIqmGO0P6JiLYqIBrP6NIdFdHg5P4fGYl2A7iEcPk64EdrOX16Sw/D8BBgAd8iES5BLqkgAAAABJRU5ErkJggg==","details":"This extension lets you blocks posts you don't like on your dashboard. When you block a post, it will be hidden completely, including reblogs of it.

      Tip: hold down ALT to skip the blocking confirmation!"},{"name":"profiler","title":"Profiler","version":"1.2.6","description":"The User Inspection Gadget","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkQzMUIxMzgxQjM2MTFFM0EzRUJBOUI0RDFFQjc1RUQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkQzMUIxMzkxQjM2MTFFM0EzRUJBOUI0RDFFQjc1RUQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5Mzk1NzY3RjFCMjYxMUUzQTNFQkE5QjREMUVCNzVFRCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5Mzk1NzY4MDFCMjYxMUUzQTNFQkE5QjREMUVCNzVFRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsYvGsQAAAQ/SURBVHjafJYpTzRBEIZ3huG+b8KNQACOIJA4BAYwKCS/AIFEIEkw/ACCwKBIgASDQGBIcByKIyEQ7jvcx/fsvkvRzOx+JXp6qquqq6rfqu5ga2vL8zzf9xljsZiXoK+vL/1C3wmCo18mn5+fjGLqF5KYlt7f343py7qUvR+Cw5ptySiOK2OK9vv9Q+ZZXNH7S7aTKbujqy8TYtrcLJhW4BpNqamls7Oz09NTouaXsaqqqrKyMuSWSNmWLukKLEbLiRvg+fn5/Pz8+vo6EzsnZb+ioqK7u7uvr6+srMyC0JLrtLezs5ORkeFuoPnT09PMzMzCwkJWVlZOTg5jEATKGyY+Pj7e3t5eXl4Ye3t7BwcHc3Nz7cw/EqS5t7u7a6dq2+7t7U1OTh4fHxcWFpaUlDBmZ2fLD3mK5uvr68PDw+3tLSMZGxkZqa+v1xLExprHIzBIKLr9/f2xsTEmZJnwCwoKcB/rsb8kK4+Pj9fX1xcXF/yOjo5qD9wHqZr4lnFZR2FqaoqcNDU1IV1eXk7sUesQTJYQQAzhvLy82dlZEpt03POEiEAno7wTxNzc3N3dXUNDQ2lpKY6HEEKusXhycrK8vGyYwTTHk5mZeXR0tLS0NDAwoHNKCmimDQDi6upqTU0N1kl6yDrxwmck44wu3hFmCcWNjQ0yZhWHcV8flfXi4qLyju/RnDw/P3PsTIAA89AqKiiivra2pkYifhDf5KdVbG9vI0RmQ76LOLfx8fGrqyustLa2hlZRQRH1g4ODb4cCO5PLy0sCBzO2n0v9/f3gVeECs5WVlagMiqhfJ0jCcaa1RqAG3lMmh42Li4utjhobGznSWCpCHSMUh9W2b2r8q5rSZV8VJHnSlXID1IUOq7jfDWCltK7sT0xMDA0NWSegxGJpCCP39/d2YQTy3b0AokRCSBFGzRW3aUdPoqioyNAfWNXBTacDPCg9yhvf/29dxFErMXEUWcmxAQspFShUjo7uZoH/xzp+YEeBJlNkuMRN2kBKtZ6eHjywCIaHhykI6jYqSZ3b3RBH0adD7e3tOpIoTLFugJZrIN1tGNZim5ubFeLvBu8JQjo/P5/llDAlMm0gFDE5PDyMNgzaETBFQMLJVqHjhsvY1tZ2c3ND0w7BdHp6mkr87ZG+X11dHWoYwkLoVZCEqV3TTDo6OjY3N93wBVP3eAE7HLee4bS0tMAJvaOCKCTQ7OrqovFxF7qu4bJ7rdIV4OtXuWV0+2gyAvdfbzo43CGdnZ00Ne4Qg2k6XJL3uro6IjBTf9q1mwq3mJkQcm1tLV2IRssDImSXw6Q5E5YSZQVoSFPaAw7QHjz2HLI7D9+5bwn/JUEmg3VSFEq3dVCDbHwDsxV67bp9CQHM4alhwSrOtW6ZsTqIu+hWlvsOdN+wblhqXJYHc9aeEa5u8lXhempPKyHPfbWro1gFGb71m65B/RNgAE6EQ+bxcXjIAAAAAElFTkSuQmCC","details":"Select Profiler option from the User Menu to see information such as when they started blogging, how many posts they have, timezone, and more.

      Requires User Menus+ to be installed."},{"name":"quick_tags","title":"Quick Tags","version":"0.6.9","description":"Quickly add tags to posts","icon":" data:image/png;base64,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\n","details":"Allows you to create tag bundles and add tags to posts without leaving the dashboard."},{"name":"read_more_now","title":"Read More Now","version":"2.0.3","description":"Read Mores in your dash","icon":"data:image/png;base64,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\n","details":"This extension allows you to read "Keep Reading" posts without leaving your dash. Just click on the "Read More Now!" button on posts and XKit will automatically load and display the post on your dashboard."},{"name":"read_posts","title":"Read Posts","version":"0.2.4","description":"Dim old posts","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTlBRjlCQkZFRUU0MTFFMjlDQzREN0VDNzIxQUU5MkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTlBRjlCQzBFRUU0MTFFMjlDQzREN0VDNzIxQUU5MkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5OUFGOUJCREVFRTQxMUUyOUNDNEQ3RUM3MjFBRTkyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5OUFGOUJCRUVFRTQxMUUyOUNDNEQ3RUM3MjFBRTkyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pg6tMywAAASvSURBVHjarFbPa11VEJ5z7q1gW/oiQqEuTMCqiIJBXChdJIjgwk0WdZ+dKyH4DyRZ6TLxDyhxKSgJiCguTIIiCCJxIRSibSxawdULiKjvnhm/b+a8xyO9CUI8ae87P+bMfPPjzEx659bHKYkVs2SqYvhTrrBQk4KPaSlqyu2uiFjXabKudNZxsxQQa4cr/r9gD1uCS05vrQhuJnyw4exBQSHgjI2Eff4K94RLguAOIEj9OJy4KFKCCScgF2nVwUIA1+YX+ZGUEq/hIgXiF+jUT5ODCVVDdh1GjKkQgjoiGqQVGoG3nInf4ITIY0VIxTkblfWpOHIdy+CMepAprcHrkrRQSlucnegYul9WDbGuQodLdENAEA3TkC95lhBEnQHGMVBreCWYtS7dbQSh4QN36PiHzofuOGMQuNxOKxg3EMSUwGKSCVtperc32bU0mViFBaiMHR2DMrdIWEs7d204QihGqsnc/sSuHnQZ7BIvcVtpInH1IOSxq4Mb8089OrgcQWNWg0em5nVSjR1xFASc3P99+OlX3/5weM8DMExEWzD8rl0dvHnz1abJco7xxOPXbrzw9Nvv3jq8+xtdJ5ZD/1FXXnru+jm5x8g5v/HaywgKTfR36+EhXTd65MrFM67t7+9vbGwMh0PMZ2ZmVlZWFhYWTiO+cukinJOl4UNjjlAI6NSsl/r4+Hh5eXlnZ2d6E8ulpaWtra3BYNB3SRkNmmGcbJ49Im56uS8uLp7gPpGBIxA8eBSPNd57RmwhJzG++iQA5sHBAb6Yz83NTR9BrclRj4yCMOJfRlZk8is9Gqyvr+/t7c3Pz8MUWGI+zW5tbQ1H2ARZnxIamSQXDg8l6fcBXApDwxrgCN/GJpazs7M4Os3PnqDxOhGmTDyQ0KPB6uoqGAVGWPzo6AjL4I5l6Ic5yE5y95E8ZbRdxyRTRv0+CE8CO+a7u7uT/c3NzTBRr/8jjNSzSxt5r6TSayEYBzDhT7CDJ8IHoc2ZYSp5XJ/gZCRk479TfAAW29vb4e0DH+FbbJ7GnYXNygjG8YeGTJQj950xFnz894SBd5Aa6tDS0yy0o8lD/vCTL05Q33z9lV4uE0oQxLxSWgLgBjUEPsAjQ/1Fu4BsIf/T+GfURc3JqAdRBVGIDu/ef/6Z62fgfXBMU07Pb//0M4ojKyBSBdqajlrYB599+ePRL+eHf+fer+9/9LkXOBQ3ti2eNbL9+dffb62/9+KzTw4uXxJvY8blzGpgCwtImlQvi8ZpTORjePzH19/d1nyhaS+YNwEtmxk2LTnLQyWlb76/E7We3FRqr6HJH3rydqSU0USIJ4Sg8gKZUm7IvbVo0gwFR6PMKn3SNrl5WGrDyHSV2RehrbAmOaOo6tnbj5AXXZS3DqBLwFl3a+C3tVWMfgZSMvg2iVhSasyvKbOK5jgGgfdpmZiU2T5z1ZjjmFiTM+8N2+lMSrsXb0eT35faq6FFcRfIpM3wYqI21t2bIK1ZyJXxvoiTlvyxRCeTXbdwgHQVDh5kbEenaTkFQ6mYrD5bBkwJI7j7c+RStC21ySKDpJHBk3fC1XcW7GAmKpUULXBybxr30qQvqi3oZKlVoX8FGAB4yKy0qIHfjAAAAABJRU5ErkJggg==","details":"Dims the posts on the dashboard that you've already seen on previous page loads."},{"name":"better_reblogs","title":"Reblog Display Options","version":"1.3.6","description":"Adds different styles to the new reblog layout, including the \"classic\" nested look.","icon":"data:image/jpeg;base64,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ZWN0UmlnaHRsb25nAAAAAAAAAAtjcm9wUmVjdFRvcGxvbmcAAAAAADhCSU0D7QAAAAAAEAAgAAAAAQABACAAAAABAAE4QklNBCYAAAAAAA4AAAAAAAAAAAAAP4AAADhCSU0EDQAAAAAABAAAAB44QklNBBkAAAAAAAQAAAAeOEJJTQPzAAAAAAAJAAAAAAAAAAABADhCSU0nEAAAAAAACgABAAAAAAAAAAE4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA/gAAAAAAHAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAOEJJTQQAAAAAAAACAAA4QklNBAIAAAAAAAIAADhCSU0EMAAAAAAAAQEAOEJJTQQtAAAAAAAGAAEAAAADOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA1sAAAAGAAAAAAAAAAAAAAAgAAAAIAAAABMAMgAwADEANQAtADAAOQAtADAAMgBfADEANwAtADIAMgAtADUAOAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAACAAAAAAUmdodGxvbmcAAAAgAAAABnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5cGUA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MS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxNS0wOS0wMlQxNzoyMjo1OC0wNTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMTUtMDktMDJUMTc6MjY6MzctMDU6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTUtMDktMDJUMTc6MjY6MzctMDU6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvanBlZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplNjZkNDMyZC0yZGI5LWQ4NDUtOGFkMy1kNTcwZTBmNDc0NDYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzRhZmEyNTUtZmY0Ny1jMjQ1LTg5NjMtNTE0NGY5MmM2MzQ2IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MzRhZmEyNTUtZmY0Ny1jMjQ1LTg5NjMtNTE0NGY5MmM2MzQ2Ij4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozNGFmYTI1NS1mZjQ3LWMyNDUtODk2My01MTQ0ZjkyYzYzNDYiIHN0RXZ0OndoZW49IjIwMTUtMDktMDJUMTc6MjI6NTgtMDU6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBpbWFnZS9wbmcgdG8gaW1hZ2UvanBlZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZTY2ZDQzMmQtMmRiOS1kODQ1LThhZDMtZDU3MGUwZjQ3NDQ2IiBzdEV2dDp3aGVuPSIyMDE1LTA5LTAyVDE3OjI2OjM3LTA1OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+/+4ADkFkb2JlAGRAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQEBAQEBAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAIAAgAwERAAIRAQMRAf/dAAQABP/EAaIAAAAGAgMBAAAAAAAAAAAAAAcIBgUECQMKAgEACwEAAAYDAQEBAAAAAAAAAAAABgUEAwcCCAEJAAoLEAACAQMEAQMDAgMDAwIGCXUBAgMEEQUSBiEHEyIACDEUQTIjFQlRQhZhJDMXUnGBGGKRJUOhsfAmNHIKGcHRNSfhUzaC8ZKiRFRzRUY3R2MoVVZXGrLC0uLyZIN0k4Rlo7PD0+MpOGbzdSo5OkhJSlhZWmdoaWp2d3h5eoWGh4iJipSVlpeYmZqkpaanqKmqtLW2t7i5usTFxsfIycrU1dbX2Nna5OXm5+jp6vT19vf4+foRAAIBAwIEBAMFBAQEBgYFbQECAxEEIRIFMQYAIhNBUQcyYRRxCEKBI5EVUqFiFjMJsSTB0UNy8BfhgjQlklMYY0TxorImNRlUNkVkJwpzg5NGdMLS4vJVZXVWN4SFo7PD0+PzKRqUpLTE1OT0laW1xdXl9ShHV2Y4doaWprbG1ub2Z3eHl6e3x9fn90hYaHiImKi4yNjo+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8Av5kllEjjzSmzsLmRiTZjyTfkn38rEk84kkHjv8R/EfXoI1Pr1w803/HWT/ktv+K+6ePP/v5/2nr1T69dCeUgETOQfoRIxB/1iDb3oXMxAK3DEf6Y/wCfr1T69d+aX/jrJ/yW3/Ffe/Hn/wB/P+09aqfXr//Qv2l/zsn/AC0f/oY+/lUm/tZf9Mf8PQQ6FzrXobffcGGy+Y2fkcDQQYrIyYeZcuKgzmuSmiqfLF4ZFUQBZ1tcG5v7yB9mPuwe5Hv7sG+cw8jbrttvZWN6bSRbkuJDKqLIWQqdIXS66SynNeI6URWk9yjtCygjGfXoRPkF8fMj1tRYfemDpI32zPi8XR7wo6IyPFt3cSU0UFTmIDI7yHCZaqvruSYZCD9Db3LP3rfuo7n7P7bsXuJyxt6nk6Sztot0iiLMtjfCNUkul1En6S5krqz+lIR5MB0/d2bQBZAP0yBWnkfUfI9Fb94Q9IOv/9G/aX/Oyf8ALR/+hj7+VSb+1l/0x/w9BDoUOv8Au/sbqjD5TD7FfBrT5Suly04y1B93IcjJTxUwKSak0waIE9J4Bufz7m32o+8p7t+xmx7xy/7bSbathfXTXUn1MHiv47IsdVNRRdKLRTgGvr0/FdT26OsJGc59el73v3/mO0oMLtfGVjw7Ux2NxlRuGSnRqQbq3R9vG9bHJAeUwWLqr+OM/wCdlsx4UH3KX3nvvVb572WnL/JOy7gyckWlpbvfMimIbluIRWlDJxFnby18OM4kejEHSpDt3dvcaIw36QAr82/zD+fRbveHnSPr/9K/mSKUyORFLy7HmNgeWP1FuD7+ViSCcySEQP8AEfwn16CND6dcPDN/xyk/5Ib/AIp7p9PP/vl/2H/N16h9OveGX/jlJ/1Lb/inv308/wDvh/8AeT/m61Q+nXvDL/xyk/5Ib/inv3gT/wC+X/YevUPp1//Z\n"},{"name":"retags","title":"Retags","version":"1.2.9","description":"Adds tags to reblog notes","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDA5QTFGNzNEOEYzMTFFM0ExRkJBMjU3NUY4MjNFRjciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDA5QTFGNzREOEYzMTFFM0ExRkJBMjU3NUY4MjNFRjciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowMDlBMUY3MUQ4RjMxMUUzQTFGQkEyNTc1RjgyM0VGNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowMDlBMUY3MkQ4RjMxMUUzQTFGQkEyNTc1RjgyM0VGNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpAlVCQAAAVxSURBVHja7Fp7bFNVGP/d29LHxgZ7m73kpRKjqP9ojAmwIEYFQYn/zUQji8ZHopigxgQFQggiOBOYomhiovuDDCMxIWqMMZj4py+CL/Zoe1v2hjHZuq5bW8937+2aQe+95z7aroaTk5umPff7ft/7O+dUOONJoZiHG2JR4y92+MwCgoDrLlRYAdzFLkCxu5CA/2kM3BuEq8wiUel9SLsK7UKW0bPR/Dy8DejeXsxZqG4rmGq623JfyFgdyDodkGELbv4YWvSdmrmtA7Vb6Nn9bE5dyJVbE5MMzJeeWxh1YPwXBPZi8mcZ2VNY8RpcizlkeCSHMrgFbguM/4o/ttEH5ZWRzxA9hzu+5LPDZnr2vJiLblRE9nnNCO67es3k7xg+ze1Lm7GqA5rsrE4TFoiexbWLx75H7SZuGTZR3uh5qUAulHWlr8kcv5qHKR56dxTChWpasyyraDHNsuYhrGwvhAstewXRv8mR5kbjDpTfaUVtTAbmS70785tGXaW4vROj3+DSD/A1YOlai+iVUf0gPXtftR8DbtOMFd72B9ER0fd6MW8pqx+gZ98beclCOZUhsKs4LZCRQUDgzbzEQK5k2Eh5KbCnmDf1VffLvrTX7IZGRNY5/FVhZFj+FrQgZZ2aFgi3U+Kv2pB3GTakG0f7MRA6QCJWthRABsY3uN+JLBQ8QM/8y6BwVLjbrQOhdyjHVa43phUfxpWzmPgTi29VI9KuDAJCB50oZNJhWYZ1emv6P8fwifQm4Ttc/BpNL8PfZE+G9cRXOmStnZ4/pXdx6Uc93Q93zVsf7UHkQyd8aR2ad+oBE357zMQVk381vHXZf7p8hp4VG1G2hqSFTLV0DVbtdkCMoS8w2KnlQmZaidh5mtn3awqdGVTch1QckQ55F3oOPbvR2AZfoy0BfMuhhZMqgYMzOavGX8ML6jdsDxQ+bgv9lITwUU2Oeq2EfwVq2Dbcq/qD4Ugl4KlO5/IWIhw5Tu9OncfYT2QZK+jD6NuD5BS0cOoVsrrHUX6XrTwoeBA5JvtStxUBGPrAPiTj0AGpZwH7jaqnStVcfNQ8+ggC+5HQ1r2JdjqVxPQQUtNGt7JJOmmc86LJf+imQ6Ffutoc+lgEwbeRnDZWom47nf5pZgx9zJQxY8bl96D5GRl9N6QOJCaJiHsJKteaQX8BgYNIRMHT6nNVYiWFca2UWUb7EP6ABFZeSc3AXW4CffBQ5l2Ogy0BelMeE3+RFxmslKerhBAw9Ez3Ygn8K+lLFoWsQeJFfzite76pFwOKDlgHMdQlG4Gj5MXCkI4RAtFD9YtFTkxSbcI6PIN3+xFq5/J73krMflLQUxTehPhFzF42IDd9QTarGze0ouw2yoMKfZfPGL30noze5CGDXgyMfoupXrJDyS2ofwKhIxCucBGtfRRL71ZDQqWvCys2AOmInO/Nn/HobWimAsTYvwwNT0L0ITXL++cW9komj4nzElp29EdJ99YOeAyykK8JjU9TaDIGzK3FRVx5IQM3bQEtx5gepIhPWdK9sQW89aR75RZMWITG7dTtcKTSTC3LOI+QHT2LeMu6Nw7ipjY6mJgLaE+NaerKyYem7j+i6i7YOxrUs0B8BP5Se81QUtXuVZmRoWeNqk3dGwvQ30nJx3+j2g6xjE5xzHmSJ2L2X9rjK/QVIhn0nyARd+b/bnpBnJzBwAmSwVdP7cBAl9zbmPUimT6rIb4GGf0QIp8SZadOxQ3OhRIxWYZWeGspC1Fza21Tewqz47SfHjxF+d7BI3G3aKSJZBRDJ1G3jUqBOGGd01j6UEN09EaCa1PPlDdy2oGMkYvBe8GhbqkWoABCsf/tsuB3ZHlyoQVsgesuVNjxnwADACKdjtGZRJ7nAAAAAElFTkSuQmCC"},{"name":"satsukimous","title":"Satsukimous","version":"1.2.4","description":"Customize how anons appear","icon":"data:image/png;base64,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\n","details":"This extension is a prime example of what happens when you let JavaScript developers stay up past midnight."},{"name":"scroll_to_bottom","title":"Scroll To Bottom","version":"1.1.1","description":"Scroll to the bottom of long lists, like the post queue.","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM1RTQzNzlEQjU4MTFFMkE1MTFCRjUyRUI1RjRGQUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM1RTQzN0FEQjU4MTFFMkE1MTFCRjUyRUI1RjRGQUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzVFNDM3N0RCNTgxMUUyQTUxMUJGNTJFQjVGNEZBQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzVFNDM3OERCNTgxMUUyQTUxMUJGNTJFQjVGNEZBQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrjNso8AAASVSURBVHjalFZNaF1FFJ6Z+2pfQk3TanAnmkVbq0YUkaIFUbSoRCxYpdhNUdBaF+I/uHfp0r0uXYorEVy4cqGLimTRVhD8oZimVqqP3HtnzvH8zdx5eUnAYfJyZ+be75zznb/xk18/dr5xNLynP+cSPyM6BOcA+YF2QHY6pE2MNJE2MaGj556XqXdA70eeQM901BEKfRIMjn8dg6LnSQtvMp0LcgYi3oanE4+ynzf5f8rPChv0Yz0cPrYdljS9402gvMzoXr/CjGhotKGSSCc3kn+hrPMwirLuClOg69dctQNT+rEYGNkBsWRa4ECaK78iRh2gkPwC/YGdQipS8qYZNBLocijUsz9VcVCgTz699NW3f0xz6E4cP/D6SwdNFmPFwVyEgSJkY1LlarVa0E198M28mxmhWTDTDavSkvmxHaKIQqrhqPGRFUELBjRyFQLdNgPLywKXxOIoyy1OVjCkGBFaB0TIX+4Ej0wQBb6Aovm2foecTAkSdNdzHhXH4u7q61sxB0VCk5hkMwceeKbIQZD4gyEKGTflYC1Bta0ZSXSPhj4ELT1HOh7leHc517LKaOGLKmkbcC0kUMVzrCzuNZpHCNH7YkGtWoZG2NnJiX3GPigW1w4nztnJUQjwlREldbU0xR1dwCoXVoUlF3NoiDEe/D+X3+LotFJaHOC//ObPL75eV6Ab/8Jmu1XMeG+zL6fHYw81p09IPovuznW8SGRcCihekqrbaSkWLfrVJ44s3Xpg/VpHcxadxmabrv7Fc25u/oVnDoluvaCzEQjKOcUPF/eexMjs7Rmii7+/f/6B/Qtzbtcx3jv68PxKEy+zfrnkEfuAvRjkAvJa0SP7k3oFqKRucfzz2+eO7S7gjbP33bZvzUGXPSfqD5FJ7FMMJG1DEYF6lnJFYgBit7J89dTq3TuhP/Xoncfv2cD+bw1K7WhA9BDtIBUJMRAbrC/oBF7KVK9gv3Hm2YWjh5Zm0ZdvX3z51CK0v2R0zSyGl+ptARnYOiUHc1N11nh5QoubF9999ej+m8dbqP/g3F1N+6NlL7u459RJwBxwwCtLMVi6s74twQlXrSylm/OIi3vW3nnt/lrAm6+sLI1/yo4lnVomnvVP1tW5IXfiA8IV0q3PiCmKK27veQmTe+/47fRzRxR99fHlY4evYLqeEzjyF4mc1jko1dSCapTpw1LghaKqS4vJ0F558cnDaxeXJpP+7Ml5aC/lrzoAb+0TXVXko7Y5f/3C03pjsEzGoQ5MlSCWFW+4B/s+HNzzHStItvpIqQp6cQKcRofccLhIC64v6FjdELAUL1oshAtu7DFt0hKkNYI2AKyLWKzqJjUc9kEhJJSK9Px7OHUpck3F7Dbp/flHG/lUyVEZaZS1C9moIqxx/290lRH5F8kHPzw8eNtrNlBxdTfdcrJuZKWtcDAOHakcYrv+WaV47uTUbK59/4j34KubG/ANwx6cXbIA9QJh/auOxcJ7PXrLXAgjDl676AYpUi6EJqV8k8A03emKyjFftrbcOcEqRxpudjlcLOm5U8zcNevYhUz37I12UtlnF+H/BBgAVcmqJdaUAfQAAAAASUVORK5CYII="},{"name":"search_likes","title":"Search Likes","version":"0.3.3","description":"Lets you search likes","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxRUEzMUE4MDQ5ODkxMUUzOEY0QUFCOTZENUUwMDJFRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxRUEzMUE3RjQ5ODkxMUUzOEY0QUFCOTZENUUwMDJFRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","details":"This is a very experimental extension that lets you search the posts you've liked by URL or text. Just go to your likes page, then click on Search button to get started."},{"name":"servant","title":"Servant","version":"0.6.1","description":"XKit Personal Assistant","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NTkwODBENDRFNDgxMUUzQTZERkRFMDgxOTFGQ0Q4MSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NTkwODBEMzRFNDgxMUUzQTZERkRFMDgxOTFGQ0Q4MSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+mn9SrQAABKhJREFUeNrsWk2IHEUUfq+qu2d2w6zubIKSgwRj0AUPIiSCZyXoyVMOelDwFs8iqHc9ePEQEE+elJBDSAKBRfDi1V+MgSAYWF3zY0hmnd3Nzkx3PWtmZ2Znuqtrqqqr2WlIMzRD9+tX79X7+97rxhM/dKHKR4BQ7YNVXP7qWyAAIAAcnLPH5HUcUYKWWMMKZnGYXFFPNmkB1NBR5r+Go56AVDydyR7FwDwpcHAaNEJ4ucHX7idVTaOxgA+OsteavKALHZgJaBCpnz7Fb/folza5McHnf/YPJRoBfX4sXOCzrX+8jjWEf2N664/erQ7OiwLNCL5bDbmNPD9t09mb8XbsEsTkXQFE7BAs2ijw4iF8Y4V9fTdxiIG5ONY7sNYS6BLEJeShFMu7PdroKnIFY/BcHSOEhODjjfhBTA7CBGXk0VRtudIS524rfCNkcPFEdDSCr+4l17aFmyTShWgaaZEW0oEBCCOcQn59g6AKosksdYjTrzvw5Z0YjRChQpiA4UwIZRLlUxzY9CNyBYYKVjXE9S58+FdPpAnIYKEyoYSUZpHt840YKleRHv/JP7EsAkVkwFPXdr0rUGPw6hLnA7mkIjd2xfUdUVL6wpd+3zV08zlFoxyqfcg0WjQIQuxDGpskS/djuOMJwXgI4ici/OKYHfK53BKf3Yo9WcBHFhKDpG6bqeZFAYYuCcCbAmhdetOzFqeWiHD2iAVMhjdKLEQ5NRAHq6ZnLQ4K4BDwkXKJ0UJGwxsLOJ3HlGWuS3S53qVktFHLHFam10FQK43DHbGwScALw1GW4dAW9P7fvR0xlONMM3hnhafgKme+gtg3+p/c5jyPRH/jEJmFsLAClGUhy8KYM1cq4AlFemgplQmxS/sWiElnn4N3oawoi4jvHeG9UcI4XmclupCHIM5oEDF4ZYnrdZ6jIEZ7b5ZPeAzioiy4k9d5hBJilAyFXe7p0/fPDrs5KGRCz9Zg9WFDw2YldH0BYHIPQsvtlFHNc5djZsKwcT9QtJfcFnD+QWzlSDe74GukGfDCvviQ4Op/1jNN7i8GKt4T8xI0kO50eNCr7iF36WNtUdbQo1AdaHBsJ6S8/tGTYX1UH9baycVWPHcWOLkQPB7Qt+1EaYEIccw59Ofxahzg8GsGeKbJGKrvsn6Sp8m077aKyS/g6NIQvt0MGwx3BSgf79BUD9BHPqW9zXXJQq8v8Wdr/edeWGDLKueoMQgmQCoWAM8zZ57SAmRDD09H7PQIaa7W2WrdSAg+HOLvTTGA3Iex2fcDinu6aceby4ED5GBT0wR0miQppcI8NEqZIczw/GeXDlv6HQ7bS1KOlYw3O7W5e3cpFcSY82f/fGkzbvLwmdrQJ8jMvwcuhKoeDi27vbRU1v4gUeyFzfjsSvAYx++3kh8fipmDrR0hyvskw6USbyX0TSt5t8m3BN2LySQcy1TAKcNt9MSlTaijt8bqAFrK3zoCYB4UqDqcrrwCXJ2hDWuz5llUlRS3iqv7lFM29dnX9Jh5d4/Gn0uOiSmHAC1f/UP+xwc0DmKNupgjn1JK0GAQV03y7IwjBRTq6qUhAynBco8NKRVyBgyr3db/L8AA9YdwpolZBTYAAAAASUVORK5CYII=","details":"Automator for XKit: lets you create little Servants that does tasks for you when the conditions you've set are met."},{"name":"shorten_posts","title":"Shorten Posts","version":"0.2.4","description":"Makes scrolling easier","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NENCNERBRkJEMTQ1MTFFMkIzMzlFNEI5QzIwNDI2MDAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NENCNERBRkNEMTQ1MTFFMkIzMzlFNEI5QzIwNDI2MDAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0Q0I0REFGOUQxNDUxMUUyQjMzOUU0QjlDMjA0MjYwMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0Q0I0REFGQUQxNDUxMUUyQjMzOUU0QjlDMjA0MjYwMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgyxgMQAAAaESURBVHjafFZbbJRF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","details":"This extension shortens long posts, so if you are interested, you can just click on Show Full Post button to see it all, or scroll down if you are not interested. Useful for screens where long posts take a lot of space, and making it hard to scroll down.

      By default, this extension shortens text posts. You can toggle settings to choose which types of posts to shorten. (This will 'cut off' long, vertical posts.)"},{"name":"show_originals","title":"Show Originals","version":"1.2.5","description":"Only shows non-reblogged posts","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTlBN0RBRkQyOTQyMTFFM0E1NkY5OEM5REU2MzAwMzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTlBN0RBRkUyOTQyMTFFM0E1NkY5OEM5REU2MzAwMzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1OUE3REFGQjI5NDIxMUUzQTU2Rjk4QzlERTYzMDAzOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1OUE3REFGQzI5NDIxMUUzQTU2Rjk4QzlERTYzMDAzOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsjNHvgAAAbzSURBVHjaZFZLb5VV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","details":"This is a really experimental extension allows you see original (non-reblogged) posts made by users on your dashboard. Please keep in mind that if you don't have enough people creating new posts on your dashboard, it might slow down your computer."},{"name":"show_picture_size","title":"Show Picture Size","version":"1.0.3","description":"Shows the resolution of media post pictures in the upper right corner of the picture"},{"name":"transparent_img_hover","title":"Show transparency","version":"1.0.1","description":"Makes the backgrounds of images blue when you hover over them so you can see transparency without dragging the image.","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIxJREFUeNrs2cENgCAMAEAwLqF76DhM4CCuIZM6gAmRiA/I9Vv6uNCkNMSwbKHnmELnAQAAAAAAAAAA0HHMVaev8yhkU0qFbM75fWFcdy0EAAAAAGASN5u1H2u1EAAAAADAqIBY9cX00078rLUTAwAAAADYie3EWghgvOe0GwAAAAAAAAAAAGgZtwADAMlbGW4WhitaAAAAAElFTkSuQmCC\n"},{"name":"titles","title":"Tab titles","version":"1.0.1","description":"Descriptive tab titles, rather than just “Tumblr”","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZBJREFUeNrs2r1Kw1AUB/Bz0tzcpklKERyKi1AHBREXJ1fByUHwCfoOzj5AfQFdFNyKDuLH6Aso+FEQOwkdAj5AbG9tuaYOTmloSy4Y/J81yc35He4XuWGqblCew6KcBwAAAAAAAP8bYM/ykNb02SVtJiNhU1GOXmEKoLUQYmtnsygdE/m/d8Kn51eyJ02Mp94LDYaVuUrn4SrwSyYAJ83ren2fyoHBMaC1juIuZCaU6hMzZiEAADAJYOZy4BlKyHWnWARmWgcs7ip10Dj2PTd5jup/7e1ury7XxjVwcXPXenljRySW5j5eBKQ0CrBUTx02jsbWKYpqS4spgLPz28vTJnl+8uUY5hZNrsQ/haKULmRZQqQ1W4rzCwLyvbStCgYxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQOwDnHeAkfTr/jUKhkGmxMv/lbDhcX1tZqM7rpI/MzPzYaofhB2XEMABgpp6iwWDsDVKOjuN1Nif9dvYdKM5MOpR+jq/1nx4DmEYBAAAAAAAAYML4FmAAcbFbUUX/O/UAAAAASUVORK5CYII=\n"},{"name":"tag_replacer","title":"Tag Replacer","version":"1.0.3","description":"Replace old tags!","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2OTQ0NzNGNDU3NzkxMUUzODM5QzhFMjcwMUMyMERGNiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2OTQ0NzNGMzU3NzkxMUUzODM5QzhFMjcwMUMyMERGNiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","details":"Allows you to bulk replace tags of posts. Go to your Posts page on your dashboard and click on the button on the sidebar and enter the tag you want replaced, and the new tag, and Tag Replacer will take care of the rest."},{"name":"classic_tags","title":"Tag Tracking+","version":"1.6.12","description":"Shows your tracked tags on your sidebar","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRUZGRjZFNTM4QzYxMUUzQTFDQUFDOThEMTlDRUY3OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRUZGRjZFNDM4QzYxMUUzQTFDQUFDOThEMTlDRUY3OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZCN0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+QJeL+wAAAlRJREFUeNrsVktPE1EU/qaPQAoSCXsMGEiMiQuE0vLQKo8YN/4BQdCVLjQhcevCPX/BDStdsCFBbICIKZRCeDYh1No2PIohGlEaZopQ6r3TUefe3hmnJrPS05Nmbufc7+v5zj1nRpooz8NOc8Bm+0/wR3NJTpsJYDeBxIrUc4DvX3B2DMkN5KiEzjIcJRAdxGkGgQSNSb/E5hMaY8WkYA3TBz2fDUNnfTjfjsvD9Poojjm/tSKTDPResPwJ9l4hE2VCW4P4OKLhVjSgLQxur9Dph3HVNp9h4zEWbkPZ1alZha405BTC135yzIPfXuQOyQW9Fywnq9dEvDNWUDe6diAnMR+gS089/LPgEHifqmVqcHOLfp98w+4IqonozQJZSXnfNsJzEb5prR6RbuMiT9cxBDeSlkpHOGYuoaIR3gm6JDkZcThIo+nd6gAoQyAOOYHILU2r1klwUAXnT9HXJascZHMghmwKkV6NwzspOkVcTdb7cbhewiS7HsNxGit3VY4L8E4VFfndldIeOJ1rgh9DV+GshE9FPz1EuNN42HUsm6GHmgxu5JHLaKectIse0/Xr7FvSXRS8OkBBm8e05UofE8ZnYD5hio/Z2n3IMbS8huuctlQ+cBmwe/whM4JwRxH6e3jf0AxoKvegJPg/8fcSRR9BSdJGI+WlZA+Q3RJoyBOYNL2eIP6cwrWMw+lRyR6K0QUEhdY3sgW1b7df4GAOdUO/0ZUUjJQQT1OTDPbHsD9KLz4F6TNu4ymyO6bTdPGOvW92pRX5HyWw/b3IbS/BDwEGAPg3rFrD0wEGAAAAAElFTkSuQmCC"},{"name":"tagviewer","title":"TagViewer","version":"0.5.3","description":"View post tags easily","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTI1MDBGMUNFRTdFMTFFMjlDQzREN0VDNzIxQUU5MkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTlBRjlCQjhFRUU0MTFFMjlDQzREN0VDNzIxQUU5MkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFMjUwMEYxQUVFN0UxMUUyOUNDNEQ3RUM3MjFBRTkyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFMjUwMEYxQkVFN0UxMUUyOUNDNEQ3RUM3MjFBRTkyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pnyif+UAAAZCSURBVHjafFZpbFRV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","details":"This extension allows you to see what tags people added to a post while they reblogged it. It also provides access to the post, and to Tumblr search pages to find similar posts.

      Based on the work of inklesspen"},{"name":"theme_editor","title":"Theme Editor","version":"0.1.7","description":"For theme developers","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTZFNTg0RjlEMjgyMTFFMkJCOTdBNTcwNEE2QzQ3MTgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTZFNTg0RkFEMjgyMTFFMkJCOTdBNTcwNEE2QzQ3MTgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1NkU1ODRGN0QyODIxMUUyQkI5N0E1NzA0QTZDNDcxOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NkU1ODRGOEQyODIxMUUyQkI5N0E1NzA0QTZDNDcxOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pt/I/oMAAAamSURBVHjatFZJbBtV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","details":"If you are good with CSS, hop in and make your own theme.

      When installed, this extension disables the standard Themes extension, and adds a button on your sidebar on your dashboard that lets you write and load your own theme. When you are done, you can submit it to xkit-dev.tumblr.com so it can be added to the theme gallery.

      This extension is not recommended for people without CSS/HTML experience and only provided for XKit theme developers. Please disable Themes and Yoohoo! extensions before using. For better editing, Textarea Code Formatter for Chrome or Tabinta for Firefox is recommended."},{"name":"themes","title":"Themes","version":"0.1.3","description":"Themes for your dashboard","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUY5N0NCN0REMEVGMTFFMkIzMzlFNEI5QzIwNDI2MDAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUY5N0NCN0VEMEVGMTFFMkIzMzlFNEI5QzIwNDI2MDAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFRjk3Q0I3QkQwRUYxMUUyQjMzOUU0QjlDMjA0MjYwMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFRjk3Q0I3Q0QwRUYxMUUyQjMzOUU0QjlDMjA0MjYwMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PubDIKEAAAYcSURBVHjaZFbfi1Vl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","details":"This extension allows you to install themes from the XKit Theme Gallery onto your dashboard. New themes are added regularly, and if you are good with CSS, send an ask to xkit-dev.tumblr.com to get your theme added here!"},{"name":"themes_plus","title":"Themes+ (preview)","version":"0.2.7","description":"Customize More","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBNkFCQjk2QTc0MjkxMUUzOTBFRUJGQkQ2OUI3MkJCMiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBNkFCQjk2OTc0MjkxMUUzOTBFRUJGQkQ2OUI3MkJCMiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","details":"Themes+ lets you customize your dashboard to your liking by letting you choose the colors, the images and options yourself. You can also export and import the themes you and others made. Please note that this is the preview edition, so it's lacking some functionality."},{"name":"timestamps","title":"Timestamps","version":"2.11.5","description":"See when a post has been made.","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzAzOTU1OTQzODVBMTFFM0ExQ0FBQzk4RDE5Q0VGNzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzAzOTU1OTUzODVBMTFFM0ExQ0FBQzk4RDE5Q0VGNzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3MDM5NTU5MjM4NUExMUUzQTFDQUFDOThEMTlDRUY3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3MDM5NTU5MzM4NUExMUUzQTFDQUFDOThEMTlDRUY3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuKAlbAAAASdSURBVHja7FZLbBtlEN7df73e9SN+1HbjJk6a2E3oQ03SKBRSQkkfSlABiRSI1Es4cECVKOUhDsAFCQmpcKDiJYHoCcEBiR4aJKqWAkpbtaWQ5iURt8FJnCapXTu2Y+/au95d5o/bsF7b6SkHJH6PVv53vpn5Z/55LD3qfYVYz0UR67z+N/DARRMkuSaANLX62Z0+bpuXaXCRND6Qmlek2wlhZC47Gs7cmCJUZS0DZGUDTI3H0b/bdriNqXeWch397WI4kRocS3x/LRsMV1KCjto6sRMlBAf3vv+svb8d2bkCFA4u3orKsQzF0iRDY2Eba+qo51rr8xFBDEXK6ikfItOuQM1HzxsDrsI2cyWUvhAUFxJiKApbg9fB1DnNe/zWfU2w5VpqNn343MLbKHV2uEyIx+vf0L1im321nx4xbnHD/3yMj5+6lDwzLM5GdDCDx1H1dJvr6OP0BgtspWh6uu9zMRwpCZHjMa1HyGpyv95j6fIDT5xL3Pngp/g3Q3KKL/Vd4XPC8HR2bNH8aABZjcjMMH5P6sdRQiW0MAp+WjI9HLAdfAi0K4IU+/pSavC6DrBKrpf22ft281eDi+8NwvWAiHXvFvMjTSRVpJMiqCKyPNFE2fCtLv96M3n6Dx13lVwvH9z4Tq/7tf202758YSx9cYqQsQ3Hi50EjbRIiiwmrtWHj58Sls9OqEKOLAGQWPsB9/FugMVPXYZAwZv4V0PgMXZiTyPiGC2Yxna0V+e1wTMXiueCizoW43M5Bjrp6irQQhpQ5MR5qAA1LwNMGJm5lzOsgQl4sxNhTaGhojRFDhwfKbIsx9OYRZLOgS5ul69gm91aXYBFTpxb+vYy1PB9cTU7sQA1QVAkspu0OvUekGilGUiyqig4gma26snt7HavFqMKUvpiUFVUrSykKaHiBAK+9j1d0Li6FF6kTAyyssjKyZJM5OXoyZ+NzV41K1m6m82dDYBJnBmVlzI6QWOjC46Pj2hAWhZNFONAEWFiDDV2Q61TTvKqqvJ/TgujYXAoPTRJe6oAL83GFEHUClIW1rCpqtAU5ASvZdEkZJVmQXFxTjNT5+B21OYmF/4NHUWBJBYubIulLN1bKdaAA5DJ5ReTWi6F/dIQPxxekacsewO0167jViJ7XxtpNBSqR5HyWhbcOtISdHk5nsEtrM1nP9yu45Ylz5u9OLtWEifx3e9ksU50rLFHW9ny3TRpYbmdNXBRbJOHZJncxG0QrtQw3K8esD21Ay4Wa//hRuaXv3RgdMzfW+QvJNx8kmlwQ9ZDKOFobEudtJDMx9K6sEBrq373kKUrUJgN2WAk+vF5BXKkGEbe6jlZ0sIJg2+D5/h+dttKWanQ+ERxdom/PqMks7hBWhlTx2bGZ6dMxkJk5KQw/9ZpceZumXkwdeiTcpOYQE6Lc6CzMFLuTzQZt+IVrjZP+Cuh6Be/QeXf4+oNPPNZxXlPI661znGkw+h3lQXkbkaSg+P81b9xWVQc+sUZrVvCyGx2fA7qi2upZZo20g4TySAxFJPmE9nJO9JsHJoKdIg1lJChF75c5+8itL7fXg8I0X/AwD8CDADGhq6+h9gK5AAAAABJRU5ErkJggg==","details":"This extension lets you see when a post was made, in full date or relative time (eg: 5 minutes ago). It also works on asks, and you can format your timestamps."},{"name":"tf2_reblogs","title":"Tumblr Fortress 2","version":"1.2.3","description":"Replaces reblog icons with TF2 kill icons","icon":"data:image/png;base64,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\n"},{"name":"tweaks","title":"Tweaks","version":"6.0.13","description":"Various little tweaks for your dashboard.","icon":"data:image/png;base64,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\n","details":"These are small little tweaks that allows you customize your dashboard. If you have used XKit 6, you will notice that some of the extensions have been moved here as options you can toggle. Keep in mind that some of the tweaks (the ones marked with a '*') can slow down your computer."},{"name":"unreverse2","title":"Unreverse","version":"1.0.3","description":"Places the post buttons on top","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDNEY0MERFNjQyNUMxMUUzOTM4NEFERTg2NTAwRDBDNSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDNEY0MERFNTQyNUMxMUUzOTM4NEFERTg2NTAwRDBDNSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+L1xb2wAAA89JREFUeNrsWVtIVEEY/mb2KK5IktcgkagHN0uwhAwrWsx6inrPKAQjqBe7EL5V9FQ9BJV0oQtUFAXRjQgyAtuSIoI0qba0C5hmaZt5WV0v28x6O7ueOTu54p6J/ZmH4cx/Zv9/vv/yzVmSetYPlUUjUFuo4varj4BGSCwHoo2A4g4YPj26IppuDfnhakHNN3/3wFRDaLMjyue6dSF+eMmhF7jZFCZFKQuhycMKkmHHCScq8omhhePDGIHKZ9E0PTEOWxyYN4vP9xXgbQd51CzEgWRdGLZmdp5fQ9Zl80lTJ0pu+Qf9ohBiTlhy7Hb5O/q4iQuSUZBORGrWdaDLhwdfRo/ZkSJU06iF+8BP71hCJ0Jkp0Ys3MnG4z6eQmSnZmU6SnQTkZ2UQRP5OLYKRXPC6BRmIsEW9GRZBpLizF6ZcECso9nkIoj9NvsxkWQloaoY5dWo7zBYzZ3Ny/mSTLg9uPcZl99xZ7bnoSATjZ247saNjwIEyAQCIjtlk3j9fBwohLm3F9dh2yO8bg96uCgFp4qRmsDneal8LE7B2mzYtVHfDi7n88vvTUOImCSx9M2NWd81gN/9BqtpCdyI1h6+GrIhs3XE+nHZMD/09VIHrpg6EDKfEp0OqN1uwpFXBouX1iLVjrJqePpDqVS/RKP3DgoImC6ERHbK5kB8oAp87zWOorp2XHVjaBhxFMPBPd9ukyA/mvG2VBdCIjtlq1CnD1X1uOY2Xj1eh3Q7TjoNllzf0BOO1t/9JKhCOgSEVUgyiWua+T1j71I8/IqGX6GryfE4V4LewTF2pROm/LINzizhzozw3PlknKMySUxpAKmww+/HjjxsyuEvxE8aLE5YEvcPGb+7/zmetwrJws7H8PQZvxjSyAyHZpNoxcz78kUoy+XzKieHwvComJrhbr5h7HmKw0VYOTfoeXM3v3h87YbIBkp1fYBGUEaJTk8EJauwf3zCYscArKzF6izsykeanZedS+9w/wvavZA0QFhGJXPgTAM/j9IcVDzBB4/ASrF744lU24KNC+BqRpvX7Dj+pZFJk9HTb3issyrpE5f2sLsxgnmzUUozRCfSPjAirFwCsM0UASe6JIyUC0WHTgf3gWlAYIZFphOrj4DqNzKpRha1ECK6EIqkkVkBChJDwKoIaCogEOD9CiIgdSfWVGhklAhP2tL/kU0/mYtWCJmROfURoAo4QE2ulFSFEDK7kVmaTk/jx90YAjEE/t8bmeoIEEUQ+H+pROy70EzQaVW/C7la+QjpCZMcgNqiUcU9sHQOyCGgvAOIhVBU5a8AAwDZvtGnunBxuwAAAABJRU5ErkJggg==","details":"This extension places the reblog/like/reply/etc buttons on the top of the post. It is unsupported, and might cause problems with your dashboard. Please use with caution."},{"name":"show_more","title":"User Menus+","version":"2.5.8","description":"More options on the user menu","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRTFGMjQxNDZDRjIxMUUzOUM1NkIzMjQ0OERGQUU5RCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRTFGMjQxMzZDRjIxMUUzOUM1NkIzMjQ0OERGQUU5RCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTE4QkRBRjU5ODYxRUUyRjREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","details":"This extension adds additional options to the user menu (the one that appears under user avatars on your dashboard), such as Avatar Magnifier, links to their Liked Posts page if they have them enabled. Note that this extension, especially the Show Likes and Show Submit options use a lot of network and might slow your computer down."},{"name":"vanilla_audio","title":"Vanilla Audio","version":"0.2.1","description":"Adds an alternative audio player to audio posts.","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAADDpiTIAAAC+lBMVEUAAABaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpzhTbLAAAA/XRSTlMA/gL7AQb2/QT5DO8J8xAZFOt4FS+iDVQj5rP1oGXjIdbuZ4/k2EIXHjzh1OwgPu3FtHoWMKPKkeUkfgdEu4A126roKNCZEUzCComyHwXEdo1AyLZ8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\n","details":"This extension adds a native HTML5 audio player to every audio post, with an option for the default volume and the ability to loop the audio."},{"name":"vanilla_video","title":"Vanilla Videos","version":"1.0.1","description":"Make the video player unexciting","icon":"data:image/png;base64,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","details":"Use the browser's native video controls. Only affects Tumblr's player."},{"name":"video_downloader","title":"Video Downloader","version":"1.0.0","description":"Adds a download button to the video player","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAEsmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjY0IgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iNjQiCiAgIGV4aWY6Q29sb3JTcGFjZT0iMSIKICAgdGlmZjpJbWFnZVdpZHRoPSI2NCIKICAgdGlmZjpJbWFnZUxlbmd0aD0iNjQiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjcyLjAiCiAgIHRpZmY6WVJlc29sdXRpb249IjcyLjAiCiAgIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiCiAgIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjAtMDMt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","details":"Adds a simple download button to all videos using the fancy player. Does not support 3rd-party players or the native player. Disabled on beta dash (now supported natively)"},{"name":"view_my_tags","title":"View My Tags","version":"0.4.5","description":"Lets you view your recently used tags","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCNzU1MTEyMzNFQUIxMUUzQkU5Q0VCN0I4NjI5NzlGMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCNzU1MTEyMjNFQUIxMUUzQkU5Q0VCN0I4NjI5NzlGMyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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"},{"name":"xcloud","title":"XCloud","version":"1.1.3","description":"Sync XKit data on clouds, or back up locally","icon":"data:image/png;base64,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\n","details":"XCloud stores your XKit configuration on New XKit servers so you can back up your data and synchronize it with other computers and browsers easily.

      You can also export your data to a file to import elsewhere."},{"name":"xinbox","title":"XInbox","version":"1.9.17","description":"Enhances your Inbox experience","icon":"data:image/png;base64,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\n","details":"XInbox allows you to tag posts before posting them, and see all your messages at once, and lets you delete multiple messages at once using the Mass Editor mode. To use this mode, go to your Inbox and click on the Mass Editor Mode button on your sidebar, click on the messages you want to delete then click the Delete Messages button."},{"name":"xkit_installer","title":"XKit Installer","version":"6.9.6","description":"Lets you install XKit on your computer."},{"name":"xkit_main","title":"XKit Main","version":"2.1.2","description":"Boots XKit up"},{"name":"xkit_patches","title":"XKit Patches","version":"7.4.19","description":"Patches framework"},{"name":"xkit_preferences","title":"XKit Preferences","version":"7.7.0","description":"Lets you customize XKit"},{"name":"xkit_updates","title":"XKit Updates","version":"2.1.2","description":"Provides automatic updating of extensions"},{"name":"xneko","title":"XNeko","version":"1.2.2","description":"A cat for your dashboard!","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTlGQkIxNjBCMzJCMTFFMkJGQjZENkUwMjNDREIzNjUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTlGQkIxNjFCMzJCMTFFMkJGQjZENkUwMjNDREIzNjUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1OUZCQjE1RUIzMkIxMUUyQkZCNkQ2RTAyM0NEQjM2NSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1OUZCQjE1RkIzMkIxMUUyQkZCNkQ2RTAyM0NEQjM2NSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgDtNXMAAAWVSURBVHjalFZNqx1FEK3u6u6ZiyvRRfwIJBglSGLQKIIPMcGN4EKy8CeIv8C14NaNa3EpLt24ENwIuglCRImaEJLw0BiMEVy+d6c/ynN6zPU5yXuavjNze3q6T52qro92b7/7URw0hRBUxyFoDOhHVf4FF3306oIX77zjJWjoV2sm1rI1Kbn61mrOtbTaStspuZRSc1nnlssUYgIUoCMEpDEmIKfIN+9DjN6LQoxQAgWIOS9NJEpozlqozUKqAJYcXMl+0uxcyE53nKykSkthHIGj4Jx8WMUYok9JoQEf0VEZL+YlmqrO7EHemYirZqsG2qVYteA1q1Yp4kGlFNkZJvwwHVSTAjONY0Ib07gKwzjGOOoQ0wjlUnrz7AsYGQZ8oH6rIa5SxPw3XjmdhjisMBiGhFXDA1iiw6ArrMRC8A20RuAYLnxUrxjGhgSoIAFb8PpLJ80MBvrq28uNynjQ9+Jefu6pefyLb77PU2il7hbvBjF1tm4CbcSGBohARpRB80RwgZ1gLmyu8vbS24x1/uJV52ipF08cxcj8KengY6uwjPqpYJY4m8Swm3ADwybDuB4iIi2ko4esTj9wJ86cPr4BIlaIAoB/BuSOcleqYlfEiRo8oHvYWoYkArIKg6dhRoR1oIhSHrzBB5El1g9Xb5w49vheqRSctGZ6mDU3Yv/NWgP7Us0H2iVCzUTi3gEdfkMf9br17LEFEBrQFyN/W+/Ha3ECKaqn0kaIaFJrDYMPzsPWElyi4Z1L3fQb6y+wZJ+GkDEqbFUQd8EUfm3wlgDgeR9ChDPTa9VpD4x/CQDHBfpiBCSjMj4SbIOIaDUGh60PHdFBCvWgifAK+rid3E/rcWjBXCWQadUQfCmO5kZDAlA+4VqEntv9CUAm6Q2MAYL99J2yd2DbwZX5rGvuyR5TD7b+0mKdFhDID1YmUQhhMACQqQw+jM9uBuar29h6L+LG9ItxxDYu3NK6IKLCX4Wu3kMHPtVFoOeNgkwubd+c4ea2IL4Zx5yrv/zeCQInYKHyhQRoptbnOputjrzbHBKx9Wg1f+XnWwdvBr5e+/UPI0X8wLrZvADAAIUIAOEqPfzwrV/GBWRK6ddu3HJuue2bke2btzmxdqOh/BjNUoQJvZorjbFBKG0kzfIBCuYRLcK8z9lS3dUbt+EGRx99aC/37d/+lFaoPHMal9VuttaVQbHoyjRfC81fjOUHk1pFfGNBqz2fUGZfC/S9boP+kUMPgiMTAm/jIuPd+sZgme+SPbH6GCDRaa0/8AX/1VCsIOnJw4fu6aZPPPYwhfe1M3TB+tpmhrUzDMVKRNX2GHeuVuZzaFW7xV1V8yePPLJfCppd6KfrN6kFCn6pbda92lQoDBcqkVRtk+8lCIKc4ciAPd46dRQQFy5t/2cM51ZPHTuMzvmL10sXkgv1nkqlAPQzK7VM9AQkFIfE/urW04toOiDrAX0z+csLlyecX5CmS2Y5yNkXyKPl8Jdza1Mpr209swir/UJhHt87+ezp40AHCE5L6wwlJKCnUtfKCIfbSXT3NPR+9rl7e6acM89dOH/V3akE0PfMEghflVjmFLSg9n/ahsS5s89vBj/45POwxgmPEZEERwLRt86dOQDa3RG/X3JdMKNLQhcotTPlabeUdVlkgk2G2HQ++/q7va93z9w7+N6Hn7p33v8YWXvAOYWHXtye1T86vvHgh+qEZ693wlyPHKZ3OBrTYs3sG9xjpzA6C/YY+5zbelqXqYZ1nlBMbYrIonBhlFLDkbai5BkOmz7UiHJU4AFITDjLKNE8t92YWph6C6MMEY8DNgSgO613EWIwSZtaCdNUfTE3IAnhjCQlIhehJhflOSD46hiIUECYEieebObshLLYT9VImcwzjC8ceSFynZEUcl4zGuD5fwkwAHA2vUaqsFKAAAAAAElFTkSuQmCC","details":"A free spirited Japanese cat for your dashboard.
      It is based on the Neko application by Kenji Gotoh."},{"name":"stats","title":"XStats","version":"0.3.8","description":"The XKit Statistics Tool","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2NEI4MkJBRTNEQkIxMUUzQUNFRTg1NzM5MDIyMUUyMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2NEI4MkJBRDNEQkIxMUUzQUNFRTg1NzM5MDIyMUUyMCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","details":"This extension allows you to view statistics regarding your dashboard, such as the percentage of post types, top 4 posters, and more. In the future, it will allow you to view statistics regarding your and others blogs."},{"name":"xwidgets","title":"XWidgets","version":"0.3.3","description":"Widgets for your dashboard","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDM3RTAyNDQxM0Y2MTFFMzlFMUI4QkQzOUFDODkyNkUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDM3RTAyNDUxM0Y2MTFFMzlFMUI4QkQzOUFDODkyNkUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0MzdFMDI0MjEzRjYxMUUzOUUxQjhCRDM5QUM4OTI2RSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0MzdFMDI0MzEzRjYxMUUzOUUxQjhCRDM5QUM4OTI2RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Phdso1wAAAStSURBVHjafJZJKLdfFMf9fr/HnP9rHjKXsdBrnoqQjSgZtzbKUslKLIW9Bas3sSI7pSxQSjKUZCxSKBmSeeb/8Tt/973/58FdPJ3nnHPPPed7hnttFRUV7+/vd3d3np6eLi4uiri9vdUJpQOhODc3N97e3hDX19dCCOft7Q3Cy8uL7Xa4LpalmEKor1pWHetem8328S0uLtY19P0mAr/039fXV9kC36qglp1gJRYv54LFNyAggEghAgMDJyYmxsbGRCc6OloIdqGgdgkhKCmOWDCsvmO9s7MTWAcGBojv5eXF3d29rq5ua2urra0NcNvb26+urn4A9n9AFRUVqUhFEBQU1N/f7/L9qqqqMmVFB8rENPRSwfeDg4Pw8HDwRWa320VJJ9CMiYkhPsLf398XNFQ5IRWcVREabCPdsPjv6OgQK8/Pz98d4Obm1tXV5ePjc3Z21tra+l1pKL5Bdav/x8dH8QhCOFhZWVlBLzMzk4QLkzNQcDgc+ISCWMRlsQ4hpoXjSEpKMgwDl+EeHx+npaWJGJQWFhYGBwf57u7uzs/Pe3h4REZGiggdSmB7exuHXF1dn56egEgR4gEiCLseWmhoKCe9OBeHDQ8PS3zSxiMjIycnJ4hEJz4+3tRuX/agLT8/X6ju7m5Ji6yZmZnx8XERqTzV1taWlpbqFdXc3KyMSh2aKspQIwgEJHzAFUylHtRUgYNI14FQNaMTMoukE+0qtL6+vsXFxZfPlZGRoTsl7iQnJyuF6enplpaW78aXoh3BwcGSYZqT6k5PT391LroXF1ZXV1FCgew1NjYyKqRF+E5OTpIS+EjReXIuIcSg7HLExcWRfX78/f3r6+sBSqoeHyMiIrKzs5FSaQ0NDVFRUUoEQTTLy8tgRRFiSMoJO1JOEFJFhl4AtA+uyZgVAk5JSQkmxK4u4nt/f48Vau/w8JAzvmw0W1ZWlsp4SEjIw8MDk6C6uvqHWTQ6OrqxsUGsFxcXZWVl5eXl6+vrf/78UQNNP8lATyqE0MgBxM7ODgjgr3LcRGC9pqYmMTHx9PSU1oMDXAxgSeTQ0BCRqelkN41rXGCaokHh4ilJfnMuCPru3rmkpcGXiN8+1z/O9evXLxNKtt+/f38g5ewjVWSUkCAAX1zr6ekBPV9fX76c0dTUFBsbCx+dzc1NIvDz85Pf3t5evV5tBQUFat6q/jJx1EhHhJs5OTlkTkYh0HMeCWeycjwwLi0tzc7OIvoPonfL0ptFwjdVGgNRaIYgASHlKx2Dcm5uLtApiAw8FUonZD8510UyNvb29piseXl5cKg3XCYCua6lUjnp6OhI2XEApWneqpZRo/jj7v7sJgoM0FNSUggFKRMForKyMiwsDNH5+TlDF8TUdkNdngoK04vIKuKXEhI+1gsLC+UG/LoPFDJyAVkhUpeU6IiJy8tLufVIrIiYSxSedIC+yyb1II0m1q1VpD8LTVc84ys1NZXKmZqaorhlpOvbv4bI9BrUAzc15tzc3NraGpnH7qNzycXwt9ESEhLUU9L6yvzuAWq6J6wP2b+vCr2bOMOEw89YKY5+o+miD4j0w+UuNTWdUlAwWt/b6hK2hvWvAAMADkKAXmNqE0oAAAAASUVORK5CYII="}]} \ No newline at end of file diff --git a/Extensions/dist/page/list.json b/Extensions/dist/page/list.json new file mode 100644 index 000000000..aa9495b4e --- /dev/null +++ b/Extensions/dist/page/list.json @@ -0,0 +1 @@ +{"server":"up","extensions":[{"name":"accesskit","version":"2.0.3"},{"name":"anti_capitalism","version":"1.6.6"},{"name":"audio_downloader","version":"3.0.2"},{"name":"audio_plus","version":"1.0.0"},{"name":"auto_tagger","version":"0.7.5"},{"name":"autoscroll","version":"1.2.0"},{"name":"better_reblogs","version":"1.3.6"},{"name":"blacklist","version":"3.1.9"},{"name":"bookmarker","version":"2.3.9"},{"name":"classic_header","version":"3.0.0"},{"name":"classic_tags","version":"1.6.12"},{"name":"cleanfeed","version":"1.5.5"},{"name":"convert_links","version":"0.1 REV B"},{"name":"disable_gifs","version":"1.0.0"},{"name":"disable_search","version":"2.0.2"},{"name":"dont_stretch_photosets","version":"1.0.1"},{"name":"drafts_plus","version":"0.2.7"},{"name":"editable_reblogs","version":"3.3.14"},{"name":"estufars_sidebar_fix","version":"1.2.3"},{"name":"find_blogs","version":"1.2.4"},{"name":"find_inactives","version":"0.4.3"},{"name":"fresh_prince","version":"0.1.1"},{"name":"glowing_follow","version":"1.0.7"},{"name":"go_to_dash","version":"1.3.5"},{"name":"hideavatars","version":"1.0.0"},{"name":"highlighter","version":"0.1.6"},{"name":"jk_across_pages","version":"1.1.3"},{"name":"limit_people","version":"0.2.4"},{"name":"mass_deleter","version":"0.2.1"},{"name":"mass_plus","version":"0.4.8"},{"name":"messaging_tweaks","version":"1.8.3"},{"name":"mirrorposts","version":"1.0.1"},{"name":"mute","version":"2.4.0"},{"name":"mutualchecker","version":"2.0.4"},{"name":"norecommended","version":"2.3.4"},{"name":"notificationblock","version":"1.4.2"},{"name":"notifications_plus","version":"1.5.7"},{"name":"old_blue","version":"2.1.5"},{"name":"old_stats","version":"1.0.0"},{"name":"one_click_postage","version":"4.4.24"},{"name":"one_click_reply","version":"2.1.4"},{"name":"open_in_new_tabs","version":"1.1.8"},{"name":"outbox","version":"0.11.4"},{"name":"panaroma","version":"2.0.0"},{"name":"people_notifier","version":"0.6.7"},{"name":"pokes","version":"0.12.0"},{"name":"post_crushes","version":"2.0.9"},{"name":"post_limit_checker","version":"1.0.0"},{"name":"postarchive","version":"1.0.6"},{"name":"postblock","version":"1.0.2"},{"name":"profiler","version":"1.2.6"},{"name":"quick_tags","version":"0.6.9"},{"name":"read_more_now","version":"2.0.3"},{"name":"read_posts","version":"0.2.4"},{"name":"retags","version":"1.2.9"},{"name":"satsukimous","version":"1.2.4"},{"name":"scroll_to_bottom","version":"1.1.1"},{"name":"search_likes","version":"0.3.3"},{"name":"servant","version":"0.6.1"},{"name":"shorten_posts","version":"0.2.4"},{"name":"show_more","version":"2.5.8"},{"name":"show_originals","version":"1.2.5"},{"name":"show_picture_size","version":"1.0.3"},{"name":"shuffle_queue","version":"2.2.1"},{"name":"stats","version":"0.3.8"},{"name":"tag_replacer","version":"1.0.3"},{"name":"tagviewer","version":"0.5.3"},{"name":"tf2_reblogs","version":"1.2.3"},{"name":"theme_editor","version":"0.1.7"},{"name":"themes","version":"0.1.3"},{"name":"themes_plus","version":"0.2.7"},{"name":"timestamps","version":"2.11.5"},{"name":"titles","version":"1.0.1"},{"name":"transparent_img_hover","version":"1.0.1"},{"name":"tweaks","version":"6.0.13"},{"name":"unreverse2","version":"1.0.3"},{"name":"vanilla_audio","version":"0.2.1"},{"name":"vanilla_video","version":"1.0.1"},{"name":"video_downloader","version":"1.0.0"},{"name":"view_my_tags","version":"0.4.5"},{"name":"xcloud","version":"1.1.3"},{"name":"xinbox","version":"1.9.17"},{"name":"xkit_installer","version":"6.9.6"},{"name":"xkit_main","version":"2.1.2"},{"name":"xkit_patches","version":"7.4.19"},{"name":"xkit_preferences","version":"7.7.0"},{"name":"xkit_updates","version":"2.1.2"},{"name":"xneko","version":"1.2.2"},{"name":"xwidgets","version":"0.3.3"}]} \ No newline at end of file diff --git a/Extensions/dist/page/themes.json b/Extensions/dist/page/themes.json new file mode 100644 index 000000000..1b90bfa22 --- /dev/null +++ b/Extensions/dist/page/themes.json @@ -0,0 +1 @@ +{"server":"up","themes":[{"file":"blur.css","name":"Blur","version":"1.0.1","description":"A simple, clean Tumblr dash theme with a soft, blurred background.","developer":"HeyItsJono - http://kaywhatever.tumblr.com/","contents":"/* NAME Blur **/\n/* VERSION 1.0.1 **/\n/* DESCRIPTION A simple, clean Tumblr dash theme with a soft, blurred background. **/\n/* DEVELOPER HeyItsJono - http://kaywhatever.tumblr.com/ **/\n\nbody {\n\tbackground: url('https://new-xkit.github.io/XKit/Themes/blur/body-background.png') center #000000 repeat fixed !important;\n\tbackground-size: cover;\n}\n\n.l-header-container--refresh {\n background-color: rgba(50,53,60,0.67);\n}\n\n.selected .tab_notice {\n background: rgb(193,33,91);\n}\n\n.tab-bar-container .tab_notice {\n background: rgb(193,33,91);\n}\n\n.tab-notice--outlined {\n border-color: rgb(193,33,91);\n}\n\n.tab_notice .tab_notice_value {\n color: rgb(65, 66, 68);\n}\n\n.compose-button {\n fill: rgba(200, 203, 208, 0.7);\n}\n\n.l-container.l-container--two-column .right_column, .l-container.l-container--two-column-dashboard .right_column {\n background-color: rgba(1,1,1,0);\n}\n\n.identity .controls_section li:not(.section_header):not(.selected_blog):hover {\n background-color: rgba(50,53,60,0.15);\n}\n\n.identity-refresh .controls_section.user_list li .follow_list_item_blog:before {\n background: rgba(0, 0, 0, 0);\n border-right: none;\n}\n\n.identity-refresh .controls_section.user_list li:hover .follow_list_item_blog:before {\n background: none;\n border-right: none;\n}\n\n.plus-follow-button {\n color: #414244;\n}\n\n.plus-follow-button:hover {\n background: #C12C5B;\n}\n.identity .controls_section .item:hover .follow:hover {\n background: #C12C5B;\n}\n\n.identity-refresh .radar .radar_footer .radar_avatar:before {\n background: rgba(0, 0, 0, 0);\n}\n\n.radar .radar_footer .radar_avatar:before {\n background: rgba(0, 0, 0, 0);\n}\n\n.l-container.l-container--two-column-dashboard .left_column {\n background-color: rgba(1,1,1,0);\n}\n\n.l-container.l-container--two-column .l-content, .l-container.l-container--two-column-dashboard .l-content {\n background-color: rgba(1,1,1,0);\n}\n\n/*\n.post {\n\tbackground: blue;\n\tborder-radius: 20px;\n}\n\n.post-container {\n background: transparent;\n}\n*/\n\n.post_avatar,\n.post_avatar .post_avatar_link {\n\tbackground-color: transparent;\n}\n\n.post_content {\n\tbackground: transparent !important;\n}\n\n#right_column:after {\n\tbackground: none !important;\n}\n\n.controls_section li {\n\tbackground: rgba(1,1,1,0);\n}\n\n.chrome {\n border-width: 0px;\n background: rgba(200, 203, 208, 0.20);\n}\n\n.chrome:active {\n background: rgba(200,203,208,0.40);\n}\n\n.chrome.blue {\n background: rgba(255,255,255,0.35);\n}\n\n.chrome.blue:active {\n background: #C12C5B;\n}\n\n.rapid-recs-container .rapid-recs {\n background-image: linear-gradient(to bottom,rgba(68, 76, 88, 0)0%,rgba(44, 47, 51, 0.18) 15%,rgba(44, 47, 51, 0.18) 85%,rgba(68, 76, 88, 0)100%);\n}\n"},{"file":"crocodile_green.css","name":"Crocodile Green","version":"1.0.3","description":"Crocodile skin background with green trim","developer":"crocodilesinbusinesssuits","contents":"/* NAME Crocodile Green **/\n/* VERSION 1.0.3 **/\n/* DESCRIPTION Crocodile skin background with green trim **/\n/* DEVELOPER crocodilesinbusinesssuits **/\n\n.identity {\n background: #041705;\n background-image: url('https://new-xkit.github.io/XKit/Themes/crocodile_green/body-background.jpg');\n margin: 0;\n}\n\n.l-content {\n background: #1b331b;\n}\n\n.post {\n background: #152715;\n border-radius: 10px;\n}\n\n.l-container.l-container--two-column-dashboard .l-content,\n.l-container.l-container--two-column-dashboard .left_column,\n#right_column,\n#right_column::after,\n.post_content {\n background: transparent!important;\n}\n\n.controls_section li,\n.l-header-container--refresh {\n background: #152715;\n}\n\n.identity .controls_section.user_list li .follow_list_item_blog::before,\n.radar .radar_footer .radar_avatar::before {\n\tbackground-image: linear-gradient(to right, rgba(21, 39, 21, 0), #152715);\n\tborder-right: 5px solid #152715;\n}\n\n.identity .controls_section.user_list li:hover .follow_list_item_blog::before {\n\tbackground-image: linear-gradient(to right, rgba(27, 45, 26, 0), #1b2d1a);\n\tborder-right: 5px solid #1b2d1a;\n}\n\n.identity .controls_section li:not(.section_header):not(.selected_blog):hover {\n background-color: #152715;\n}\n\n.tab_notice,\n.selected .tab_notice,\n.plus-follow-button:hover,\n.identity .controls_section .item:hover .follow:hover {\n background-color: #94a694;\n}\n\n.compose-button {\n fill: #94a694;\n}\n\n.tab_notice .tab_notice_value,\n.plus-follow-button {\n color: #152715;\n}\n\n.post_avatar,\n.post_avatar .post_avatar_link {\n\tbackground-color: transparent;\n}\n"},{"file":"faux_kawaii.css","name":"Faux Kawaii","version":"1.0.3","description":"For your cuteness needs","developer":"STUDIOXENIX","contents":"/* NAME Faux Kawaii **/\n/* VERSION 1.0.3 **/\n/* DESCRIPTION For your cuteness needs **/\n/* DEVELOPER STUDIOXENIX **/\n\n.identity {\n\tbackground: #ff96c0 url('https://new-xkit.github.io/XKit/Themes/faux_kawaii/body-background.jpg');\n}\n\n#right_column,\n.l-container.l-container--two-column-dashboard .left_column,\n.post_avatar,\n.post_avatar .post_avatar_link {\n\tbackground-color: transparent;\n}\n\n.l-content {\n\tbackground: rgba(255, 255, 255, 0.32) !important;\n}\n\n.notification,\n.l-header-container.l-header-container--refresh {\n\tbackground: #c8477a;\n}\n\n.identity .controls_section li.section_header,\n.identity .controls_section.user_list li .follow_list_item_blog .tumblelog_title,\n.identity .controls_section.user_list li .follow_list_item_blog .tumblelog_name,\n.avatar_align,\n#view_on_dash_button div.hide_overflow,\n.identity .right_column .small_links a,\n.radar .radar_tumblelog_label .name,\n.radar .radar_tumblelog_label .subheading,\n.no_push,\n.sidebar_link {\n\tcolor: #444;\n}\n\n.identity .right_column>.controls_section:first-child {\n\tmargin: 18px 0 0;\n}\n\n.tab-notice--outlined {\n\tborder-color: #951447;\n}\n\n.selection_nipple {\n\tdisplay: none !important;\n}\n\n#right_column:after {\n\tdisplay: none !important;\n}\n\n.identity .controls_section.user_list li .follow_list_item_blog:before,\n.radar .radar_footer .radar_avatar:before {\n\tbackground: transparent;\n\tborder-right: 5px solid transparent;\n}\n\n.identity .controls_section.user_list li:hover .follow_list_item_blog:before {\n\tbackground-image: linear-gradient(to right, rgba(27, 45, 26, 0), rgba(255, 255, 255, 0.32));\n\tborder-right: 5px solid rgba(255, 255, 255, 0.32);\n}\n\n.identity .controls_section li:not(.section_header):not(.selected_blog):hover {\n background-color: transparent;\n}\n\n.tab_notice,\n.selected .tab_notice,\n.plus-follow-button:hover,\n.identity .controls_section .item:hover .follow:hover {\n background-color: #ff96c0;\n}\n\n.compose-button {\n fill: #ff96c0;\n}\n\n.plus-follow-button {\n color: #c8477a;\n}\n\n.tab_notice .tab_notice_value {\n\tcolor: #951447;\n}\n"},{"file":"mega_rainbows.css","name":"Mega Rainbows","version":"1.0.3","description":"Extremely colorful sidebars","developer":"dahlkzer","contents":"/* NAME Mega Rainbows **/\n/* VERSION 1.0.3 **/\n/* DESCRIPTION Extremely colorful sidebars **/\n/* DEVELOPER dahlkzer **/\n\n.identity {\n\tbackground: repeating-linear-gradient(to bottom, red, orange, yellow, green, blue, purple, red);\n}\n\n#popover_search .popover_inner {\n\tborder-radius: 6px;\n\tbackground: linear-gradient(to bottom right, red, orange, yellow, green, blue, purple);\n}\n\n.popover_menu_item:hover,\n.popover_menu_item.keyboard_focus {\n\tbackground: rgba(255, 255, 255, 0.6);\n}\n\ninput#search_query::-webkit-input-placeholder,\ninput#search_query::-moz-input-placeholder {\n\tcolor: #000;\n}\n\n#main-logo {\n\tdisplay: none;\n}\n\n.logo .svg-logo {\n\tbackground: url('https://new-xkit.github.io/XKit/Themes/mega_rainbows/logo-alt.png');\n\twidth: 196px;\n\theight: 45px;\n\tpadding: 0 0 0 0;\n\tmargin: 4px;\n}\n\n.l-container.l-container--two-column .l-content,\n.l-container.l-container--two-column-dashboard .l-content {\n\tbackground: rgba(0, 0, 0, 0.5);\n}\n\n.l-container.l-container--two-column-dashboard .left_column {\n\tbackground: transparent;\n}\n\n.identity .right_column>.controls_section:first-child {\n\tmargin: 18px 0 0;\n}\n\n.identity .controls_section.user_list li .follow_list_item_blog::before,\n.identity .controls_section.user_list li:hover .follow_list_item_blog::before,\n.radar .radar_footer .radar_avatar::before {\n\tbackground-image: linear-gradient(to right, rgba(21, 39, 21, 0), rgba(0, 0, 0, 0.5));\n\tborder-right: 5px solid rgba(0, 0, 0, 0.5);\n}\n\n.identity .controls_section li:not(.section_header):not(.selected_blog):hover,\n.identity .controls_section .item:hover .follow:hover,\n.plus-follow-button:hover {\n background-color: rgba(0, 0, 0, 0.5);\n}\n\n.blog_menu .selected_blog #open_blog_link {\n\tcolor: rgba(255, 255, 255, .69)!important;\n}\n\nul.controls_section li:nth-child(2),\nul.controls_section li:nth-child(14),\nul.controls_section li:nth-child(27) {\n\tbackground: #f80!important;\n}\n\nul.controls_section li:nth-child(3),\nul.controls_section li:nth-child(15),\nul.controls_section li:nth-child(28) {\n\tbackground: #ff0!important;\n}\n\nul.controls_section li:nth-child(4),\nul.controls_section li:nth-child(16),\nul.controls_section li:nth-child(29) {\n\tbackground: #8f0!important;\n}\n\nul.controls_section li:nth-child(5),\nul.controls_section li:nth-child(17),\nul.controls_section li:nth-child(30) {\n\tbackground: #0f0!important;\n}\n\nul.controls_section li:nth-child(6),\nul.controls_section li:nth-child(18),\nul.controls_section li:nth-child(31) {\n\tbackground: #0f8!important;\n}\n\nul.controls_section li:nth-child(7),\nul.controls_section li:nth-child(19),\nul.controls_section li:nth-child(32) {\n\tbackground: #0ff!important;\n}\n\nul.controls_section li:nth-child(9),\nul.controls_section li:nth-child(22),\nul.controls_section li:nth-child(35) {\n\tbackground: #00f!important;\n}\n\nul.controls_section li:nth-child(10),\nul.controls_section li:nth-child(23),\nul.controls_section li:nth-child(36) {\n\tbackground: #80f!important;\n}\n\nul.controls_section li:nth-child(11),\nul.controls_section li:nth-child(24),\nul.controls_section li:nth-child(37) {\n\tbackground: #f0f!important;\n}\n\nul.controls_section li:nth-child(12),\nul.controls_section li:nth-child(25),\nul.controls_section li:nth-child(38) {\n\tbackground: #f08!important;\n}\n\nul.controls_section {\n\tborder: none!important;\n}\n\n.controls_section li a,\n.plus-follow-button {\n\tcolor: rgba(0, 0, 0, 0.6667);\n}\n\n.selection_nipple {\n\tborder-bottom: 12px solid rgba(0, 0, 0, 0.5)!important;\n}\n\n.post_permalink {\n\tbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAXCAYAAADgKtSgAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB90GGA4RI4O5UOkAAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAAALtJREFUSMftlTtSxDAQRF97BUR7AMxl4OS+ANewtDnRflCTUi6wZm0XJO5MyXulnikJ9vx19P3g6hG5gAomG7KoBTTy6dMl1fykhxKFp4mqxwIZJGQwHaLCQTzeOs6+EhWkH+6ymSD9UtYmgjQzjdWC1Bj3KkEK7NNiQQoubFMALIQHBJFaCvC8SBCA51n4jCAC/1haURMu6c32ALzeKwjH9uBoqke7vjdfxakAOAJ9cw4mq9PL/sn8f74AOSOrjN8ufMgAAAAASUVORK5CYII=)!important;\n}\n\n.post .post_content blockquote {\n\tborder-left: 3px solid red;\n}\n\n.post .post_content blockquote blockquote {\n\tborder-left: 3px solid #f80;\n}\n\n.post .post_content blockquote blockquote blockquote {\n\tborder-left: 3px solid #ff0;\n}\n\n.post .post_content blockquote blockquote blockquote blockquote {\n\tborder-left: 3px solid #8f0;\n}\n\n.post .post_content blockquote blockquote blockquote blockquote blockquote blockquote blockquote {\n\tborder-left: 3px solid #0f8;\n}\n\n.post .post_content blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote {\n\tborder-left: 3px solid #0ff;\n}\n\n.post .post_content blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote {\n\tborder-left: 3px solid #08f;\n}\n\n.post .post_content blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote {\n\tborder-left: 3px solid #00f;\n}\n\n.post .post_content blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote {\n\tborder-left: 3px solid #80f;\n}\n\n.post .post_content blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote {\n\tborder-left: 3px solid #f0f;\n}\n\n.post .post_content blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote blockquote {\n\tborder-left: 3px solid rgba(0, 0, 0, 0.75);\n}\n\n.tab_notice,\n.search_form_field,\n.ui_search.active .search_query,\n.ui_search.selected .search_query {\n\tbackground: repeating-linear-gradient(to right, red, orange, yellow, green, blue, purple)!important;\n}\n\n.pill.notice {\n\tbackground: repeating-linear-gradient(to bottom right, red, orange, yellow, green, blue, purple)!important;\n}\n\n.ui_search .search_form_field {\n\theight: 31px;\n\tmargin-top: 13px;\n}\n\n.ui_search .search_query {\n\tmargin-top: 0;\n}\n\n.search_form_field {\n\tbox-shadow: 0 0 8px #000;\n}\n\n.tab_notice_nipple {\n\tbackground: rgba(255, 255, 255, 0)!important;\n}\n\n.tab_notice_value,\n.pill.notice {\n\tcolor: #fff;\n\ttext-shadow: 1px 1px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000;\n}\n\n#right_column,\n#right_column:after {\n\tbackground: rgba(0, 0, 0, 0);\n}\n\nli#popover_button_blogs,\nul.controls_section li:first-child,\nul.controls_section li:nth-child(13),\nul.controls_section li:nth-child(26) {\n\tbackground: red!important;\n}\n\nul.controls_section li:nth-child(8),\nul.controls_section li:nth-child(20),\nul.controls_section li:nth-child(33),\nul.controls_section li:nth-child(8),\nul.controls_section li:nth-child(21),\nul.controls_section li:nth-child(34) {\n\tbackground: #08f!important;\n}\n\n.post .post_content blockquote blockquote blockquote blockquote blockquote,\n.post .post_content blockquote blockquote blockquote blockquote blockquote blockquote {\n\tborder-left: 3px solid #0f0;\n}\n\n.post_avatar,\n.post_avatar .post_avatar_link {\n\tbackground-color: transparent;\n}\n"},{"file":"monolithic.css","name":"Monolithic","version":"1.1.1","description":"A simple gray theme with no space between posts","developer":"STUDIOXENIX","contents":"/* NAME Monolithic **/\n/* VERSION 1.1.1 **/\n/* DESCRIPTION A simple gray theme with no space between posts **/\n/* DEVELOPER STUDIOXENIX **/\n\n.identity,\n.post_full .post_permalink {\n\tbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAGUlEQVQIW2PcunXrfwYgYFy9evV/Li4uBgBDawY/V75q0gAAAABJRU5ErkJggg==);\n}\n\n.l-container.l-container--two-column .l-content,\n.l-container.l-container--two-column-dashboard .l-content,\n.l-container.l-container--two-column-dashboard .left_column {\n\tbackground: transparent;\n}\n\n.notification {\n\tbackground: #e6e6e6!important;\n\tborder-radius: 0!important;\n\tcolor: #000!important;\n\tborder: 0!important;\n\tmargin: 0 0 1px!important;\n}\n\n#posts>.post_container {\n\tmargin-bottom: 1px!important;\n}\n\n.notification * {\n\tborder-radius: 0;\n\tcolor: #969696!important;\n\tborder: 0;\n}\n\n.l-content {\n\tbackground: rgba(0, 0, 0, 0.11);\n}\n\n.post {\n\tborder-radius: 0 !important;\n\tbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.22);\n\tmargin-top: 0;\n}\n\n.post_full .post_permalink {\n\tborder-color: transparent transparent #ccc #ccc;\n}\n\n#right_column,\n#right_column:after,\n.post_content,\n.controls_section {\n\tbackground: transparent !important;\n}\n\n.controls_section li * {\n\tbackground: transparent;\n\tcolor: #646464\n}\n\n.identity .controls_section.user_list li .follow_list_item_blog::before,\n.radar .radar_footer .radar_avatar::before {\n\tbackground-image: linear-gradient(to right, rgba(0, 0, 0, 0), #b5b5b5);\n\tborder-right: 5px solid #b5b5b5;\n}\n\n\n.identity .controls_section.user_list li:hover .follow_list_item_blog::before {\n\tbackground-image: linear-gradient(to right, rgba(0, 0, 0, 0), #c2c2c2);\n\tborder-right: 5px solid #c2c2c2;\n}\n\n.identity .controls_section li:not(.section_header):not(.selected_blog):hover {\n\tbackground-color: #c2c2c2;\n}\n\n.l-header-container.l-header-container--refresh {\n background-color: #ababab;\n}\n\n.tab_notice,\n.selected .tab_notice,\n.plus-follow-button:hover,\n.identity .controls_section .item:hover .follow:hover {\n background-color: #e8e8e8;\n}\n\n.tab_notice .tab_notice_value {\n\tcolor: #aaa;\n}\n\n.compose-button {\n fill: #e8e8e8;\n}\n\n.tab-notice--outlined {\n\tborder-color: #888;\n}\n\n.post_avatar,\n.post_avatar .post_avatar_link {\n\tbackground-color: transparent;\n}\n"},{"file":"nebula.css","name":"Nebula","version":"2.0.1","description":"A modern, translucent dashboard theme with nebula background","developer":"internet-tears","contents":"/* NAME Nebula **/\n/* VERSION 2.0.1 **/\n/* DESCRIPTION A modern, translucent dashboard theme with nebula background **/\n/* DEVELOPER internet-tears **/\n\n.identity,\n.chrome.blue,\n.chrome.clear,\n.flat-button.post-form--close {\n background: url('https://new-xkit.github.io/XKit/Themes/nebula/body-background.jpg') no-repeat top left fixed !important;\n background-size: cover;\n border-radius: 0;\n}\n\n.plexi.show.color {\n background: rgba(0, 0, 0, 0.8);\n}\n\n.chrome.blue {\n border: none;\n}\n\n.controls_section .with_subtitle small {\n color: rgba(255, 255, 255, .69);\n}\n\n.dashboard_options_form,\n.tag_psa,\n.grey_note {\n border-radius: 0;\n border: none;\n background: rgba(0, 0, 0, 0.3);\n color: rgba(255, 255, 255, 0.6);\n}\n\n.dashboard_options_form .dashboard_options_form_disclaimer a,\n.crushes_subhead,\n.chrome.clear {\n color: rgba(255, 255, 255, 0.6);\n}\n\n.split button.chrome:active:not([disabled]),\n.split.active .chrome.options,\n.split .chrome.blue[disabled],\n.split .chrome.blue[disabled]:active,\n.split .chrome.blue.ui_disabled,\n.split .chrome.blue.ui_disabled:active {\n background: url('https://new-xkit.github.io/XKit/Themes/nebula/body-background.jpg') no-repeat top left fixed !important;\n border: 1px rgba(255, 255, 255, 0.4);\n}\n\n.post-form--controls .controls-container .post-form--save-button>.chrome {\n width: initial;\n}\n\n.l-content * {\n border-radius: 0!important;\n}\n\n.notification .notification_right .preview_frame,\n.notification .avatar_frame,\n.ui_avatar .frame {\n border: 1px solid rgba(255, 255, 255, 0.7);\n}\n\n.tab-bar-container .tab_notice,\n.plus-follow-button,\n.pill.notice,\n.footer_links a,\n.dashboard_options_form .dashboard_options_form_disclaimer,\n.grey_note a,\n.split button.chrome:active:not([disabled]),\n.split.active .chrome.options {\n color: rgba(234, 244, 255, 0.4);\n}\n\n.l-container.l-container--two-column .l-content,\n.l-container.l-container--two-column-dashboard .l-content {\n background: rgba(255, 255, 255, 0.2);\n border-radius: 0;\n}\n\n#header .selection_nipple {\n border-bottom: 12px solid #FFF;\n}\n\n.notification,\n.notification.first_notification {\n background: rgba(255, 255, 255, 0.1);\n border-radius: 0;\n}\n\n#right_column:after {\n background: none!important;\n content: none;\n}\n\n.controls_section {\n background: rgba(255, 255, 255, 0.05);\n border-radius: 0;\n}\n\n#new_post,\n.post {\n background: rgba(255, 255, 255, 1.0);\n border-radius: 0;\n}\n\n.post_content,\n#right_column,\n.l-container.l-container--two-column-dashboard .left_column {\n background: transparent!important;\n border-radius: 0;\n}\n\n#right_column {\n margin: 0;\n}\n\n.identity .controls_section.follow_list.recommended_tumblelogs,\n.identity .controls_section.follow_list.trending_tumblelogs {\n padding-right: 20px;\n}\n\n.post_full .post_permalink {\n\tborder-color: transparent transparent #ccc #ccc;\n background: transparent;\n}\n\n.identity .right_column>.controls_section:first-child {\n margin: 0;\n}\n\n.identity .controls_section.user_list li .follow_list_item_blog:before,\n.radar .radar_footer .radar_avatar:before {\n\tbackground: transparent;\n\tborder-right: transparent;\n}\n\n.identity .controls_section.user_list li:hover .follow_list_item_blog:before {\n\tbackground: transparent;\n\tborder-right: transparent;\n}\n\n.l-header-container--refresh,\n.l-content,\n.post_avatar,\n.post_avatar .post_avatar_link {\n background-color: transparent !important;\n}\n\n.identity .controls_section li:not(.section_header):not(.selected_blog):hover,\n.tab_notice,\n.selected .tab_notice,\n.plus-follow-button:hover,\n.identity .controls_section .item:hover .follow:hover {\n background-color: rgba(255, 255, 255, 0.4);\n}\n\n.tab_notice {\n background-clip: initial;\n}\n\n.tab_notice .tab_notice_value {\n color: rgba(255, 255, 255, 0.8);\n}\n\n.tab-notice--outlined {\n border-color: rgba(255, 255, 255, 0.4);\n}\n\n.compose-button {\n fill: rgba(255, 255, 255, 0.4);\n}\n\n.flat-button.blue,\n.flat-button,\n.flat-button.blue[disabled],\n.flat-button.blue.disable,\n.flat-button.blue[disabled]:active,\n.flat-button.blue.disabled.active,\n.flat-button[disabled],\n.flat-button.disable,\n.flat-button[disabled]:active,\n.flat-button.disabled.active {\n background-color: transparent;\n border-color: transparent;\n}\n\n.flat-button.blue:active,\n.flat-button.blue:focus,\n.flat-button:active,\n.flat-button:focus {\n background-color: rgba(255, 255, 255, 0.4);\n border-color: rgba(255, 255, 255, 0.4);\n}\n"},{"file":"orange_wall.css","name":"Orange Wall","version":"1.0.4","description":"That is one orange wallpaper you got there","developer":"STUDIOXENIX","contents":"/* NAME Orange Wall **/\n/* VERSION 1.0.4 **/\n/* DESCRIPTION That is one orange wallpaper you got there **/\n/* DEVELOPER STUDIOXENIX **/\n\n.identity {\n\tbackground: #f49a00 url('https://new-xkit.github.io/XKit/Themes/orange_wall/body-background.jpg');\n}\n\n.selection_nipple,\n.permalink {\n\tvisibility: hidden !important;\n}\n\n.l-container.l-container--two-column .l-content,\n.l-container.l-container--two-column-dashboard .l-content,\n.l-container.l-container--two-column-dashboard .left_column,\n#right_column {\n background: transparent;\n}\n\n.recessed {\n\tbackground: rgba(0, 0, 0, 0.25) !important;\n\topacity: 0.8 !important;\n\ttransition: 0.3s ease-in;\n}\n\n.controls_section {\n\tbox-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.09) !important;\n\tborder: 1px solid rgba(0, 0, 0, 0.25) !important;\n\tbackground: rgba(20, 40, 70, 0.25) !important;\n\topacity: 1 !important;\n}\n\n.l-header {\n\topacity: 0.8 !important;\n\ttransition: 0.4s ease-in;\n}\n\n.logo {\n\topacity: 0.5 !important;\n\ttransition: 0.4s ease-in;\n}\n\n.l-header:hover,\n.logo:hover {\n\topacity: 1 !important;\n\ttransition: 0.4s ease-in;\n}\n\na {\n\ttransition: 0.4s ease-in;\n}\n\nul.controls_section li {\n\ttext-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.12) !important;\n\ttransition: 0.3s ease-in;\n}\n\nul.controls_section li:hover {\n\tbackground: rgba(20, 40, 70, 0.35) !important;\n\ttransition: 0.3s ease-in;\n}\n\nli.post {\n\tbox-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.22) !important;\n\topacity: 0.99 !important;\n\ttransition: 0.3s ease-in;\n}\n\nli.post:hover {\n\topacity: 1 !important;\n\ttransition: 0.5s ease-in;\n}\n\n.l-content {\n\tbackground: transparent !important;\n\tmargin-top: 8px !important;\n\tpadding-top: 0 !important;\n}\n\n#right_column:after {\n\tdisplay: none !important;\n}\n\n.l-header *,\n.l-content * {\n\tborder-radius: 0px;\n}\n\n.xoldeheader-item {\n\tborder-radius: 7px !important;\n}\n\n.identity .controls_section.user_list li .follow_list_item_blog:before,\n.identity .controls_section.user_list li:hover .follow_list_item_blog:before,\n.radar .radar_footer .radar_avatar:before {\n\tbackground: linear-gradient(to right, rgba(189, 126, 17, 0), #bd7e11);\n\tborder-right: 5px solid #bd7e11;\n}\n\n.identity .controls_section li:not(.section_header):not(.selected_blog):hover,\n.l-header-container--refresh,\n.l-content,\n.post_avatar,\n.post_avatar .post_avatar_link {\n background-color: transparent !important;\n}\n\n.plus-follow-button {\n color: #a84e00;\n}\n\n.identity .controls_section .item:hover .follow:hover,\n.plus-follow-button:hover {\n\tbackground-color: #ffb41a;\n}\n\n.post_full .post_permalink {\n\tborder-color: #f49a00 #f49a00 transparent transparent;\n}\n"},{"file":"purple.css","name":"Purple","version":"1.0.3","description":"Takeover-inspired theme","developer":"STUDIOXENIX","contents":"/* NAME Purple **/\n/* VERSION 1.0.3 **/\n/* DESCRIPTION Takeover-inspired theme **/\n/* DEVELOPER STUDIOXENIX **/\n\n.identity,\n.l-content {\n\tbackground: rgb(245, 245, 245);\n}\n\n.l-content {\n\tmargin-top: 85px;\n\twidth: 897px;\n}\n\n#posts .post_avatar_wrapper,\n#posts .post {\n\tborder-radius: 0 !important;\n\tbox-shadow: 0 0 1px 1px rgb(190, 190, 190);\n\tbox-sizing: border-box;\n}\n\n#right_column:after,\n.right_column {\n\tbackground: transparent !important;\n}\n\n.l-header {\n\tbackground: #3f1c59;\n\tborder-radius: 0 0 12px 12px;\n}\n\n.small_links a {\n\tcolor: #3f1c59 !important;\n}\n\n.notification,\n.controls_section {\n\tbackground: #3f1c59\n}\n\n.l-container.l-container--two-column .l-content,\n.l-container.l-container--two-column-dashboard .l-content,\n.l-container.l-container--two-column-dashboard .left_column {\n\tbackground: #3f1c59;\n}\n\n.l-header-container {\n\tbackground: #3f1c59;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n}\n\n.selection_nipple {\n\tdisplay: none !important;\n}\n\n.identity .controls_section.user_list li .follow_list_item_blog:before,\n.identity .controls_section.user_list li:hover .follow_list_item_blog:before,\n.radar .radar_footer .radar_avatar:before {\n\tbackground-image: linear-gradient(to right, rgba(63, 28, 89, 0), #3f1c59);\n\tborder-right: 5px solid #3f1c59;\n}\n\n.identity .controls_section li:not(.section_header):not(.selected_blog):hover,\n.post_avatar,\n.post_avatar .post_avatar_link {\n background-color: transparent !important;\n}\n\n.identity .right_column>.controls_section:first-child {\n\tmargin-top: 0;\n\tpadding-right: 20px;\n\tborder-top-right-radius: 25px;\n}\n\n#right_column {\n\tmargin-top: 0;\n\tmargin-right: 13px;\n}\n\n.compose-button {\n fill: rgba(255, 255, 255, 0.4);\n}\n\n.plus-follow-button:hover,\n.identity .controls_section .item:hover .follow:hover {\n background-color: #be9bd8;\n}\n\n.plus-follow-button {\n color: #260340;\n}\n\n.post_full .post_permalink {\n\tborder-color: #3f1c59 #3f1c59 transparent transparent;\n}\n"},{"file":"red_carpet.css","name":"Red Carpet","version":"1.0.3","description":"A simple red theme","developer":"STUDIOXENIX","contents":"/* NAME Red Carpet **/\n/* VERSION 1.0.3 **/\n/* DESCRIPTION A simple red theme **/\n/* DEVELOPER STUDIOXENIX **/\n\n.identity {\n\tbackground: #a41414 url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHCAYAAAArkDztAAAAHElEQVQImWNggABjHDRxEsZE6zDGJYFBY1NpDACF0QTJXkXSyAAAAABJRU5ErkJggg==');\n}\n\n.l-container.l-container--two-column .l-content,\n.l-container.l-container--two-column-dashboard .l-content,\n.l-container.l-container--two-column-dashboard .left_column {\n\tbackground: rgba(0, 0, 0, 0.19);\n}\n\n#right_column {\n\tbackground: none !important;\n\tmargin-top: 0;\n}\n\n.notification,\n.controls_section,\n.controls_section li {\n\tbox-shadow: none;\n\tborder: 0;\n}\n\n.controls_section * {\n\tbox-shadow: none !important;\n}\n\n.identity .controls_section.user_list li .follow_list_item_blog::before,\n.radar .radar_footer .radar_avatar::before {\n\tbackground-image: linear-gradient(to right, rgba(21, 39, 21, 0), #851010);\n\tborder-right: 5px solid #851010;\n}\n\n.identity .controls_section.user_list li:hover .follow_list_item_blog::before {\n\tbackground-image: linear-gradient(to right, rgba(27, 45, 26, 0), #ac5c5c);\n\tborder-right: 5px solid #ac5c5c;\n}\n\n.identity .controls_section li:not(.section_header):not(.selected_blog):hover,\n.controls_section li:hover {\n\tbackground-color: rgba(255, 255, 255, 0.32);\n}\n\n.controls_section li {\n\tborder: 0;\n}\n\n.selection_nipple {\n\tdisplay: none !important;\n}\n\n#right_column:after {\n\tdisplay: none !important;\n}\n\n.notification .notification_right .preview_frame {\n\tborder: 1px solid rgb(50, 50, 50);\n}\n\n.l-header *,\n.l-content * {\n\tborder-radius: 0;\n}\n\n.xoldeheader-item {\n\tborder-radius: 7px !important;\n}\n\n.post.post_full {\n\tbox-shadow: 0 0 2px 4px rgba(0, 0, 0, 0.22);\n\tborder-top: 8px solid #952b2b;\n}\n\n.post_full .post_permalink {\n\tborder-color: #952b2b #952b2b transparent transparent;\n}\n\n#new_post {\n\tborder-top: 0 !important;\n}\n\n.plus-follow-button {\n\tcolor: #690000;\n}\n\n.plus-follow-button:hover,\n.identity .controls_section .item:hover .follow:hover {\n\tbackground-color: #df8f8f;\n}\n\n.post_avatar,\n.post_avatar .post_avatar_link {\n\tbackground-color: transparent;\n}\n"},{"file":"simplicity.css","name":"Simplicity","version":"1.0.3","description":"A simple black and grey theme","developer":"longislandicedb","contents":"/* NAME Simplicity **/\n/* VERSION 1.0.3 **/\n/* DESCRIPTION A simple black and grey theme **/\n/* DEVELOPER longislandicedb **/\n\n.identity {\n\tbackground-image: url('https://new-xkit.github.io/XKit/Themes/simplicity/body-background.jpg');\n\tbackground-repeat: repeat;\n}\n\n.l-container.l-container--two-column .l-content,\n.l-container.l-container--two-column-dashboard .l-content {\n\tbackground-color: #363636;\n}\n\n.l-container.l-container--two-column-dashboard .left_column,\n#right_column {\n\tbackground: transparent;\n\tmargin-top: 0;\n}\n\n.post {\n\tbackground-color: #656565;\n\tborder-radius: 20px;\n}\n\n.post_content,\n.post-container {\n\tbackground: transparent !important;\n}\n\n#right_column:after {\n\tbackground: none !important;\n}\n\n.controls_section li {\n\tbackground: black;\n}\n\n.identity .controls_section.user_list li .follow_list_item_blog:before {\n\tbackground-image: linear-gradient(to right, rgba(27, 45, 26, 0), #000);\n\tborder-right: 5px solid #000;\n}\n\n.radar .radar_footer .radar_avatar:before {\n\tbackground-image: linear-gradient(to right, rgba(27, 45, 26, 0), #363636);\n\tborder-right: 5px solid #363636;\n}\n\n.identity .controls_section.user_list li:hover .follow_list_item_blog:before {\n\tbackground-image: linear-gradient(to right, rgba(27, 45, 26, 0), #767676);\n\tborder-right: 5px solid #767676;\n}\n\n.identity .controls_section li:not(.section_header):not(.selected_blog):hover {\n background-color: #767676;\n}\n\n.post_full .post_permalink {\n\tborder-color: #363636 #363636 transparent transparent;\n}\n\n.plus-follow-button:hover,\n.identity .controls_section .item:hover .follow:hover {\n background-color: #aaa;\n}\n\n.post_avatar,\n.post_avatar .post_avatar_link {\n\tbackground-color: transparent;\n}\n"},{"file":"text.css","name":"Text","version":"1.0.4","description":"Slightly modified Default theme","developer":"STUDIOXENIX","contents":"/* NAME Text **/\n/* VERSION 1.0.4 **/\n/* DESCRIPTION Slightly modified Default theme **/\n/* DEVELOPER STUDIOXENIX **/\n\n.identity {\n\tbackground: #3c5a76 url('https://new-xkit.github.io/XKit/Themes/text/body-background.png') no-repeat center top !important;\n}\n\n.selection_nipple,\n.permalink {\n\tvisibility: hidden !important;\n}\n\n.recessed {\n\tbackground: rgba(0, 0, 0, 0.25) !important;\n\topacity: 0.8 !important;\n\t-webkit-transition: 0.3s ease-in;\n\t-moz-transition: 0.3s ease-in;\n\t-o-transition: 0.3s ease-in;\n\ttransition: 0.3s ease-in;\n}\n\n.controls_section:not(.controls_section.follow_list.recommended_tumblelogs) {\n\tbox-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.09) !important;\n\tborder: 1px solid rgba(0, 0, 0, 0.25) !important;\n\tbackground: rgba(20, 40, 70, 0.25) !important;\n\topacity: 1 !important;\n}\n\n.l-header {\n\topacity: 0.8 !important;\n\t-webkit-transition: 0.4s ease-in;\n\t-moz-transition: 0.4s ease-in;\n\t-o-transition: 0.4s ease-in;\n\ttransition: 0.4s ease-in;\n}\n\n.svg-logo {\n\topacity: 0.5 !important;\n\t-webkit-transition: 0.4s ease-in;\n\t-moz-transition: 0.4s ease-in;\n\t-o-transition: 0.4s ease-in;\n\ttransition: 0.4s ease-in;\n}\n\n.l-header:hover,\n.svg-logo:hover {\n\topacity: 1 !important;\n\t-webkit-transition: 0.4s ease-in;\n\t-moz-transition: 0.4s ease-in;\n\t-o-transition: 0.4s ease-in;\n\ttransition: 0.4s ease-in;\n}\n\na {\n\t-webkit-transition: 0.4s ease-in;\n\t-moz-transition: 0.4s ease-in;\n\t-o-transition: 0.4s ease-in;\n\ttransition: 0.4s ease-in;\n}\n\nul.controls_section li {\n\ttext-shadow: 0 -1px 0 0 rgba(0, 0, 0, 0.12) !important;\n\t-webkit-transition: 0.3s ease-in;\n\t-moz-transition: 0.3s ease-in;\n\t-o-transition: 0.3s ease-in;\n\ttransition: 0.3s ease-in;\n}\n\nul.controls_section li:hover {\n\tbackgrjound: rgba(20, 40, 70, 0.35) !important;\n\t-webkit-transition: 0.3s ease-in;\n\t-moz-transition: 0.3s ease-in;\n\t-o-transition: 0.3s ease-in;\n\ttransition: 0.3s ease-in;\n}\n\nli.post {\n\tbox-shadow: 0 -1px 0 0 rgba(0, 0, 0, 0.22) !important;\n\topacity: 0.99 !important;\n\t-webkit-transition: 0.3s ease-in;\n\t-moz-transition: 0.3s ease-in;\n\t-o-transition: 0.3s ease-in;\n\ttransition: 0.3s ease-in;\n}\n\nli.post:hover {\n\topacity: 1 !important;\n\t-webkit-transition: 0.5s ease-in;\n\t-moz-transition: 0.5s ease-in;\n\t-o-transition: 0.5s ease-in;\n\ttransition: 0.5s ease-in;\n}\n\n.l-content {\n\tbackground: transparent !important;\n\tmargin-top: 8px !important;\n\tpadding-top: 0 !important;\n}\n\n.l-container.l-container--two-column-dashboard .left_column {\n\tbackground: transparent;\n}\n\n#right_column:after {\n\tdisplay: none !important;\n}\n\n.post_avatar,\n.post_avatar .post_avatar_link {\n\tbackground-color: transparent;\n}\n"},{"file":"white.css","name":"White","version":"1.0.3","description":"A basic white dashboard","developer":"period-doritos","contents":"/* NAME White **/\n/* VERSION 1.0.3 **/\n/* DESCRIPTION A basic white dashboard **/\n/* DEVELOPER period-doritos **/\n\nbody.layout_standard,\n#pagination a,\n#auto_pagination_loader {\n\tbackground: #ffffff;\n\tborder: none;\n}\n\n.l-container.l-container--two-column .l-content,\n.l-container.l-container--two-column-dashboard .l-content,\n.l-container.l-container--flex .l-content,\n.l-container.l-container--two-column .right_column,\n.l-container.l-container--two-column-dashboard .right_column,\n.l-container.l-container--two-column .left_column,\n.l-container.l-container--two-column-dashboard .left_column {\n\tbackground-color: #ffffff;\n}\n\n.l-header .selection_nipple {\n\tborder-bottom: 12px solid #000000;\n}\n\n.controls_section,\n.radar .radar_post,\n.dashboard_options_form,\n.tag_psa,\n.post_avatar_wrapper,\n.notification.single_notification,\n.controls_section .recessed,\n.controls_section .recessed:hover {\n\tbackground: #ffffff;\n\tborder: 1px solid rgba(0, 0, 0, .18);\n}\n\n.post_full .post_body,\n.post_full .post_body a,\n.post .post_tags a {\n\tfont-size: 12px !important;\n\tline-height: auto;\n}\n\n.post_full .post_body big {\n\tfont-size: larger;\n\tline-height: auto;\n}\n\n.post_full .post_body small {\n\tfont-size: smaller;\n\tline-height: auto;\n}\n\n.controls_section li a,\n.identity .controls_section li:not(.section_header):not(.selected_blog):hover,\n#tumblr_radar,\n#right_column #popover_button_blogs .link_arrow,\n#blog_url_arrow,\n#right_column .small_links,\n.sidebar_link,\n.elevator-wrapper .elevator,\n#return_to_bottom .return_to_bottom_icon,\n.l-header .tab.iconic a,\n.popover_blogs span,\n.radar .radar_button i,\n.radar .radar_tumblelog_label,\n.notification .notification_sentence,\n.xtag .result,\n.xtag,\n#fan_mail_controls div,\n.no_posts_found,\n.svg-logo {\n\t-webkit-filter: invert(1);\n\tfilter: invert(1);\n}\n\n.controls_section a .count,\n.xbookmark a::after {\n\t-webkit-filter: grayscale(1);\n\tfilter: grayscale(1);\n}\n\n#dashboard_controls a,\n#dashboard_controls .control,\n.notification .report,\n.notification .block,\na.xkit-reply-button {\n\t-webkit-filter: invert(1) grayscale(1);\n\tfilter: invert(1) grayscale(1);\n\ttext-shadow: none;\n}\n\n#right_column:after {\n\tbackground: transparent;\n}\n\n.dashboard_options_form,\n.tag_psa,\n.footer_links a:hover,\n#pagination a,\n.post_full .post_avatar .queue .publish_info.time {\n\tcolor: rgba(0, 0, 0, .7);\n}\n\n.dashboard_options_form .dashboard_options_form_disclaimer,\n.dashboard_options_form .dashboard_options_form_disclaimer a,\n.footer_links a,\n#pagination a:hover,\n.post_full .post_avatar .queue .publish_info.day {\n\tcolor: rgba(0, 0, 0, .4);\n}\n\n.blog_menu .selected_blog #open_blog_link,\n.controls_section li .blog small {\n\tcolor: rgba(255, 255, 255, .4);\n}\n\n.notification .report,\n.notification .block,\na.xkit-reply-button {\n\tcolor: #000000 !important;\n}\n\n.notification .notification_sentence {\n\tmax-width: 460px;\n}\n\n.notification.can_ignore:hover .notification_sentence .hide_overflow {\n\tmax-width: 380px;\n}\n\n#dashboard_tumblelog_settings .l-content {\n\tbackground-color: #ffffff;\n}\n\n#dashboard_tumblelog_settings .l-header .selection_nipple {\n\tborder: none;\n}\n\na#xshufflequeue_button {\n\tbackground-position: 10px 25% !important;\n}\n.xhighlighter_highlightered_post {\n\tbox-shadow: 0 0 6px 4px rgba(0, 0, 0, 0.45);\n}\n.post_full .post_body {\n\tpadding: 0;\n}\n\n.bluthSkin table.mceLayout tr.mceLast td {\n\theight: 12px;\n}\n\n.post_full .post_permalink {\n\tborder-color: #fff #fff transparent transparent;\n}\n\n.identity .controls_section.user_list li .follow_list_item_blog:before,\n.radar .radar_footer .radar_avatar:before {\n\tbackground-image: linear-gradient(to right, rgba(27, 45, 26, 0), #000);\n\tborder-right: 5px solid #000;\n}\n\n.identity .controls_section.user_list li:hover .follow_list_item_blog:before {\n\tbackground-image: linear-gradient(to right, rgba(27, 45, 26, 0), #c3b39d);\n\tborder-right: 5px solid #c3b39d;\n}\n\n.identity .controls_section .item:hover .follow:hover {\n\tcolor: black;\n\tbackground-color: #ad6133;\n}\n\n.post_avatar,\n.post_avatar .post_avatar_link {\n\tbackground-color: transparent;\n}\n"},{"file":"xblack.css","name":"XBlack","version":"1.0.3","description":"A minimalistic black theme","developer":"STUDIOENIX","contents":"/* NAME XBlack **/\n/* VERSION 1.0.3 **/\n/* DESCRIPTION A minimalistic black theme **/\n/* DEVELOPER STUDIOENIX **/\n\n.identity {\n\tbackground: black;\n}\n\n.l-content,\n.left_column {\n\tbackground: black !important;\n}\n\n#right_column {\n\tbackground: none !important;\n\tcolor: black;\n}\n\n.notification,\n.controls_section,\n.controls_section li {\n\tbackground-color: black;\n\tbox-shadow: none;\n\tborder: 0;\n}\n\n.controls_section * {\n\tbox-shadow: none !important;\n}\n\n.controls_section li:hover {\n\tbackground-color: rgb(40, 40, 40);\n}\n\n.controls_section li {\n\tborder: 0;\n}\n\n.selection_nipple {\n\tdisplay: none !important;\n}\n\n#right_column:after {\n\tdisplay: none !important;\n}\n\n.notification .notification_right .preview_frame {\n\tborder: 1px solid rgb(50, 50, 50);\n}\n\n.l-header *,\n.l-content * {\n\tborder-radius: 0px;\n}\n\n.xoldeheader-item {\n\tborder-radius: 7px !important;\n}\n\n.identity .controls_section.user_list li .follow_list_item_blog:before,\n.radar .radar_footer .radar_avatar:before {\n\tbackground-image: linear-gradient(to right, rgba(0, 0, 0, 0), #000);\n\tborder-right: 5px solid #000;\n}\n\n.identity .controls_section.user_list li:hover .follow_list_item_blog::before {\n\tbackground-image: linear-gradient(to right, rgba(0, 0, 0, 0), #666);\n\tborder-right: 5px solid #666;\n}\n\n.identity .controls_section li:not(.section_header):not(.selected_blog):hover {\n background-color: #666;\n}\n\n.plus-follow-button:hover,\n.identity .controls_section .item:hover .follow:hover {\n background-color: #aaa;\n}\n\n.plus-follow-button {\n color: #111;\n}\n\n.post_full .post_permalink {\n\tborder-color: #000 #000 transparent transparent;\n}\n\n.post_avatar,\n.post_avatar .post_avatar_link {\n\tbackground-color: transparent;\n}\n"}]} \ No newline at end of file diff --git a/Extensions/dist/panaroma.json b/Extensions/dist/panaroma.json new file mode 100644 index 000000000..61cdfe2ba --- /dev/null +++ b/Extensions/dist/panaroma.json @@ -0,0 +1 @@ +{"id":"panaroma","script":"//* TITLE Panorama **//\n//* VERSION 2.0.0 **//\n//* DESCRIPTION Widescreen dashboard **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* DETAILS This extension extends your dashboard to fit the screen. It this an experimental extension, and no support for it provided yet. **//\n//* BETA false **//\n//* SLOW true **//\n\nXKit.extensions.panaroma = new Object({\n\n\trunning: false,\n\tslow: true,\n\n\tpreferences: {\n\t\tstretch_images: {\n\t\t\ttext: \"Stretch images\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (XKit.page.react) {\n\t\t\tconst header_max_width = 1580;\n\t\t\tconst container_max_width = 990;\n\n\t\t\tconst increase_by = header_max_width - container_max_width;\n\n\t\t\tXKit.tools.async_add_function(async () => {\n\t\t\t\t/* globals tumblr */\n\t\t\t\treturn await tumblr.getCssMap();\n\t\t\t})\n\t\t\t.then(({bluespaceLayout, container, main, audioBlock, videoBlock}) => {\n\t\t\t\tconst containerSelector = container.map(x => `.${bluespaceLayout[0]} > .${x}`).join(',');\n\t\t\t\tconst mainSelector = main.map(x => `.${x}`).join(',');\n\n\t\t\t\tconst $container = $(containerSelector);\n\t\t\t\tconst $main = $container.children(mainSelector);\n\t\t\t\tconst $inner_main = $main.children('main');\n\n\t\t\t\tconst main_max_width = parseInt($main.css('max-width'));\n\t\t\t\tconst inner_main_max_width = parseInt($inner_main.css('max-width'));\n\n\t\t\t\tconst new_main_max_width = main_max_width + increase_by;\n\t\t\t\tconst new_inner_main_max_width = inner_main_max_width + increase_by;\n\n\t\t\t\tXKit.tools.add_css(`\n\t\t\t\t\t.xkit--react ${containerSelector} {\n\t\t\t\t\t\tmax-width: ${header_max_width}px;\n\t\t\t\t\t}\n\t\t\t\t\t.xkit--react ${mainSelector} {\n\t\t\t\t\t\tmax-width: ${new_main_max_width}px;\n\t\t\t\t\t}\n\t\t\t\t\t.xkit--react main,\n\t\t\t\t\t.xkit--react main article,\n\t\t\t\t\t.xkit--react main article > *,\n\t\t\t\t\t.xkit--react .${audioBlock[0]},\n\t\t\t\t\t.xkit--react .${videoBlock[0]} {\n\t\t\t\t\t\tmax-width: ${new_inner_main_max_width}px;\n\t\t\t\t\t}\n\t\t\t\t`, 'panaroma');\n\t\t\t});\n\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.tools.init_css(\"panaroma\");\n\n\t\tif (XKit.extensions.panaroma.preferences.stretch_images.value === true) {\n\n\t\t\tXKit.tools.add_css(\"#posts .post .image_thumbnail.enlarged { width: 100% !important; height: auto !important; } #posts .post .flipcard, #posts .post .flipcard_front, #posts .post_content .image { width: 100% !important; height: auto !important; }\", \"panaroma_str\");\n\n\t\t}\n\n\t\t//removed \"www.tumblr.com/ignore\" references, no longer exists\n\t\tif (document.location.href.indexOf(\"://www.tumblr.com/lookup\") !== -1 ||\n\t\t\tdocument.location.href.indexOf(\"://www.tumblr.com/spotlight\") !== -1 ||\n\t\t\tdocument.location.href.indexOf(\"://www.tumblr.com/following\") !== -1) {\n\t\t\tXKit.extensions.panaroma.do_directory_fixes();\n\t\t}\n\n\t\tXKit.post_listener.add(\"panorama_resize\", XKit.extensions.panaroma.resized_auto);\n\t\t$(window).on('resize', XKit.extensions.panaroma.resized);\n\t\tXKit.extensions.panaroma.resized();\n\t},\n\n\t//added fixes for Spotlight a.k.a. \"Staff Picks\" page and removed obsolete fixes for Ignore page\n\tdo_directory_fixes: function() {\n\n\t\tvar m_css = \" .l-content { padding-bottom: 30px!important; border-radius: 20px!important; background: white!important; } .content_top, .content_bottom { display: none!important; } #tabs { background: #eaeaea!important; } #tabs.tabs_3 .tab { width: 33%!important; } #tabs.tabs_3 .tab:last-child { width: 32%!important; } \";\n\n\t\tif (document.location.href.indexOf(\"://www.tumblr.com/spotlight\") !== -1) {\n\t\t\tm_css = m_css + \" .chrome_nav { width: 24%!important; min-width: 230px!important; } #cards { width: 75%!important; min-width: 650px!important; } #cards .card{ width:30%!important; min-width:190px!important; }#content { padding-top: 30px!important; } \";\n\t\t}\n\n\t\tXKit.tools.add_css(m_css, \"panaroma_directory\");\n\n\t},\n\n\tresized_auto: function() {\n\n\t\tXKit.extensions.panaroma.resized(true);\n\n\t},\n\n\tresized: function(auto_mode) {\n\n\t\tvar m_width = $(\".post.is_note .post_wrapper\").width() - 70;\n\t\tconsole.log(m_width);\n\t\tif (m_width <= 400) { m_width = 500; }\n\t\t$(\".post.is_note .note_item\").css(\"width\", m_width + \"px\");\n\n\t},\n\n\tdestroy: function() {\n\t\tXKit.tools.remove_css(\"panaroma\");\n\t\tXKit.tools.remove_css(\"panaroma_str\");\n\t\tXKit.tools.remove_css(\"panaroma_two_column\");\n\t\tXKit.tools.remove_css(\"panaroma_directory\");\n\t\t$(window).off('resize', XKit.extensions.panaroma.resized);\n\t\tXKit.post_listener.remove(\"panorama_resize\");\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjdBMzE5NTBCNEJFMTFFMkJGQjZENkUwMjNDREIzNjUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjdBMzE5NTFCNEJFMTFFMkJGQjZENkUwMjNDREIzNjUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyN0EzMTk0RUI0QkUxMUUyQkZCNkQ2RTAyM0NEQjM2NSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyN0EzMTk0RkI0QkUxMUUyQkZCNkQ2RTAyM0NEQjM2NSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pim9Y4YAAAMFSURBVHjalFY9qpUxEJ25ZAE2FvIaEeS1go2dpfo2YGGjdmJppYilpY3iCgRxAVYWdmIpWFkoWAhaCG7gzTHJTCaT5Htwby73+8mXnMxMzpwJ333ykggk+V8aACo/EYE38VseUK61R6CjdUZ5rfN1FPSNaFcu4PzCZF3QKawrli79RFzueazCkhtUb3UgxDD0X4Ylchgd5jPFJoY+yo5RbAG9XFmfWV3SScnNAaupxVeWPrGtV6M0oiOYBvcDJSDNTEodHWRr5R0YkMalpEWRhm1TOO/n5n0C23ZU7/tEFCihdg0h97ALKSGWFqOa0KOB4SpCgSK6Dsb4NHyPFQK8uZFiYI1jTMY1jRlaDJp3jYohgDag7XQgTtJZD++cvHrz/tqV4z9//33/+fvti0d0eLt5/9nxpaML5899/Pz18YPbz1+/y8i7Egvx0CCjb4Z1n5YBvv34pVkVPTB3NVQiQ6gPXSL87T2hb6qoPvjwD5++2D62zes06z3FspPrV4fMC2mSpCWn540vMWO5wAT06G2kC3Wa2tTiQmaHatw0DpHwmDA58sl2sg/NNM0eVBWTTspIswkdi1RsLBg9SmKwphMy2E+0oGN2A4NeqfSHnfZEc9GPOrSNfgb+IhumRaZBZOFHFJ6Fe1gisqqQCnLrSIJpf4Ah1aPhk40zfH/dMTWoZDbBZFg0htMKe9g+7FsvHpy6rpUQcVXNkeIz9OrW+CQcg5tcGJVEUr2g/aCnZxN2wgaLankxFrX6T7eaAOytRGt2066Ke41KWZsvXzwKLhyqdZLlugKZepa8u3HvqR9Z4ETrFydBrMkUy1mtUENYQirlYwtoPi6MZZWp42gcOB9Mwja28m7QzAPNQh4seYqJkKKMWzN2CH08I6gHiCaa5S6R7AcIXvWhCfGoXTx8T6AoYXGdinmKVgGFpqn9rOUTMVqnNJ10JH89RagDNBkwHuOmCjWzVMrJToKIMedDo2xlUsBmo82kr0uTOjRhLJLNY572wgoVM4VDEp9xPJBQdP8LMACU3YogjgSdLQAAAABJRU5ErkJggg==","css":"body {\n\toverflow-x: hidden;\n}\n\n.l-container{\n\tmin-width: 900px; width: auto !important; margin: 0px !important;\n\tpadding: 70px 0px 0px 0px !important;\n}\n\n.l-content {\n\tmin-width: 900px;\n\tmargin: 0; width: 100%;\n\tpadding: 20px;\n\tborder-radius: 0px !important;\n\t-moz-border-radius: 0px !important;\n\t-webkit-border-radius: 0px !important;\n\t-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;\n}\n\n#new_post {\n\tposition: relative;\n}\n\n#new_post #post_buttons {\n\tleft: 50%;\n\tmargin-left:-266px;\n\tposition: absolute;\n}\n\n.notification {\n\twidth: 100%;\n}\n\n.notes .note {\n\twidth: 100% !important; -webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box; box-sizing: border-box;\n}\n\n#right_column {\n\twidth: 25%; min-width: 215px; padding-left: 15px;\n\t-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;\n}\n\n#left_column {\n\twidth: 75%; min-width: 625px;\n}\n\n.new_post_buttons.xkit-new-post-scrolls {\n\tmax-width: 600px;\n}\n\n#posts .post_container .post_full {\n\twidth: 100% !important;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box; box-sizing: border-box;\n}\n\n#header #tabs_outer_container {\n\tleft: auto; right: 5px !important;\n}\n","title":"Panorama","description":"Widescreen dashboard","developer":"STUDIOXENIX","version":"2.0.0","details":"This extension extends your dashboard to fit the screen. It this an experimental extension, and no support for it provided yet.","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/people_notifier.json b/Extensions/dist/people_notifier.json new file mode 100644 index 000000000..4ad228696 --- /dev/null +++ b/Extensions/dist/people_notifier.json @@ -0,0 +1 @@ +{"id":"people_notifier","script":"//* TITLE Blog Tracker **//\n//* VERSION 0.6.7 **//\n//* DESCRIPTION Track people like tags **//\n//* DEVELOPER new-xkit **//\n//* DETAILS Blog Tracker lets you track blogs like you can track tags. Add them on your dashboard, and it will let you know how many new posts they've made the last time you've checked their blogs, or if they've changed their URLs.

      Please be aware that the more blogs you add, the longer it will take to track them all. **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.people_notifier = new Object({\n\n\trunning: false,\n\tapiKey: \"SGNopnlvTovnqk902dJIjDAvxcZgCDBlPzaaw310IQSupIzkHb\",\n\n\tblogs: [],\n\n\tpreferences: {\n\t\t\"open_new_tab\": {\n\t\t\ttext: \"Open tumblr blogs in a new window\",\n\t\t\tvalue: false,\n\t\t\tdefault: false\n\t\t}\n\t},\n\n\tmax_tracks: 30,\n\tcheck_interval: 600000,\n\n\tframe_run: function() {\n\n\t\tvar username = $(\"#tumblelog_name\").attr(\"data-tumblelog-name\");\n\t\tconsole.log(\"people-notifier -> in blog of \" + username + \", checking to see if we should mark it checked.\");\n\n\t\tXKit.extensions.people_notifier.load_blogs();\n\n\t\tif (XKit.extensions.people_notifier.check_if_in_list(username) !== true) {console.log(\"|-- not in person track list.\"); return; }\n\n\t\tfor (var person in XKit.extensions.people_notifier.blogs) {\n\t\t\tif (XKit.extensions.people_notifier.blogs[person].url === username) {\n\t\t\t\tconsole.log(\"|-- found and replaced last_check.\");\n\t\t\t\tXKit.extensions.people_notifier.blogs[person].last_check = new Date().getTime();\n\t\t\t\tXKit.extensions.people_notifier.blogs[person].count = 0;\n\t\t\t\tXKit.extensions.people_notifier.save();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t},\n\n\tset_read_count: function(username, count) {\n\n\t\tfor (var person in XKit.extensions.people_notifier.blogs) {\n\t\t\tif (XKit.extensions.people_notifier.blogs[person].url === username) {\n\t\t\t\tXKit.extensions.people_notifier.blogs[person].count = count;\n\t\t\t\tXKit.extensions.people_notifier.save();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t},\n\n\tload_blogs: function() {\n\n\t\tvar blogs_str = XKit.storage.get(\"people_notifier\", \"blogs\", \"\");\n\n\t\tvar blogs_obj;\n\n\t\ttry {\n\t\t\tblogs_obj = JSON.parse(blogs_str);\n\t\t} catch (e) {\n\t\t\tblogs_obj = [];\n\t\t}\n\n\t\tthis.blogs = blogs_obj;\n\n\t\tconsole.log(this.blogs);\n\n\t},\n\n\tshould_render: function() {\n\t\tvar pages_where_we_shouldnt_render = [\n\t\t\t\"www.tumblr.com/docs/\",\n\t\t\t\"www.tumblr.com/policy/\",\n\t\t\t\"api.tumblr.com/console/\"\n\t\t];\n\t\treturn pages_where_we_shouldnt_render.every(function(page) {\n\t\t\treturn document.location.href.indexOf(page) === -1;\n\t\t});\n\t},\n\n\trun: function() {\n\t\tif (!this.should_render()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.running = true;\n\n\t\tXKit.tools.init_css(\"people_notifier\");\n\n\t\tthis.load_blogs();\n\n\t\tif ($(\".posts .post\").length > 0) {\n\n\t\t\tXKit.post_listener.add(\"people_notifier\", XKit.extensions.people_notifier.do_posts);\n\t\t\tthis.do_posts();\n\n\t\t}\n\n\t\tthis.list_blogs();\n\n\t},\n\n\tdo_posts: function() {\n\n\t\tvar posts = XKit.interface.get_posts(\"xkit-people-notifier-checked\");\n\n\t\t$(posts).each(function() {\n\n\t\t\t$(this).addClass(\"xkit-people-notifier-checked\");\n\n\t\t\tvar m_post = XKit.interface.post($(this));\n\n\t\t\tif (XKit.extensions.people_notifier.check_if_in_list(m_post.owner) !== true) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tXKit.extensions.people_notifier.add_to_read_posts_list(m_post.owner, m_post.id);\n\n\t\t});\n\n\t\tXKit.extensions.people_notifier.save();\n\n\t},\n\n\tadd_to_read_posts_list: function(url, post_id) {\n\n\t\tfor (var i = 0; i < XKit.extensions.people_notifier.blogs.length; i++) {\n\n\t\t\tif (XKit.extensions.people_notifier.blogs[i].url === url) {\n\n\t\t\t\tif (XKit.extensions.people_notifier.blogs[i].last_20_posts.length >= 20) {\n\t\t\t\t\tXKit.extensions.people_notifier.blogs[i].last_20_posts.pop();\n\t\t\t\t}\n\n\t\t\t\tif (XKit.extensions.people_notifier.blogs[i].last_20_posts.indexOf(post_id) === -1) {\n\t\t\t\t\tconsole.log(\"Adding \" + post_id + \" to list.\");\n\t\t\t\t\tXKit.extensions.people_notifier.blogs[i].last_20_posts.unshift(post_id);\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tcheck_if_in_list: function(url) {\n\n\t\tfor (var i = 0; i < XKit.extensions.people_notifier.blogs.length; i++) {\n\n\t\t\tif (XKit.extensions.people_notifier.blogs[i].url === url) { return true; }\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tsave: function() {\n\n\t\tXKit.storage.set(\"people_notifier\", \"blogs\", JSON.stringify(XKit.extensions.people_notifier.blogs));\n\n\t},\n\n\tshow_error: function(title, msg) {\n\n\t\tXKit.window.show(title, msg, \"error\", \"
      OK
      \");\n\n\t},\n\n\tshow_error_on_sidebar_blog: function(url, changed) {\n\n\t\tif (!changed) {\n\t\t\t$(\"#xkit-people-notifier-for---\" + url).addClass(\"people-notifier-error\");\n\t\t\t$(\"#xkit-people-notifier-for---\" + url).find(\".count\").html(\"error\");\n\t\t} else {\n\t\t\t$(\"#xkit-people-notifier-for---\" + url).addClass(\"people-notifier-changed\");\n\t\t\t$(\"#xkit-people-notifier-for---\" + url).find(\".count\").html(\"changed\");\n\t\t}\n\n\t},\n\n\tcheck_blog: function(url, obj) {\n\n\t\tvar api_url = \"https://api.tumblr.com/v2/blog/\" + url + \".tumblr.com/posts\" + \"?api_key=\" + XKit.extensions.people_notifier.apiKey;\n\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: api_url,\n\t\t\tjson: true,\n\t\t\tonerror: function(response) {\n\t\t\t\tconsole.log(\"people-notifier -> Error getting page.\");\n\t\t\t\tXKit.extensions.people_notifier.show_error_on_sidebar_blog(url);\n\t\t\t\treturn;\n\t\t\t},\n\t\t\tonload: function(response) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\tvar data = JSON.parse(response.responseText).response;\n\t\t\t\t\tconsole.log(\" |-- last post timestamp = \" + (data.posts[0].timestamp * 1000) + \" vs last-check = \" + obj.last_check);\n\n\t\t\t\t\tif (data.blog.posts === 0 || data.blog.posts <= 2) {\n\t\t\t\t\t\tXKit.extensions.people_notifier.show_error_on_sidebar_blog(url, true);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar do_continue_lads = true;\n\t\t\t\t\tvar lad_count = -1;\n\t\t\t\t\tvar found_count = 0;\n\n\t\t\t\t\twhile (do_continue_lads) {\n\n\t\t\t\t\t\tlad_count++;\n\t\t\t\t\t\tif (lad_count >= 30) {break; }\n\n\t\t\t\t\t\tif (typeof data.posts[lad_count] == \"undefined\")\n\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t\tif (typeof obj.last_20_posts === \"undefined\") {\n\t\t\t\t\t\t\tobj.last_20_posts = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof obj.last_post_id != \"undefined\" && typeof data.posts[lad_count].id != \"undefined\") {\n\t\t\t\t\t\t\tif (obj.last_post_id == data.posts[lad_count].id && obj.last_post_id !== 0) {\n\t\t\t\t\t\t\t\tconsole.log(\"people-notifier ----> Skipping, the last post seen. [\" + obj.last_post_id + \"]\");\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (data.posts[lad_count]) {\n\t\t\t\t\t\t\tif ((data.posts[lad_count].timestamp * 1000) >= obj.last_check) {\n\t\t\t\t\t\t\t\tconsole.log(\"\\-- Found post = \" + data.posts[lad_count].id);\n\t\t\t\t\t\t\t\tfound_count++;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.log(\"\\-- Older posts already checked.\");\n\t\t\t\t\t\t\t\tdo_continue_lads = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof data.posts[0].id != \"undefined\") {\n\t\t\t\t\t\tif (data.posts[0].id !== 0) {\n\t\t\t\t\t\t\tobj.last_post_id = data.posts[0].id;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tobj.last_check = new Date().getTime();\n\t\t\t\t\tXKit.extensions.people_notifier.save();\n\n\t\t\t\t\tif (found_count > 0) {\n\n\t\t\t\t\t\tXKit.extensions.people_notifier.set_read_count(url, obj.count + found_count);\n\n\t\t\t\t\t\t$(\"#xkit-people-notifier-for---\" + url).find(\".count\").html(obj.count + found_count);\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.log(\"people-notifier -> no unread posts found for \" + url);\n\n\t\t\t\t\t\tif (typeof obj.count === \"undefined\" || parseInt(obj.count) === 0) {\n\t\t\t\t\t\t\t$(\"#xkit-people-notifier-for---\" + url).find(\".count\").html(\"\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$(\"#xkit-people-notifier-for---\" + url).find(\".count\").html(obj.count);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.log(\"people-notifier -> Error parsing data. \" + e.message);\n\t\t\t\t\tXKit.extensions.people_notifier.show_error_on_sidebar_blog(url);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t}\n\t\t});\n\n\t},\n\n\tlist_blogs: function() {\n\n\t\tvar m_html = \"\";\n\t\tvar text_color = \"rgba(255, 255, 255, 0.5)\";\n\t\tif (XKit.interface.where().following) {\n\t\t\ttext_color = \"#444\";\n\t\t}\n\t\t$(\"#xpeoplenotifier\").remove();\n\n\t\tif (this.blogs.length === 0) {\n\n\t\t\tm_html = \"
      \" +\n\t\t\t\t\t\t\"You have no tracked blogs.
      Add one below.\" +\n\t\t\t\t\t\"
      \";\n\n\t\t} else {\n\n\t\t\tvar current_ms = new Date().getTime();\n\t\t\tfor (var i = 0; i < this.blogs.length; i++) {\n\n\t\t\t\tm_html = m_html + '
    7. ' +\n\t\t\t\t\t\t\t\t'' +\n\t\t\t\t\t\t\t\t'' +\n\t\t\t\t\t\t\t\t\t'
      ' + this.blogs[i].url + '
      ' +\n\t\t\t\t\t\t\t\t\t'
      ' +\n\t\t\t\t\t\t\t\t\t'
      ';\n\n\n\t\t\t\tvar difference = current_ms - this.blogs[i].last_check;\n\n\t\t\t\tif (difference <= -1 || difference >= XKit.extensions.people_notifier.check_interval) {\n\t\t\t\t\tm_html = m_html + \"
      loading
      \";\n\t\t\t\t\tsetTimeout(this.check_blog, 250 * (i + 1), this.blogs[i].url, this.blogs[i]);\n\t\t\t\t} else {\n\t\t\t\t\tif (this.blogs[i].count === 0) {\n\t\t\t\t\t\tm_html = m_html + \"
      \";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tm_html = m_html + \"
      \" + this.blogs[i].count + \"
      \";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tm_html = m_html + \"
    8. \";\n\t\t\t}\n\t\t}\n\n\t\tm_html = m_html + '
    9. Add a new person
    10. ';\n\n\t\tm_html = '
      • Tracked Blogs
      • ' + m_html + '
      ';\n\n\t\tif ($(\".controls_section:eq(1)\").length) {\n\t\t\t$(\".controls_section:eq(1)\").before(m_html);\n\t\t} else {\n\t\t\t$(\"#right_column\").append(m_html);\n\t\t}\n\n\t\t$(document).on(\"mouseenter\", \".xkit-people-notifier-person\", function() {\n\t\t\t$(this).find(\".xkit-people-notifier.close\").css(\"display\", \"\");\n\t\t\t$(this).find('.count').css('marginRight', '15px');\n\t\t});\n\t\t$(document).on(\"mouseleave\", \".xkit-people-notifier-person\", function() {\n\t\t\t$(this).find(\".xkit-people-notifier.close\").css(\"display\", \"none\");\n\t\t\t$(this).find('.count').css('marginRight', '0');\n\t\t});\n\n\t\tvar dragging;\n\t\tvar dragtarget;\n\t\t$(document).on(\"dragstart\", \".xkit-people-notifier-person\", function(e) {\n\t\t\tdragging = $(this);\n\t\t\te.originalEvent.dataTransfer.setData(\"application/x-kit\", $(this).text().replace(\"☰✖\", \"\"));\n\t\t});\n\t\t$(document).on(\"dragenter\", \".xkit-people-notifier-person\", function(e) {\n\t\t\tif (e.originalEvent.dataTransfer.types[0] === \"application/x-kit\") {\n\t\t\t\te.preventDefault();\n\t\t\t\tdragtarget = $(this);\n\t\t\t}\n\t\t});\n\t\t$(document).on(\"dragover\", \".xkit-people-notifier-person\", function(e) {\n\t\t\tif (e.originalEvent.dataTransfer.types[0] === \"application/x-kit\") {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t});\n\t\t$(document).on(\"drop\", \".xkit-people-notifier-person\", function(e) {\n\t\t\tvar half_div_height = 13;\n\t\t\tvar index_of_object_with_property = function(array, property_name, property_value) {\n\t\t\t\tfor (var j = 0; j < array.length; j++) {\n\t\t\t\t\tif (array[j][property_name] === property_value) {\n\t\t\t\t\t\treturn j;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn -1;\n\t\t\t};\n\t\t\tif (dragtarget[0] !== dragging[0]) {\n\t\t\t\tvar target_index = index_of_object_with_property(XKit.extensions.people_notifier.blogs, 'url', $(dragtarget).attr('data-url'));\n\t\t\t\tvar dragging_index = index_of_object_with_property(XKit.extensions.people_notifier.blogs, 'url', $(dragging).attr('data-url'));\n\t\t\t\tvar dragging_obj = XKit.extensions.people_notifier.blogs[dragging_index];\n\t\t\t\tvar top_of_target = dragtarget.offset().top;\n\t\t\t\tdragging.detach();\n\t\t\t\tif (e.originalEvent.pageY - top_of_target > half_div_height) {\n\t\t\t\t\tdragtarget.after(dragging);\n\t\t\t\t\ttarget_index++;\n\t\t\t\t} else {\n\t\t\t\t\tdragtarget.before(dragging);\n\t\t\t\t}\n\t\t\t\tif (dragging_index < target_index) {\n\t\t\t\t\ttarget_index--;\n\t\t\t\t}\n\t\t\t\tXKit.extensions.people_notifier.blogs.splice(dragging_index, 1);\n\t\t\t\tXKit.extensions.people_notifier.blogs.splice(target_index, 0, dragging_obj);\n\t\t\t\tXKit.extensions.people_notifier.save();\n\t\t\t}\n\t\t\tdragtarget = null;\n\t\t\tdragging = null;\n\t\t});\n\n\t\t$(\".xkit-people-notifier-person\").bind(\"click\", function(event) {\n\n\t\t\tif (event.altKey || event.target.className === \"xkit-people-notifier close\") {\n\t\t\t\tXKit.extensions.people_notifier.remove_from_list($(this).attr('data-url'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($(this).hasClass(\"people-notifier-error\")) {\n\t\t\t\tXKit.window.show(\"Error fetching.\", \"Blog Tracker was unable to fetch information about the blog \\\"\" + $(this).attr('data-url') + \"\\\".
      It might be due to a recent Tumblr change or bug, or that the person changed their URL. Try refreshing the page or click on Open In New Tab to check if they have deleted their blog or changed their URL.
      \", \"error\", \"Open in new tab
      Remove from track list
      Cancel
      \");\n\n\t\t\t\tvar m_obj = $(this);\n\t\t\t\t$(\"#people-notifier-delete-this\").click(function() {\n\t\t\t\t\tXKit.extensions.people_notifier.remove_from_list($(m_obj).attr('data-url'));\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($(this).hasClass(\"people-notifier-changed\")) {\n\t\t\t\tXKit.window.show(\"URL Changed?\", \"Blog Tracker found no or less than 2 posts in the blog \\\"\" + $(this).attr('data-url') + \"\\\".
      It might be due to a recent Tumblr change or bug, or that the person changed their URL. Try refreshing the page or click on Open In New Tab to check if they have deleted their blog or changed their URL.
      \", \"error\", \"Open in new tab
      Remove from track list
      Cancel
      \");\n\n\t\t\t\tvar $this = $(this);\n\t\t\t\t$(\"#people-notifier-delete-this\").click(function() {\n\t\t\t\t\tXKit.extensions.people_notifier.remove_from_list($this.attr('data-url'));\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Reset unread counter to 0 because we're going to the blog\n\t\t\tXKit.extensions.people_notifier.load_blogs();\n\t\t\tfor (var person in XKit.extensions.people_notifier.blogs) {\n\t\t\t\tif (XKit.extensions.people_notifier.blogs[person].url === $(this).attr('data-url')) {\n\t\t\t\t\tXKit.extensions.people_notifier.blogs[person].last_check = new Date().getTime();\n\t\t\t\t\tXKit.extensions.people_notifier.blogs[person].count = 0;\n\t\t\t\t\tXKit.extensions.people_notifier.save();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar open_new_tab = XKit.extensions.people_notifier.preferences.open_new_tab.value;\n\t\t\tif (open_new_tab) {\n\t\t\t\twindow.open(\"http://\" + $(this).attr('data-url') + \".tumblr.com/\");\n\t\t\t} else {\n\t\t\t\tXKit.interface.show_peepr_for($(this).attr('data-url'));\n\t\t\t}\n\n\t\t\t// Rerender the blog list\n\t\t\tXKit.extensions.people_notifier.list_blogs();\n\t\t});\n\n\t\t$(\"#xkit-people-notifier-new-btn\").click(function() {\n\n\t\t\tif (XKit.extensions.people_notifier.blogs.length >= XKit.extensions.people_notifier.max_tracks) {\n\t\t\t\tXKit.window.show(\"No more slots\", \"You can only track up to 10 people.
      Please untrack some to track new people.

      To remove a person from list, hold the ALT key while clicking their username on the sidebar.\", \"error\", \"
      OK
      \");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar remaining = XKit.extensions.people_notifier.max_tracks - XKit.extensions.people_notifier.blogs.length;\n\n\t\t\tvar div_info_style = \"margin-top: 10px; font-size: 12px; color: rgb(120,120,120);\";\n\t\t\tXKit.window.show(\"Add a person to track list\", \"Please enter the URL of the person to track:You have \" + remaining + \" track slots left.
      To remove a person from list afterwards, hold the ALT key while clicking their username or click on the ✖ when hovering the mouse over their name on the sidebar.
      Please be aware that the more blogs you add, the longer it will take to track them all.
      \", \"question\", \"
      Track URL
      Cancel
      \");\n\n\t\t\t$(\"#xkit-people-notifier-create\").click(function() {\n\n\t\t\t\tvar to_add = $(\"#xkit-people-notifier-add-url\").val().toLowerCase();\n\n\t\t\t\tif ($.trim(to_add) === \"\") {\n\t\t\t\t\tXKit.window.close();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (/^[a-zA-Z0-9\\-]+$/.test(to_add) === false) {\n\t\t\t\t\tXKit.extensions.people_notifier.show_error(\"Invalid username\", \"Please enter the url only (ie: new-xkit-extension)\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (XKit.extensions.people_notifier.check_if_in_list(to_add) !== false) {\n\t\t\t\t\tXKit.extensions.people_notifier.show_error(\"Already on the list\", \"This user is already on your buddy list.\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar m_object = {};\n\t\t\t\tm_object.url = to_add;\n\t\t\t\tm_object.last_check = new Date().getTime() - 60000;\n\t\t\t\tm_object.count = 0;\n\t\t\t\tm_object.last_20_posts = [];\n\t\t\t\tm_object.last_post = 0;\n\n\t\t\t\tXKit.extensions.people_notifier.blogs.push(m_object);\n\t\t\t\tXKit.extensions.people_notifier.save();\n\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.notifications.add(\"User \" + to_add + \" added to track list.\");\n\n\t\t\t\tXKit.extensions.people_notifier.list_blogs();\n\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\tremove_from_list: function(username) {\n\n\t\tXKit.window.show(\"Remove from list\", \"You sure you want to remove \" + username + \"?\", \"question\", \"
      Remove
      Cancel
      \");\n\n\t\t$(\"#pn-remove-user-button\").click(function() {\n\n\t\t\tXKit.window.close();\n\t\t\tvar musername = $(this).attr(\"data-to-remove\");\n\n\t\t\tfor (var i = 0; i < XKit.extensions.people_notifier.blogs.length; i++) {\n\t\t\t\tif (XKit.extensions.people_notifier.blogs[i].url === musername) {\n\t\t\t\t\tXKit.extensions.people_notifier.blogs.splice(i, 1);\n\t\t\t\t\tXKit.extensions.people_notifier.save();\n\t\t\t\t\tXKit.extensions.people_notifier.list_blogs();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\n\n\t\t});\n\n\t},\n\n\tdestroy: function() {\n\t\tXKit.tools.remove_css(\"people_notifier\");\n\n\t\t$(\"#xpeoplenotifier\").remove();\n\n\t\t$(document).off(\"mouseenter\", \".xkit-people-notifier-person\");\n\t\t$(document).off(\"mouseleave\", \".xkit-people-notifier-person\");\n\t\t$(document).off(\"dragstart\", \".xkit-people-notifier-person\");\n\t\t$(document).off(\"dragenter\", \".xkit-people-notifier-person\");\n\t\t$(document).off(\"dragover\", \".xkit-people-notifier-person\");\n\t\t$(document).off(\"drop\", \".xkit-people-notifier-person\");\n\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","css":"#xkit-people-notifier-no-blogs {\n\ttext-align: center;\n\tpadding: 8px;\n\tfont-size: 12px;\n\tcolor: rgba(255,255,255,0.55);\n}\n\n.xkit-people-notifier-person a {\n\tposition: relative;\n\theight: 100%;\n\tdisplay: block;\n}\n\n.xkit-people-notifier-person {\n\tcursor: move;\n\tcursor: grab;\n\tcursor: -moz-grab;\n\tcursor: -webkit-grab;\n}\n\n.xkit-people-notifier-person:active {\n\tcursor: grabbing !important;\n\tcursor: -moz-grabbing !important;\n\tcursor: -webkit-grabbing !important;\n}\n\n.xkit-people-notifier-person .hide_overflow {\n\twidth: 125px;\n}\n\n.xkit-people-notifier-person .people-notifier-avatar {\n\tposition: absolute;\n\ttop: 50%; left: 18px;\n\tmargin-top: -9px;\n\tbox-shadow: inset 0px 1px 4px rgba(0,0,0,0.33), 0px 1px 0px rgba(255,255,255,0.19);\n\tborder-radius: 3px;\n\tborder: 1px solid #233950;\n\twidth: 16px; height: 16px;\n}\n\n.xkit-people-notifier-person a:after {\n\tbackground: none !important;\n\tdisplay: block;\n\theight: 100%;\n\tposition: relative;\n}\n\n.identity .controls_section .xkit-people-notifier-person a .count,\n.xkit-people-notifier-person .close,\n.xkit-people-notifier-person .drag {\n\tfloat: right;\n\ttop: 50% !important;\n\tdisplay: block;\n\theight: 13px;\n\tmargin-top: -11px;\n\tfont-size: 13px;\n\tposition: absolute;\n}\n\n.xkit-people-notifier-person .close {\n\tcursor: pointer;\n\tright: 10px;\n}\n\n.xkit-people-notifier-person .drag {\n\tpadding-left: 4px;\n}\n\n.dashboard_useraction_following .xkit-people-notifier-person:hover,\n.dashboard_useraction_following .xkit-people-notifier-new:hover {\n\tbackground: rgba(0,0,0,0.025) !important;\n}\n\n.dashboard_useraction_following.identity .controls_section a .count {\n\tcolor: #444 !important;\n}\n","title":"Blog Tracker","description":"Track people like tags","developer":"new-xkit","version":"0.6.7","details":"Blog Tracker lets you track blogs like you can track tags. Add them on your dashboard, and it will let you know how many new posts they've made the last time you've checked their blogs, or if they've changed their URLs.

      Please be aware that the more blogs you add, the longer it will take to track them all.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/pokes.json b/Extensions/dist/pokes.json new file mode 100644 index 000000000..f132bb40b --- /dev/null +++ b/Extensions/dist/pokes.json @@ -0,0 +1 @@ +{"id":"pokes","script":"//* TITLE Pokés **//\n//* VERSION 0.12.0 **//\n//* DESCRIPTION Gotta catch them all! **//\n//* DETAILS Randomly spawns Pokémon on your dash for you to collect. **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA true **//\n//* SLOW true **//\n\nXKit.extensions.pokes = {\n\trunning: false,\n\tpokedex_url: \"https://new-xkit.github.io/XKit/Extensions/dist/page/pokedex.json\",\n\n\tpreferences: {\n\t\t\"allow_fullwidth\": {\n\t\t\ttext: \"Allow spawning across the entire width of the page\",\n\t\t\tdefault: \"true\",\n\t\t\tvalue: \"true\"\n\t\t},\n\t\t\"sep0\": {\n\t\t\ttext: \"Backgrounds\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"catch_backgrounds\": {\n\t\t\ttext: \"Give Pokémon a background (for visibility)\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"transp_background\": {\n\t\t\ttext: \"Transparent Backgrounds\",\n\t\t\tdefault: \"true\",\n\t\t\tvalue: \"true\"\n\t\t},\n\t\t\"pokes_menu_header\": {\n\t\t\ttext: \"Menu\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t},\n\n\trun: function() {\n\t\tif (!window.location.href.match(/www.tumblr.com/)) return;\n\t\tthis.running = true;\n\t\tXKit.tools.init_css('pokes');\n\t\tXKit.post_listener.add('pokes', XKit.extensions.pokes.checkEligibility);\n\t\tXKit.extensions.pokes.checkEligibility();\n\t},\n\n\tfetch_pokedex: function(callback, error) {\n\t\tif (!XKit.extensions.pokes.gist_cache) {\n\t\t\tGM_xmlhttpRequest({\n\t\t\t\tmethod: \"GET\",\n\t\t\t\turl: XKit.extensions.pokes.pokedex_url,\n\t\t\t\tjson: true,\n\t\t\t\tonerror: function(response) {\n\t\t\t\t\tconsole.log(\"Poke data could not be retrieved. Skipping instance.\");\n\t\t\t\t\tif (error) { error(response); }\n\t\t\t\t},\n\t\t\t\tonload: function(response) {\n\t\t\t\t\tvar mdata = {};\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmdata = JSON.parse(response.responseText);\n\t\t\t\t\t\tXKit.extensions.pokes.gist_cache = mdata;\n\t\t\t\t\t\tcallback(mdata);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.log(\"Poke data received was not valid JSON. Skipping instance.\");\n\t\t\t\t\t\tif (error) { error(response); }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tcallback(XKit.extensions.pokes.gist_cache);\n\t\t}\n\t},\n\n\tcheckEligibility: function() {\n\t\t$(\".post_avatar:not(.poked):not(.unpokable)\").each(function() {\n\t\t\tif (XKit.extensions.pokes.chanceGen()) {\n\t\t\t\t$(this).addClass(\"poked\");\n\t\t\t} else {\n\t\t\t\t$(this).addClass(\"unpokable\");\n\t\t\t}\n\t\t});\n\n\t\t$(\".poked:not(.poke_spawned)\").each(function() {\n\t\t\tvar pokeNr = XKit.extensions.pokes.pokeGen();\n\t\t\tXKit.extensions.pokes.fetchPoke(pokeNr, $(this));\n\t\t\t$(this).addClass(\"poke_spawned\");\n\t\t});\n\t},\n\n\trandomInt: function(min, max) {\n\t\treturn Math.floor(Math.random() * (max - min + 1) + min);\n\t},\n\n\tparse_pokemon: function(mdata, db_nr, pokedThing) {\n\t\tvar poke_sortid = mdata[db_nr].sortid;\n\t\tvar poke_name = mdata[db_nr].name;\n\t\tvar poke_sprite = mdata[db_nr].sprite;\n\t\tvar m_f_ratio = parseInt(mdata[db_nr].gender_rate);\n\t\tvar rarity = parseInt(mdata[db_nr].rarity);\n\n\t\tvar poke_gender = \"undefined\";\n\t\tif (m_f_ratio === -1) {\n\t\t\tpoke_gender = \"genderless\";\n\t\t} else {\n\t\t\tvar rnd_nr = Math.random();\n\t\t\tvar male_ratio = (m_f_ratio / 8);\n\t\t\tif (rnd_nr <= male_ratio) {\n\t\t\t\tpoke_gender = \"female\";\n\t\t\t} else {\n\t\t\t\tpoke_gender = \"male\";\n\t\t\t}\n\t\t}\n\n\t\tvar shiny_rnd = Math.random();\n\t\tvar shiny_class = \"\";\n\t\tif (shiny_rnd <= (1 / 4096)) {\n\t\t\tshiny_class = \" pokes_shiny\";\n\t\t\tpoke_sprite = mdata[db_nr].sprite_shiny || mdata[db_nr].sprite;\n\t\t}\n\n\t\tvar rarityPicker = Math.floor(Math.random() * 255);\n\t\tif (rarityPicker >= 0 && rarityPicker <= rarity) {\n\t\t\tvar poke_html;\n\t\t\tvar poke_class;\n\t\t\tvar xpos = XKit.extensions.pokes.randomInt(-($(window).width() / 3), ($(window).width() / 2) - 100);\n\t\t\tvar ypos = XKit.extensions.pokes.randomInt(0, 600);\n\n\t\t\tif (XKit.extensions.pokes.preferences.catch_backgrounds.value) {\n\t\t\t\tif (XKit.extensions.pokes.preferences.transp_background.value) {\n\t\t\t\t\tpoke_class = \"poke_bg_transp\";\n\t\t\t\t} else {\n\t\t\t\t\tpoke_class = \"poke_bg\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (XKit.extensions.pokes.preferences.allow_fullwidth.value) {\n\t\t\t\tpoke_html = `
      ` +\n\t\t\t\t\t`\"${poke_name}\"/` + \n\t\t\t\t'
      ';\n\t\t\t} else {\n\t\t\t\tpoke_html = `
      ` +\n\t\t\t\t\t`\"${poke_name}\"/` + \n\t\t\t\t'
      ';\n\t\t\t}\n\n\t\t\tpokedThing.after(poke_html);\n\t\t\tpokedThing.parent().find(\".poke\").click(function(event) {\n\t\t\t\tif (XKit.storage.get(\"pokes\", \"pokemon_storage\", \"\") === \"\") {\n\t\t\t\t\tXKit.storage.set(\"pokes\", \"pokemon_storage\", \"[]\");\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar storage_array = JSON.parse(XKit.storage.get(\"pokes\", \"pokemon_storage\", \"\"));\n\t\t\t\t\tif (storage_array !== \"\") {\n\t\t\t\t\t\tvar poke_id = $(this).data(\"pokeid\");\n\t\t\t\t\t\tvar caught_sortid = $(this).data(\"pokesortid\");\n\t\t\t\t\t\tvar caught_gender = $(this).data(\"pokegender\");\n\t\t\t\t\t\tvar caught_name = $(this).data(\"pokename\");\n\t\t\t\t\t\tvar poke_wiki_name = caught_name;\n\n\t\t\t\t\t\tif (caught_name.indexOf(\" \") > -1) {\n\t\t\t\t\t\t\tvar firstWord = caught_name.split(\" \")[0];\n\t\t\t\t\t\t\tif (firstWord == \"Mega\" || firstWord == \"Primal\") {\n\t\t\t\t\t\t\t\tpoke_wiki_name = caught_name.split(\" \")[1];\n\t\t\t\t\t\t\t} else if (firstWord == \"Cosplay\") {\n\t\t\t\t\t\t\t\tpoke_wiki_name = \"Cosplay Pikachu\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpoke_wiki_name = firstWord;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstorage_array.push({ id: poke_id, sortid: caught_sortid, gender: caught_gender, shiny: $(this).hasClass(\"pokes_shiny\") });\n\t\t\t\t\t\tXKit.storage.set(\"pokes\", \"pokemon_storage\", JSON.stringify(storage_array));\n\t\t\t\t\t\tXKit.notifications.add(\"You caught a \" + ($(this).hasClass(\"pokes_shiny\") ? \"shiny \" : \"\") + caught_gender + \" \" + caught_name.charAt(0).toUpperCase() + caught_name.substr(1) + \"!\", \"pokes\", false, function() {\n\t\t\t\t\t\t\twindow.open(\"http://bulbapedia.bulbagarden.net/wiki/\" + poke_wiki_name);\n\t\t\t\t\t\t});\n\t\t\t\t\t\t$(this).hide();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tXKit.window.show(\"Catching failed!\", \"Something went wrong trying to catch the Pokémon. Please try again.

      Error code: PKMN-001\", \"error\", \"
      OK
      \");\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tXKit.window.show(\"Catching failed!\", \"Something went wrong trying to catch the Pokémon. Please try again.

      Error code: PKMN-002\", \"error\", \"
      OK
      \");\n\t\t\t\t}\n\n\t\t\t\tXKit.extensions.pokes.addSortID();\n\t\t\t});\n\t\t} else {\n\t\t\tXKit.extensions.pokes.parse_pokemon(mdata, XKit.extensions.pokes.pokeGen(), pokedThing);\n\t\t}\n\t},\n\n\tfetchPoke: function(db_nr, pokedThing) {\n\t\tXKit.extensions.pokes.fetch_pokedex(function(mdata) {\n\t\t\tXKit.extensions.pokes.parse_pokemon(mdata, db_nr, pokedThing);\n\t\t});\n\t},\n\n\tchanceGen: function() {\n\t\tvar rnd_nr = Math.floor(Math.random() * 101);\n\t\tif (rnd_nr >= 0 && rnd_nr <= 8) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t},\n\n\tpokeGen: function() {\n\t\treturn Math.floor(Math.random() * 1018);\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.post_listener.remove(\"pokes\");\n\t\t$(\".poke\").remove();\n\t},\n\n\trename_poke: function(index, nick, cb) {\n\t\tif (!cb) { cb = function() {}; }\n\t\ttry {\n\t\t\tvar storage_array = JSON.parse(XKit.storage.get(\"pokes\", \"pokemon_storage\", \"\"));\n\t\t\tif (storage_array) {\n\t\t\t\tstorage_array[index].nickname = nick;\n\t\t\t\tXKit.storage.set(\"pokes\", \"pokemon_storage\", JSON.stringify(storage_array));\n\t\t\t\tcb();\n\t\t\t} else {\n\t\t\t\tXKit.window.show(\"Renaming failed!\", \"Something went wrong trying to rename the Pokémon. Please try again.

      Error code: PKMN-003\", \"error\", \"
      OK
      \");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tXKit.window.show(\"Renaming failed!\", \"Something went wrong trying to rename the Pokémon. Please try again.

      Error code: PKMN-004\", \"error\", \"
      OK
      \");\n\t\t}\n\t},\n\n\tdelete_poke: function(index, cb) {\n\t\tif (!cb) { cb = function() {}; }\n\t\ttry {\n\t\t\tvar storage_array = JSON.parse(XKit.storage.get(\"pokes\", \"pokemon_storage\", \"\"));\n\t\t\tif (storage_array) {\n\t\t\t\tstorage_array.splice(index, 1);\n\t\t\t\tXKit.storage.set(\"pokes\", \"pokemon_storage\", JSON.stringify(storage_array));\n\t\t\t\tcb();\n\t\t\t} else {\n\t\t\t\tXKit.window.show(\"Removing failed!\", \"Something went wrong trying to remove the Pokémon. Please try again.

      Error code: PKMN-005\", \"error\", \"
      OK
      \");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tXKit.window.show(\"Removing failed!\", \"Something went wrong trying to remove the Pokémon. Please try again.

      Error code: PKMN-006\", \"error\", \"
      OK
      \");\n\t\t}\n\t},\n\n\trender_pokelist: function() {\n\t\tvar m_html =\n\t\t\t'
      ' +\n\t\t\t'
      ' +\n\t\t\t\t\t'
      ' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n\t\t\t\t\t'
      ' +\n\t\t\t\t'
      ' +\n\t\t\t\t\t'
      ' +\n\t\t\t\t\t'
      ' +\n\t\t\t\t\t'' +\n\t\t\t\t\t'
      ' +\n\t\t\t\t\t'
      ' +\n\t\t\t\t\t'
      ' +\n\t\t\t\t\t'
      ' +\n\t\t\t\t'
      ' +\n\t\t\t\t'
      ' +\n\t\t\t\t\t'
      ' +\n\t\t\t\t\t\t'Loading Pokémon, please wait...' +\n\t\t\t\t\t'
      ' +\n\t\t\t\t'
      ' +\n\t\t\t'
      ';\n\n\t\t$(\"body\").prepend(m_html);\n\t\t$(\".xkit-pokes-lightbox\").click(function(e) {\n\t\t\tif (e.target !== this) return;\n\t\t\t$(this).animate({\n\t\t\t\topacity: 0\n\t\t\t}, {\n\t\t\t\tcomplete: function() {\n\t\t\t\t\t$(this).remove();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tvar sortFunction = function(dataAttr, optData) {\n\t\t\tvar up = ($('input.xkit-pokes-sorter#reverse-toggle').is(\":checked\") ? -1 : 1);\n\t\t\treturn function(first, second) {\n\t\t\t\treturn ($(second).data(dataAttr) || $(second).data(optData)) < ($(first).data(dataAttr) || $(first).data(optData)) ? up : -up;\n\t\t\t};\n\t\t};\n\n\t\t$('input:radio[name=\"xkit-pokes-sort\"]#pokeid').change(function(e) {\n\t\t\t$(\"#xkit-loading_pokemon div.caught\").sort(sortFunction(\"pokesortid\", \"pokesortid\"))\n\t\t\t\t\t\t\t\t\t.prependTo(\"#xkit-loading_pokemon\");\n\t\t});\n\t\t$('input:radio[name=\"xkit-pokes-sort\"]#alphabetical').change(function(e) {\n\t\t\t$(\"#xkit-loading_pokemon div.caught\").sort(sortFunction(\"pokenick\", \"pokespecies\"))\n\t\t\t\t\t\t\t\t\t.prependTo(\"#xkit-loading_pokemon\");\n\t\t});\n\t\t$('input:radio[name=\"xkit-pokes-sort\"]#chronological').change(function(e) {\n\t\t\t$(\"#xkit-loading_pokemon div.caught\").sort(sortFunction('array_index', 'array_index'))\n\t\t\t\t\t\t\t\t\t.prependTo(\"#xkit-loading_pokemon\");\n\t\t});\n\t\t$('.xkit-pokes-sorter#reverse-toggle').change(function(e) {\n\t\t\t\t $(\"#xkit-loading_pokemon div.caught\").sort(function(i) {return 1;}).prependTo(\"#xkit-loading_pokemon\");\n\t\t});\n\n\t\t$(\".xkit-pokes-lightbox\").animate({\n\t\t\topacity: 1\n\t\t});\n\t\t$(\".xkit-pokes-pc-info .nickname\").click(function() {\n\t\t\t$(this).hide();\n\t\t\t$(\".xkit-pokes-pc-info .nickname-textbox\").show();\n\t\t\t$(\".xkit-pokes-pc-info .nickname-textbox\").focus();\n\t\t});\n\t\t$(\".xkit-pokes-pc-info .nickname-textbox\").change(function() {\n\t\t\t$(this).hide();\n\t\t\tXKit.extensions.pokes.rename_poke($(\"div.active\").attr(\"data-array_index\"), $(this).val(), function() {\n\t\t\t\t$(\"div.active\").attr(\"data-pokenick\", $(\".xkit-pokes-pc-info .nickname-textbox\").val());\n\t\t\t\t$(\".xkit-pokes-pc-info .nickname\").show();\n\t\t\t\tif (typeof $(\"div.active\").attr(\"data-pokenick\") !== \"undefined\" && $(\"div.active\").attr(\"data-pokenick\")) {\n\t\t\t\t\t$(\".xkit-pokes-pc-info .nickname\").html(\"
      \" + $(\"div.active\").attr(\"data-pokenick\") + \"
      \");\n\t\t\t\t} else {\n\t\t\t\t\t$(\".xkit-pokes-pc-info .nickname\").html(\"
      \" + $(\"div.active\").attr(\"data-pokespecies\") + \"
      \");\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\t$(\".xkit-pokes-pc-info .release_pokemon\").click(function() {\n\t\t\tvar pokename = $(\"div.active\").attr(\"data-pokespecies\");\n\t\t\tif (typeof $(\"div.active\").attr(\"data-pokenick\") !== \"undefined\" && $(\"div.active\").attr(\"data-pokenick\")) {\n\t\t\t\tpokename = $(\"div.active\").attr(\"data-pokenick\") + \" (\" + pokename + \")\";\n\t\t\t}\n\t\t\tXKit.window.show(\"Release Pokémon\", \"Do you really want to release \" + pokename + \"?
      This Pokémon will be lost. You can not undo this action.\", \"question\", \"
      Yes, release Pokémon
      Cancel
      \");\n\t\t\t$(\"#release-pokemon-no\").click(function() {\n\t\t\t\tXKit.window.close();\n\t\t\t});\n\t\t\t$(\"#release-pokemon-yes\").click(function() {\n\t\t\t\t$(this).addClass(\"disabled\");\n\t\t\t\t$(\"#release-pokemon-no\").addClass(\"disabled\");\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.extensions.pokes.delete_poke($(\"div.active\").attr(\"data-array_index\"), function() {\n\t\t\t\t\tvar array_index = $(\"div.active\").attr(\"data-array_index\");\n\t\t\t\t\t$(\"div.active\").remove();\n\t\t\t\t\t$(\".caught\").filter(function() {\n\t\t\t\t\t\treturn $(this).attr(\"data-array_index\") > array_index;\n\t\t\t\t\t}).each(function() {\n\t\t\t\t\t\t$(this).attr(\"data-array_index\", $(this).attr(\"data-array_index\") - 1);\n\t\t\t\t\t});\n\t\t\t\t\t$(\".xkit-pokes-pc-info .caught_stats\").show();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .gender\").hide();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .species\").hide();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .shiny\").hide();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .nickname\").hide();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .release_pokemon\").hide();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .nickname-textbox\").hide();\n\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t\tXKit.extensions.pokes.fetch_pokedex(function(mdata) {\n\t\t\tvar caught = JSON.parse(XKit.storage.get(\"pokes\", \"pokemon_storage\", \"[]\"));\n\t\t\tvar header = \"

      You've caught \" + caught.length + \" total Pokémon!
      That's \";\n\t\t\tvar checklist = [];\n\t\t\tvar caught_html = \"\";\n\t\t\t$.each(caught, function(index, value) {\n\t\t\t\tvar sprite = mdata[value.id].sprite;\n\t\t\t\tif (value.shiny) {\n\t\t\t\t\tsprite = mdata[value.id].sprite_shiny || mdata[value.id].sprite;\n\t\t\t\t}\n\t\t\t\tcaught_html = caught_html + \"

      \";\n\t\t\t\tif (checklist.indexOf(value.id) === -1) checklist.push(value.id);\n\t\t\t});\n\t\t\theader += checklist.length + \" out of \" + mdata.length + \" different species of Pokémon!

      \";\n\t\t\t$(\"#xkit-loading_pokemon\").html(caught_html);\n\t\t\t$(\".caught_stats\").html(header);\n\t\t\t$(\".xkit-pokes-pc-pokemon .caught\").click(function() {\n\t\t\t\tif ($(this).hasClass(\"active\")) {\n\t\t\t\t\t$(this).removeClass(\"active\");\n\t\t\t\t\t$(\".xkit-pokes-pc-info .caught_stats\").show();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .gender\").hide();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .species\").hide();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .shiny\").hide();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .nickname\").hide();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .release_pokemon\").hide();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .nickname-textbox\").hide();\n\t\t\t\t} else {\n\t\t\t\t\t$(\".active\").removeClass(\"active\");\n\t\t\t\t\t$(this).addClass(\"active\");\n\t\t\t\t\t$(this).find(\"img\").addClass(\"active\");\n\t\t\t\t\t$(\".xkit-pokes-pc-info .caught_stats\").hide();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .gender\").show();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .species\").show();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .shiny\").show();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .nickname\").show();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .release_pokemon\").show();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .nickname-textbox\").hide();\n\t\t\t\t\t$(\".xkit-pokes-pc-info .nickname-textbox\").val($(this).attr(\"data-pokenick\"));\n\t\t\t\t\t$(\".xkit-pokes-pc-info .gender\").attr( \"data-pokegender\", ( $(this).attr(\"data-pokegender\") ) );\n\t\t\t\t\t$(\".xkit-pokes-pc-info .gender\").text( $(this).attr(\"data-pokegender\") );\n\t\t\t\t\t$(\".xkit-pokes-pc-info .species\").text(\"Species: \" + $(this).attr(\"data-pokespecies\"));\n\t\t\t\t\t$(\".xkit-pokes-pc-info .shiny\").text($(this).hasClass(\"pokes_shiny\") ? \"Shiny\" : \"\");\n\t\t\t\t\tif (typeof $(this).attr(\"data-pokenick\") !== \"undefined\" && $(this).attr(\"data-pokenick\")) {\n\t\t\t\t\t\t$(\".xkit-pokes-pc-info .nickname\").html(\"
      \" + $(this).attr(\"data-pokenick\") + \"
      \");\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(\".xkit-pokes-pc-info .nickname\").html(\"
      \" + $(this).attr(\"data-pokespecies\") + \"
      \");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}, function(response) {\n\t\t\t$(\"#xkit-loading_pokemon\").html(\"
      Failed to load Pokémon Data!
      Please refresh the page or try again later!
      \");\n\t\t});\n\t},\n\n\tcpanel: function(m_div) {\n\t\tvar m_html = '
      ' +\n\t\t\t'
      ' +\n\t\t\t\t'
      ' +\n\t\t\t\t'
      Pokémon
      ' +\n\t\t\t\t'
      Check which Pokémon you have caught
      ' +\n\t\t\t'
      ' +\n\t\t\t'
      ' +\n\t\t\t\t'
      ' +\n\t\t\t\t'
      ' +\n\t\t\t\t'
      ' +\n\t\t\t'
      ' +\n\t\t\t'
      ' +\n\t\t\t\t'
      ' +\n\t\t\t\t'
      ' +\n\t\t\t\t'
      ' +\n\t\t\t'
      ' +\n\t\t'
      ';\n\t\tm_div.append(m_html);\n\n\t\t$(\"#xkit-pokes-show_poke_list\").click(function() {\n\t\t\tXKit.extensions.xkit_preferences.close();\n\t\t\tsetTimeout(XKit.extensions.pokes.render_pokelist, 250);\n\t\t});\n\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller();\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller({ scroll: 'top' });\n\t},\n\n\taddSortID: function() {\n\t\tvar offset = parseInt(XKit.storage.get(\"pokes\", \"update_offset\", 0));\n\t\tif (isNaN(offset)) offset = 0;\n\t\tvar step_size = 1000;\n\n\t\tif (offset !== -1) {\n\t\t\tvar pokes = JSON.parse(XKit.storage.get(\"pokes\", \"pokemon_storage\", \"[]\"));\n\t\t\ttry {\n\t\t\t\tXKit.extensions.pokes.fetch_pokedex(function(mdata) {\n\t\t\t\t\tfor (var i = offset; i < offset + step_size; i++) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tpokes[i].sortid = mdata[pokes[i].id].sortid;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tif (e instanceof ReferenceError) {\n\t\t\t\t\t\t\t\toffset = -1; //This is good! We've finished the array and never have to do this ever again.\n\t\t\t\t\t\t\t} else if (e instanceof TypeError) {\n\t\t\t\t\t\t\t\t//Do nothing. We can ignore these safely; it just makes the Pokémon sorted to the end of the list.\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t}\n\n\t\t\tXKit.storage.set(\"pokes\", \"pokemon_storage\", JSON.stringify(pokes));\n\t\t\tXKit.storage.set(\"pokes\", \"update_offset\", offset + step_size);\n\t\t}\n\t}\n};\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","css":"@font-face {\n\tfont-family: \"pokepixelplus\";\n\tsrc: url(https://new-xkit.github.io/XKit/Extensions/dist/pokepixelplus.ttf);\n}\n\n/*\n * Style for Pokémon appearing on Dashboard\n*/\n.poke {\n\tposition: absolute;\n\tmargin-left: 40%;\n\twidth: 100px;\n\tz-index: 10;\n}\n.fixed {\n\tright: -129px;\n}\n.poke_bg {\n\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHpyAACAjgAA/TYAAH9bAAB7LQAA8/wAADr1AAASznY2hTMAAAC/SURBVHjatNQtFsMgDMBxjoTsEZCROwqSI0xW5ihIZCXHqIzLxMYWGrJ+vE38Hfk92gc4770zYqPhehOg+zTMAhViAbJ6mxSmkeXVSUwjRM+WfUhiP4X6RSc+TWKHf7CF/Aeaw3VkDgIKAB0WAN5ZQEMCQA/JEDMTESNmDgDDYVmDnPeeY0yfXbQjQKSGZDEmfY5qWZmIOMakdjQCalkZMStIYa1a1mESGV5axGwON2CLfH1G2sC2o8/I5YftMQCo6KTHQZNtVAAAAABJRU5ErkJggg==');\n\tbackground-repeat: no-repeat;\t\t \n\tbackground-size: 100px 100px;\n\timage-rendering: pixelated;\n\timage-rendering: -moz-crisp-edges;\n}\n.poke_bg_transp {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASBAMAAACk4JNkAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuNvyMY98AAAAhUExURf///zAwMEhQUHh4gJhIOKCgwNhYONjI8PiQOPjQOPj4+CJu/FkAAAALdFJOUwC0tLS0tLS0tLS0/fXDXAAAAH1JREFUCNdjYGBgEBQUZAADwY6ODjCTEcjoaBMAsiRmgpiJQKHOVTOArDQBJJZEB1g2LRHIAutAYYmAWWlpjgxCHk1KQEaKIoOQkupStTQnJUUGRiOtVUpKSspA86pMlwIZpUDrxBcbl5eXB4JcEA5khAqAXRUaGgpzINilAJ/TLm7LlTr9AAAAAElFTkSuQmCC);\n\tbackground-repeat: no-repeat;\t\t \n\tbackground-size: 100px 100px;\n\timage-rendering: pixelated;\n\timage-rendering: -moz-crisp-edges;\n}\n.poke img {\n\twidth: 100px;\n\timage-rendering: pixelated;\n\timage-rendering: -moz-crisp-edges;\n}\n.poke::after {\n\tfont-family: pokepixelplus, monospace;\n\tfont-size: 30px;\n\tbackground: white 26px center;\n\tborder: 2px solid black;\n\t-moz-border-radius: 26px;\n\t-webkit-border-radius: 26px;\n\tborder-radius: 26px;\n\tposition: relative;\n\twidth: 28px; height: 30px;\n\tright: -20px; bottom: 120px;\n\ttext-align: center;\n\tpadding-left: 2px;\n\tline-height: 32px;\n\tfloat: right;\n}\n.poke[data-pokegender=\"male\"]::after {\n\tfont-family: pokepixelplus, monospace;\n\tcontent: \"\\2642\";\n\tcolor: #6CA0DC;\n}\n.poke[data-pokegender=\"female\"]::after {\n\tfont-family: pokepixelplus, monospace;\n\tcontent: \"\\2640\";\n\tcolor: #FF69B4;\n}\n.poke[data-pokegender=\"genderless\"]::after {\n\tfont-family: pokepixelplus, monospace;\n\tcontent: \"\\26AA\";\n\tcolor: #9370DB;\n}\n\n/*\n * Menu of the Pokés extension\n*/\n#xkit-pokes-custom-panel {\n\twidth: 100%;\n}\n#xkit-loading_pokemon {\n\ttext-align: center;\n\tposition: relative;\n}\n.xkit-pokes-menu_button {\n\tbox-sizing: border-box;\n\twidth: 178px;\n\theight: 175px;\n\tfloat: left;\n\tdisplay: inline-block;\n\tposition: relative;\n\tpadding: 70px 20px 20px 20px;\n\ttext-align: center;\n\tcursor: pointer;\n\tborder: 1px solid #D0D0D0;\n\tfont-family: pokepixelplus, monospace;\n}\n.xkit-pokes-menu_button.disabled {\n\tcursor: default;\n}\n.xkit-pokes-menu_button.disabled .title:after {\n\tcontent: \"Unavailable\";\n}\n.xkit-pokes-menu_button.disabled .description:after {\n\tcontent: \"This feature is not ready just yet!\";\n}\n.xkit-pokes-menu_button .title {\n\tfont-weight: 600;\n\tmargin-top: 4px;\n\tfont-size: 20px;\n}\n.xkit-pokes-menu_button .description {\n\tmax-height: 60px;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tfont-size: 17px;\n}\n.xkit-pokes-menu_button .icon {\n\tposition: absolute;\n\ttop: 20px;\n\tleft: 50%;\n\tmargin-left: -16px;\n\tborder-radius: 5px;\n\twidth: 32px;\n\theight: 32px;\n\tbackground-size: contain;\n\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAACVBMVEX///8iIiIiIiLMFIP7AAAAA3RSTlMAf4C/aSLHAAAAVElEQVR4Ae3KMQrAIBQE0Z/c/9BJIQwsrFPaOI1/5c3tcM9KGZkjc2SO9i7vAnOZY3f4/u0hDjkloCQQAOQjAvAIzN1lccBV3l3SlMyROVJHsNvRPjeEAcfzDmAhAAAAAElFTkSuQmCC');\n}\n#xkit-pokes-show_poke_list .icon {\n\tbackground-image: url('data:image/png;base64,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');\n}\n\n/*\n * Pokémon list style\n*/\n.xkit-pokes-lightbox {\n\tposition: fixed;\n\ttop: 0px;\n\tbottom: 0px;\n\tright: 0px;\n\tleft: 0px;\n\tz-index: 15000;\n\toverflow: hidden;\n\tbackground-color: rgba(25,25,25,.92);\n}\n.gender {\n\tdisplay: none;\n\tfloat: right;\n\tfont-size: 26px;\n\tfont-family: pokepixelplus, monospace;\n}\n.nickname {\n\tdisplay: none;\n\tfont-family: pokepixelplus, monospace;\n\tfont-weight: 500;\n\tfont-size: 28px;\n}\n.nickname::before {\n\tcontent: \"\\EA27\";\n\tfont-family: \"tumblr-icons\";\n\tfloat: left;\n}\n.species {\n\tdisplay: none;\n\tfont-family: pokepixelplus, monospace;\n\tfont-size: 20px;\n\tmargin-top: 3px;\n}\n#xkit-pokes-nickinput {\n\tfont-family: pokepixelplus, monospace;\n\tfont-size: 20px;\n}\n.xkit-pokes-pc {\n\tmax-width: 800px;\n\tborder-radius: 40px;\n\theight: 600px;\n\tbackground: #EFEFE7;\n\tposition: relative;\n\tmargin: 50px auto;\n}\n\n.xkit-pokes-pc-sorter{\n\tposition: absolute;\n\ttop: 10px;\n\tright: 10px;\n\twidth: 150px;\n\theight: 30px;\n}\n\n.xkit-pokes-sorter {\n\tmax-height: 0;\n\tmax-width: 0;\n\topacity: 0;\n\tposition: absolute;\n}\n\n.xkit-pokes-sorter#alphabetical + label {\n\tbackground-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAPUlEQVR42mNgGAVDBXAA8X8kTBPwnwB/aFnyn9ZBhs0nuqNxMigBzfPOoPAZ3Xz4f9SC4W/BgKWuUUA5AABtpyQS9kF4CAAAAABJRU5ErkJggg==\");\n}\n\n.xkit-pokes-sorter#chronological + label {\n\tbackground-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAUklEQVR42mNgGAVDBfynAJNkCbmOG/UJSXrIinxcBlAUVPhch81QiizAZjAx4lTPOzQxnCY+IcYQqkY6Ph9QlHwJxQPFOf7/aNk1qHwyCgYOAAAYDoN9EGP8FQAAAABJRU5ErkJggg==\");\n}\n\n.xkit-pokes-sorter#pokeid + label {\n\tbackground-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAP0lEQVR42mNgGAVDHfynhWH/0cT+U9MCdEw3nzAMG5/8p3a8jIx8Mhpsgy/14cpH/2mRYQfEJwxDziejYBgAAHZ7OMgtsFkIAAAAAElFTkSuQmCC\");\n}\n\n.xkit-pokes-sorter + label{\n\tdisplay: inline-block;\n\twidth: 25px;\n\theight: 25px;\n\tborder: 1px solid rgba(0, 0, 0, 0.1);\n\tborder-radius: 50%;\n\tmargin-left: 3px;\n\tbox-shadow: inset 0 0 12px rgba(255, 255, 255, 0.7);\n}\n\n.xkit-pokes-sorter:checked + label{\n\tbox-shadow: inset 0 0 12px rgba(0, 0, 0, 0.5);\n}\n\n.xkit-pokes-sorter#reverse-toggle + label {\n\tdisplay: inline-block;\n\tposition: relative;\n\tbox-shadow: inset 0 0 0px 1px #d5d5d5;\n\twidth: 50px;\n\tborder-radius: 15px;\n}\n\n.xkit-pokes-sorter#reverse-toggle + label::before {\n\tcontent: \"+\";\n\tposition: absolute;\n\tdisplay: inline-block;\n\twidth: 25px;\n top: 0;\n right: 0;\n bottom: 0;\n\ttransition: .25s ease-in-out;\n\ttext-align: center;\n\tline-height: 25px;\n\tfont-size: 24px;\n\t-moz-transition: .35s ease-in-out;\n\t-webkit-transition: .35s ease-in-out;\n\ttransition: .35s ease-in-out;\n}\n\n.xkit-pokes-sorter#reverse-toggle + label::after {\n\tcontent: \"-\";\n\tposition: absolute;\n\tdisplay: inline-block;\n width: 25px;\n top: 0;\n bottom: 0;\n left: 0;\n\tborder-radius: 15px ;\n\tbackground: white;\n\tbox-shadow: inset 0 0 0 1px rgba(0, 0, 0, .2), 0 2px 4px rgba(0, 0, 0, .2);\n\t-moz-transition: .35s ease-in-out;\n\t-webkit-transition: .35s ease-in-out;\n\ttransition: .35s ease-in-out;\n\ttext-align: center;\n\tline-height: 25px;\n\tfont-size: 24px;\n}\n\n.xkit-pokes-sorter#reverse-toggle:checked + label::after {\n\tleft: calc(100% - 25px);\n\tbox-shadow: inset 0 0 0 1px rgba(0, 0, 0, .2), 0 2px 4px rgba(0, 0, 0, .2);\n}\n\n.xkit-pokes-sorter#reverse-toggle:checked + label::before {\n\tright: calc(100% - 25px);\n}\n\n.xkit-pokes-pc-pokemon {\n\theight: 350px;\n\twidth:85%;\n\tpadding: 10px;\n\tmargin: 50px;\n\tposition: absolute;\n\tborder: 4px solid #6B94B5;\n\tborder-radius: 20px;\n\tbackground: #B6E4EF;\n}\n.xkit-pokes-pc-info {\n\tposition: absolute;\n\tbackground: #fff;\n\theight: 90px;\n\twidth: 85%;\n\tpadding: 10px;\n\tmargin: 440px 50px 50px 50px;\n\tborder: 4px solid #6B94B5;\n\tborder-radius: 20px;\n\t-webkit-filter: grayscale(30%);\n\tfilter: grayscale(0%);\n}\n.xkit-pokes-pc-info .gender[data-pokegender=\"male\"]::after {\n\tfont-family: pokepixelplus, monospace;\n\tcontent: \" \\2642\";\n\tcolor: #6CA0DC;\n}\n.xkit-pokes-pc-info .gender[data-pokegender=\"female\"]::after {\n\tfont-family: pokepixelplus, monospace;\n\tcontent: \" \\2640\";\n\tcolor: #FF69B4;\n}\n.xkit-pokes-pc-info .gender[data-pokegender=\"genderless\"]::after {\n\tfont-family: pokepixelplus, monospace;\n\tcontent: \" \\26AA\";\n\tcolor: #9370DB;\n}\n.xkit-pokes-pc-info .caught_stats {\n\tfont-family: pokepixelplus, monospace;\n\ttext-align: center;\n\tfont-weight: bold;\n\tfont-size: 20px;\n}\n.xkit-pokes-pc-info .shiny {\n\tfont-family: pokepixelplus, monospace;\n\tfont-size: 20px;\n\tposition: absolute;\n}\n.xkit-pokes-pc-info .nickname-textbox {\n\theight: 35px;\n\twidth: 400px;\n\tfont-size: 25px;\n\tfont-family: pokepixelplus, monospace;\n}\n.xkit-pokes-pc-info .xkit-button {\n\tposition: relative;\n\ttop: -10px;\n\tfloat: right;\n\theight: 30px;\n\tborder: none;\n\tbackground-color: transparent;\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n\tbackground-size: 100%;\n}\n.xkit-pokes-pc-info .xkit-button:active {\n\tcolor: black;\n\tbackground-color: transparent;\n\tbox-shadow: none;\n}\n.xkit-pokes-pc-info .release_pokemon {\n\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAA2CAYAAACMRWrdAAAEQUlEQVRoBd3BIW8baxqA0ecdWboeVpjNLwgsu5GGuNICw5QFFizI6iMG8zO8kkE/5YILCsO20GClNRkpZYWFRYlh2XjRs7aVRk5umibxOK16Tqj8inrsQFmWcoe2bYNnEipdKcvSNy8WfM/ppcGOFXSkLEvfvFjwEP/8W8iOhcq2yrL0zYsFd5nscW0054bTS4Md6bEjkz3+YrLH2mjOzoXKNsqy9M2LBZsme3zXaM7auy992rYNOlbwA4zmMPm8YOVwOKMsS8uylA4VdGyyx71Gc5h8XrDy6fCc0ckBZ+/nHA5nlGUpHSl4RqM5TD4v+Gp0csDkj0+sjE4OOBzOKMtSOlDQgXdf+txnNIfRHD4dnvPVdLbgttHJAV0p6MDZ+znvvvTZNJrDaA6jOZxeGqeXBlemswUrw0Gf2w6HM8qylC316MjZ+znHR3vAgpXTS4MNr15/cHr2ktumZy8ZHn9kdHLAyujkgOMpWyvowOSPT6wcDme8+9Ln9NLgDv0/f6P/5288h4IttW0b59MB3zP7+++sLP7xP55Djw60bRuvXn/wfDqgbdtgQ2RkafCfD0zPXvJcCjry33//Hm3bBlciY2RkyUTwDcPjj4xODuhaj45FRjaYCB7h+GiPtm2DLRV0KDKywURwh+Ggz8p0tmBXQmVbkZFbTAS3vHr9wenZS74aHn9kdHLAV8dHe7RtG3SgYEuR0URwxUSYCB7p+GiPtm2DrqioqKioqKioqKioqKioqPDWFXirvHUFFRUVFRUVFZXB0bmLxcLB0bmDo3P7/b68dQUVFRUVFRUVFRUVFRUVFRUVFRWVUHmKyGgiIiNLJoIHiIx8g4mgIwVPEBlZiow8QmTkyriCccUNkZGOhMpjREZuMRHcIzJyZVxxp7rhmolgS6HyUJGRpXEFdQMmgm+IjGwYV9xQNzCuuKFuWDMRbClUHiIysjSuWKsbOjOuuFY3rJkIttDjkeqGBzMRbIiM3DKuWKsbOtXjgUwEGyIjt5gInqBu6FyodOFfH7FuwESwFBm5x7iCwT43zC6gbsBEsKUeHYuMLJkINkRGNtQNjCsY7PMXkdFEsIUeHTMR3MFEcCUycofBPowrqBu2VtCRumEtMvIdJoKluoHZBXeKjGyhoEMmwkRExsgYGXmkwT6MK9YiI0/UYwdMBEuRMTLyCLMLqBvWTARP1GOHTAT3iIxsmF1wzUSwhYKfTN3QiR4dMRFsYXYBdQMmgg4U/KIKfgKzC6gbOlXwg0RGbjERdKTgF1XwA0RGlsYVDPbZiYJfVMEzi4xcGeyzMwU/yLhibXYBdUPnCp5RZGRpXMFgn50qeCaRkaVxBYN9rg322YmCZxAZWRpXMNhnbXbBToXKLkVGvmFcca1uwETQkVDZlcjIBhPBlcjIhnEFdQMmgg6Eyi5ERhPBA0RGrpgIOhAqP4vIyJKJYEuh8iv6P8tdLS3deMKNAAAAAElFTkSuQmCC');\n}\n.caught.active {\n\tbackground: rgba(255,255,255,.7);\n}\n#xkit-loading_pokemon {\n\toverflow-y:scroll;\n\theight: 100%;\n}\n.caught {\n\tdisplay: inline-block;\n\twidth: 90px;\n\theight: 90px;\n\tborder-radius: 10px;\n\tposition: relative;\n}\n.caught img {\n\twidth: 90px;\n\theight: auto;\n\tvertical-align:middle;\n\timage-rendering: pixelated;\n\timage-rendering: -moz-crisp-edges;\n}\n.caught::after {\n\tfloat: right;\n\tfont-size: 30px;\n\tposition: relative;\n\ttop: -40px;\n\tfont-weight: 100;\n\tfont-family: pokepixelplus, monospace;\n}\n.caught[data-pokegender=\"male\"]::after {\n\tcontent: \" \\2642\";\n\tcolor: #6CA0DC;\n}\n.caught[data-pokegender=\"female\"]::after {\n\tcontent: \" \\2640\";\n\tcolor: #FF69B4;\n}\n.caught[data-pokegender=\"genderless\"]::after {\n\tcontent: \" \\26AA\";\n\tcolor: #9370DB;\n}\n.caught.pokes_shiny::before, .poke.pokes_shiny::before {\n\tcontent: \"\\2605\";\n\tcolor: red;\n\tposition: absolute;\n\tz-index: 1;\n}\n.caught.pokes_shiny::before {\n\ttop: 5px;\n\tleft: 77.5px;\n}\n.poke.pokes_shiny::before {\n\ttop: 6px;\n\tleft: 86.5px;\n}\n","title":"Pokés","description":"Gotta catch them all!","developer":"new-xkit","version":"0.12.0","details":"Randomly spawns Pokémon on your dash for you to collect.","frame":"false","beta":"true","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/post_crushes.json b/Extensions/dist/post_crushes.json new file mode 100644 index 000000000..77074b375 --- /dev/null +++ b/Extensions/dist/post_crushes.json @@ -0,0 +1 @@ +{"id":"post_crushes","script":"//* TITLE Post Crushes **//\n//* VERSION 2.0.9 **//\n//* DESCRIPTION Lets you share your Tumblr Crushes **//\n//* DEVELOPER New-XKit **//\n//* DETAILS To use this extension, go to the 'Following' page on your dashboard, and click on the 'Post My Crushes' button below your Tumblr Crushes. **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.post_crushes = new Object({\n\n\trunning: false,\n\n\tpreferences: {\n\t\t\"sep0\": {\n\t\t\ttext: \"Appearance\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"default_title\": {\n\t\t\ttext: \"Default post title\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"My Tumblr Crushes\",\n\t\t\tvalue: \"My Tumblr Crushes\"\n\t\t},\n\t\t\"show_percentage\": {\n\t\t\ttext: \"Show percentages on the post next to their usernames\",\n\t\t\tdefault: false,\n\t\t\tvalue: true\n\t\t},\n\t\t\"sep1\": {\n\t\t\ttext: \"Tagging\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"tag_people\": {\n\t\t\ttext: \"Tag the people in the post\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"auto_tag\": {\n\t\t\ttext: \"Auto-tag all my crush posts with a custom tag\",\n\t\t\tdefault: false,\n\t\t\tvalue: true\n\t\t},\n\t\t\"auto_tag_text\": {\n\t\t\ttext: \"Custom tag for all crush posts\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t}\n\t},\n\n\trun: function() {\n\n\t\tif (document.location.href.indexOf(\"www.tumblr.com/following\") !== -1) {\n\t\t\tthis.put_button();\n\t\t}\n\n\t},\n\n\tput_button: function() {\n\n\t\t$(\"#crushes\").after('
      Post My Crushes
      ');\n\n\t\t$(\"#xkit_post_crushes\").click(function() {\n\t\t\tif ($(this).hasClass(\"xkit_button_gray\") === true) { return; }\n\t\t\tXKit.extensions.post_crushes.post();\n\t\t});\n\n\t},\n\n\tpost: function() {\n\n\t\tvar blog_url = $(\"#search_form\").find(\"[name='t']\").val();\n\t\tvar crush_name = [];\n\t\tvar crush_url = [];\n\t\tvar crush_val = [];\n\t\tvar crush_avi = [];\n\t\tvar i = 0;\n\n\t\t$(\"#xkit_post_crushes\").removeClass(\"xkit_button_green\");\n\t\t$(\"#xkit_post_crushes\").addClass(\"disabled\");\n\t\t$(\"#xkit_post_crushes\").html(\"Please wait...\");\n\n\t\tfor (i = 1; i <= 9; i++) {\n\t\t\tvar $crush = $(\"#crush_\" + i), crush_avi_css;\n\n\t\t\tcrush_url.push($crush.attr('href'));\n\t\t\tcrush_name.push($crush.attr('data-tumblelog-name'));\n\t\t\tcrush_val.push($crush.find(\"span\").html().replace(\"%\", \"\"));\n\n\t\t\tcrush_avi_css = $crush.css(\"background-image\");\n\t\t\tcrush_avi.push(crush_avi_css.substring(5, crush_avi_css.length - 2).replace(\"_96.\", \"_512.\"));\n\t\t}\n\n\t\tvar m_tags = \"\";\n\t\tif (XKit.extensions.post_crushes.preferences.auto_tag.value) {\n\t\t\tm_tags = XKit.extensions.post_crushes.preferences.auto_tag_text.value;\n\t\t}\n\n\t\tvar send_txt = \"\" + XKit.extensions.post_crushes.preferences.default_title.value + \":
        \";\n\n\t\tfor (i = 0; i <= 8; i++) {\n\t\t\tvar perc = ' (' + crush_val[i] + '%)';\n\t\t\tif (XKit.extensions.post_crushes.preferences.show_percentage.value === false) { perc = \"\"; }\n\t\t\tsend_txt = send_txt + '
      1. ' + crush_name[i] + '' + perc + '
      2. ';\n\t\t\tm_tags += \",\" + crush_name[i];\n\t\t}\n\n\t\tsend_txt = send_txt + '

      ';\n\n\t\tvar m_object = {};\n\n\t\tm_object.channel_id = blog_url;\n\n\t\tm_object.form_key = XKit.interface.form_key();\n\n\t\tm_object.context_page = \"dashboard\";\n\n\t\tm_object.context_id = \"\";\n\n\t\t// Not sure about this part:\n\t\tm_object[\"is_rich_text[one]\"] = \"0\";\n\t\tm_object[\"is_rich_text[two]\"] = \"1\";\n\t\tm_object[\"is_rich_text[three]\"] = \"0\";\n\n\t\tm_object[\"post[slug]\"] = \"\";\n\t\tm_object[\"post[draft_status]\"] = \"\";\n\t\tm_object[\"post[date]\"] = \"\";\n\n\t\tm_object.errors = false;\n\t\tm_object.silent = false;\n\t\tm_object.detached = true;\n\t\tm_object.reblog = false;\n\n\t\tm_object[\"post[type]\"] = \"photo\";\n\t\tm_object[\"post[photoset_layout]\"] = \"333\";\n\t\tm_object[\"post[photoset_order]\"] = \"o1,o2,o3,o4,o5,o6,o7,o8,o9\";\n\n\t\tfor (i = 1; i <= 9; i++) {\n\t\t\tm_object[\"images[o\" + i + \"]\"] = crush_avi[i - 1];\n\t\t}\n\n\t\tvar blog_selector_html = \"\";\n\n\t\tif (XKit.extensions.post_crushes.preferences.tag_people.value === false) {\n\t\t\tm_object[\"post[tags]\"] = \"\";\n\t\t} else {\n\t\t\tm_object[\"post[tags]\"] = m_tags;\n\t\t}\n\t\tm_object[\"post[publish_on]\"] = \"\";\n\t\tm_object.custom_tweet = false;\n\n\t\tXKit.window.show(\"Post Crushes\", \"Post Caption:Blog to Post to:
      \" + blog_selector_html + \"
      For additional options please check the Post Crushes control panel.
      \", \"question\", \"
      Publish
      Draft
      Queue
      Cancel
      \");\n\n\t\t$(\".xkit-post-crushes-proceed\").click(function() {\n\n\t\t\tif ($(this).hasClass(\"disabled\")) { return; }\n\n\t\t\tm_object[\"post[state]\"] = $(this).attr('data-status');\n\n\t\t\tvar m_text = $.trim($(\"#xkit-post-crushes-additional-text\").val());\n\n\t\t\tif (m_text !== \"\") {\n\t\t\t\tm_object[\"post[two]\"] = send_txt + \"

      \" + XKit.tools.escape_html(m_text) + \"

      \";\n\t\t\t} else {\n\t\t\t\tm_object[\"post[two]\"] = send_txt;\n\t\t\t}\n\n\t\t\tm_object.channel_id = $(\"#xkit-post-crushes-blog\").val();\n\n\t\t\t$(\"#xkit-window .xkit-button\").addClass(\"disabled\");\n\n\t\t\t$(\"#xkit-post-crushes-additional-text, #xkit-post-crushes-blog\").attr('disabled', 'disabled');\n\n\t\t\tXKit.extensions.post_crushes.actually_post(m_object);\n\n\t\t});\n\n\t\t$(\"#xkit-post-crushes-ignore\").click(function() {\n\n\t\t\tif ($(this).hasClass(\"disabled\")) { return; }\n\n\t\t\t$(\"#xkit_post_crushes\").addClass(\"xkit_button_green\");\n\t\t\t$(\"#xkit_post_crushes\").removeClass(\"disabled\");\n\t\t\t$(\"#xkit_post_crushes\").html(\"Post My Crushes\");\n\n\t\t\tXKit.window.close();\n\n\t\t});\n\n\t},\n\n\tactually_post: function(m_object) {\n\n\t\tXKit.interface.kitty.get(function(kitty_data) {\n\n\t\t\tif (kitty_data.errors === true) {\n\n\t\t\t\tXKit.extensions.post_crushes.post_crushes_error(\"Can't post crushes\", \"Unable to authorize post transaction. Please try again later.\");\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tGM_xmlhttpRequest({\n\t\t\t\tmethod: \"POST\",\n\t\t\t\turl: \"https://www.tumblr.com/svc/post/update\",\n\t\t\t\tdata: JSON.stringify(m_object),\n\t\t\t\tjson: true,\n\t\t\t\theaders: {\n\t\t\t\t\t\"X-tumblr-puppies\": kitty_data.kitten,\n\t\t\t\t\t\"X-tumblr-form-key\": XKit.interface.form_key()\n\t\t\t\t},\n\t\t\t\tonerror: function(response) {\n\t\t\t\t\tXKit.interface.kitty.set(\"\");\n\t\t\t\t\tXKit.extensions.post_crushes.post_crushes_error(\"Can't post crushes\", \"Server returned invalid/blank page or could not be reached. Maybe you hit your post limit for today, or your account has been suspended. Please check your internet connection and try again later.\");\n\t\t\t\t},\n\t\t\t\tonload: function(response) {\n\t\t\t\t\tXKit.interface.kitty.set(response.getResponseHeader(\"X-Tumblr-Kittens\"));\n\t\t\t\t\tvar m_obj = JSON.parse(response.responseText);\n\t\t\t\t\tif (m_obj.errors === false) {\n\t\t\t\t\t\t$(\"#xkit_post_crushes\").html(\"Posted!\");\n\t\t\t\t\t\tXKit.window.close();\n\t\t\t\t\t\tif (m_object[\"post[state]\"] === \"0\") {\n\t\t\t\t\t\t\tXKit.notifications.add(\"Your crushes have been posted to \" + m_object.channel_id + \"\", \"ok\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (m_object[\"post[state]\"] === \"1\") {\n\t\t\t\t\t\t\tXKit.notifications.add(\"Your crushes have been drafted to \" + m_object.channel_id + \"\", \"ok\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (m_object[\"post[state]\"] === \"2\") {\n\t\t\t\t\t\t\tXKit.notifications.add(\"Your crushes have been queued to \" + m_object.channel_id + \"\", \"ok\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tXKit.extensions.post_crushes.post_crushes_error(\"Can't post crushes\", \"Server returned a non-JSON object. Maybe you hit your post limit for today, or your account has been suspended. Please try again later.\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\n\t\t});\n\n\t},\n\n\tpost_crushes_error: function(title, message) {\n\n\t\tXKit.window.show(title, message, \"error\", \"
      OK
      \");\n\n\t},\n\n\tdestroy: function() {\n\t\t$(\"#xkit_post_crushes\").remove();\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjY0RDkxMTVCMzFEMTFFMkJGQjZENkUwMjNDREIzNjUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjY0RDkxMTZCMzFEMTFFMkJGQjZENkUwMjNDREIzNjUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3MDQxOUJCNkIzMTkxMUUyQkZCNkQ2RTAyM0NEQjM2NSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyNjREOTExNEIzMUQxMUUyQkZCNkQ2RTAyM0NEQjM2NSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgVv98EAAAbhSURBVHjajJZ7bFVV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","title":"Post Crushes","description":"Lets you share your Tumblr Crushes","developer":"New-XKit","version":"2.0.9","details":"To use this extension, go to the 'Following' page on your dashboard, and click on the 'Post My Crushes' button below your Tumblr Crushes.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/post_limit_checker.json b/Extensions/dist/post_limit_checker.json new file mode 100644 index 000000000..eb9064c5b --- /dev/null +++ b/Extensions/dist/post_limit_checker.json @@ -0,0 +1 @@ +{"id":"post_limit_checker","script":"//* TITLE Post Limit Checker **//\n//* VERSION 1.0.0 **//\n//* DESCRIPTION Are you close to the limit? **//\n//* DETAILS Shows you how many posts you can make or reblog today. **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.post_limit_checker = new Object({\n\n\trunning: false,\n\tapiKey: XKit.api_key,\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tXKit.tools.init_css(\"post_limit_checker\");\n\n\t\tif (!XKit.interface.where().dashboard && !XKit.interface.where().channel) {\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.interface.sidebar.add({\n\t\t\tid: \"post_limit_checker_sidebar\",\n\t\t\ttitle: \"Post Limit\",\n\t\t\titems: [{\n\t\t\t\tid: \"post_limit_checker_view\",\n\t\t\t\ttext: \"Check Post Limit\"\n\t\t\t}]\n\t\t});\n\n\t\t$(\"#post_limit_checker_view\").click(() => this.start());\n\t},\n\n\tstaticBlogs: [],\n\n\tblogs: [],\n\tposts: {},\n\tcutoff: 0,\n\n\tstart: function() {\n\n\t\tXKit.window.show(\n\t\t\t'Important!',\n\n\t\t\t'Before beginning, please read the following carefully.' +\n\t\t\t'
      ' +\n\t\t\t\t'
      ' +\n\t\t\t\t\t'
      Deleted posts
      Deleted posts are counted by Tumblr, but this tool can\\'t count them. For example, if you\\'ve made 250 posts since the last reset but then deleted 50 of them, this tool will tell you that you have 50 more posts to go, but in reality you\\'ve already hit your post limit.
      ' +\n\t\t\t\t\t'
      Original photo posts
      There is a separate limit for media uploads of 150. This extension does not check for that.
      ' +\n\t\t\t\t\t'
      Edited timestamps
      This tool relies on the time and date on posts being accurate. If you have set a custom post date on any recent posts, inaccurate data will be shown.
      ' +\n\t\t\t\t\t'
      Group blogs
      If you are a member of a group blog that has posted today, this tool cannot tell if those posts were made by your account or not.
      ' +\n\t\t\t\t\t'
      No Guarantee
      The New XKit Team is not making any guarantees about the reliability of this tool.
      ' +\n\t\t\t\t'
      ' +\n\t\t\t'
      ',\n\n\t\t\t'warning',\n\n\t\t\t'
      Continue
      ' +\n\t\t\t'
      Cancel
      '\n\t\t);\n\n\t\t$(\"#xkit-plc-list\").nanoScroller();\n\t\t$(\"#xkit-plc-list\").nanoScroller({ scroll: 'top' });\n\n\t\t$(\"#xkit-plc-continue\").click(() => {\n\t\t\tXKit.window.show(\n\t\t\t\t'Please wait',\n\n\t\t\t\t'Gathering the information I need:
      ' +\n\t\t\t\t'Initialising...',\n\n\t\t\t\t'info'\n\t\t\t);\n\n\t\t\tthis.staticBlogs = XKit.tools.get_blogs();\n\n\t\t\tthis.blogs = [...this.staticBlogs];\n\t\t\tthis.posts = {};\n\t\t\tthis.cutoff = Math.floor(this.get_cutoff());\n\n\t\t\tthis.scan_next_blog();\n\t\t});\n\n\t},\n\n\tget_cutoff: function() {\n\t\tlet now = new Date();\n\n\t\tif (now.getUTCHours() >= 5) {\n\t\t\treturn now.setUTCHours(5, 0, 0) / 1000;\n\t\t} else {\n\t\t\treturn now.setUTCHours(5 - 24, 0, 0) / 1000;\n\t\t}\n\t},\n\n\tscan_next_blog: function() {\n\t\tconst blog = this.blogs.shift();\n\t\tif (blog === undefined) {\n\t\t\tthis.done();\n\t\t\treturn;\n\t\t}\n\n\t\t$('#xkit-plc-progress').html(`Checking posts on ${blog}...`);\n\t\tthis.posts[blog] = 0;\n\t\tthis.next(blog);\n\t},\n\n\tnext: function(blog, page = 0) {\n\n\t\tXKit.svc.indash_blog({\n\t\t\ttumblelog_name_or_id: blog,\n\t\t\tlimit: 50,\n\t\t\toffset: page * 50\n\t\t}).then(response => {\n\t\t\tconst posts = response.json().response.posts;\n\n\t\t\tif (!posts.length) {\n\t\t\t\tthis.scan_next_blog();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (let post of posts) {\n\t\t\t\tif (post.timestamp > this.cutoff) {\n\t\t\t\t\tthis.posts[blog]++;\n\t\t\t\t} else {\n\t\t\t\t\tthis.scan_next_blog();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.next(blog, page + 1);\n\t\t}).catch(this.show_error);\n\t},\n\n\tdone: function() {\n\t\tconst remaining = 250 - Object.values(this.posts).reduce((total, x) => total + x);\n\t\tconst nextReset = new Date((this.cutoff + 86400) * 1000);\n\n\t\tXKit.window.show(\n\t\t\t'Results',\n\n\t\t\t`You have ${remaining} posts remaining today.
      \n\t\t\tIn your timezone, the limit resets each day at ${nextReset.toLocaleTimeString()}.

      ` +\n\t\t\t'
      ';\n\t\tfor (var j = 0; j < this.preferences.StepsOnControl.value; j++) {\n\t\t\tm_html += '
      ';\n\n\t\t\tif (j + 1 == Math.round(this.preferences.StepsOnControl.value / 2)) {\n\t\t\t\tm_html += '
      ';\n\t\t\t}\n\t\t}\n\t\tm_html += '
      ' + this.imageCode + '
      ' +\n\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t'' + this.staticBlogs.map(blog => `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t`).join(\"\") +\n\t\t\t'
      BlogPosts made today
      ${blog}${this.posts[blog]}
      ',\n\n\t\t\t'info',\n\n\t\t\t'
      OK
      '\n\t\t);\n\t},\n\n\tshow_error: function(error) {\n\t\tXKit.window.show(\n\t\t\t'Something went wrong.',\n\n\t\t\t'I was unable to process a blog.
      Please refresh the page and try again.

      ' +\n\t\t\t`Here's what I know about this error:

      ${error.message || error.responseText || error}

      `,\n\n\t\t\t'error',\n\n\t\t\t'
      OK
      ' +\n\t\t\t'
      Refresh now
      '\n\t\t);\n\n\t\t$(\"#xkit-plc-refresh\").click(() => location.reload(true));\n\t},\n\n\tdestroy: function() {\n\t\tXKit.interface.sidebar.remove(\"post_limit_checker_sidebar\");\n\t\t$(\"#post_limit_checker_view\").remove();\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMDZEQzlCRTZEMUIxMUUzOUM1NkIzMjQ0OERGQUU5RCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMDZEQzlCRDZEMUIxMUUzOUM1NkIzMjQ0OERGQUU5RCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTE4QkRBRjU5ODYxRUUyRjREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","css":"#xkit-plc-list {\n\n\tborder: 1px solid rgb(190,190,190);\n\theight: 188px;\n\tmargin-top: 15px;\n\n}\n\n#xkit-plc-list .xkit-warning-plc-text {\n\n\tpadding: 9px 19px 9px 14px;\n\tborder-bottom: 1px solid rgb(190,190,190);\n\n}\n\n#xkit-plc-list .xkit-warning-plc-text:last-child {\n\n\tborder-bottom: 0;\n\n}\n\n.xkit-plc-division:first-child {\n\tmargin-top: 10px;\n}\n","title":"Post Limit Checker","description":"Are you close to the limit?","developer":"new-xkit","version":"1.0.0","details":"Shows you how many posts you can make or reblog today.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/postarchive.json b/Extensions/dist/postarchive.json new file mode 100644 index 000000000..cb9baf9c9 --- /dev/null +++ b/Extensions/dist/postarchive.json @@ -0,0 +1 @@ +{"id":"postarchive","script":"//* TITLE Post Archiver **//\n//* VERSION 1.0.6 **//\n//* DESCRIPTION Never lose a post again. **//\n//* DETAILS Post Archiver lets you save posts to your XKit.

      Found a good recipe? Think those hotline numbers on that signal boost post might come in handy in the future?

      Click on the save button, then click on the My Archive button on your sidebar anytime to access those posts. You can also name and categorize posts. **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA false **//\n\n/* eslint prefer-template: \"error\" */\n\nXKit.extensions.postarchive = {\n\n\trunning: false,\n\n\tbutton_icon: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDQ5RTU4RTU3MjVEMTFFMzkxNjc4NTlFOTA5MTY1RjciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDQ5RTU4RTY3MjVEMTFFMzkxNjc4NTlFOTA5MTY1RjciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NDlFNThFMzcyNUQxMUUzOTE2Nzg1OUU5MDkxNjVGNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NDlFNThFNDcyNUQxMUUzOTE2Nzg1OUU5MDkxNjVGNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pu91pc8AAACgSURBVHjaYvz//z8D1QDIMGSMLo0Fz8Sln4mBimCEGMaCRawLiKXx6HEC4qVQ9lwg3ocvNm2A+A+OmETGh4GYGUUvjqRRQcCgVzDXE2MYCGzBY5grNp/hM0wIiB9iMagRV6IllAMsgfgnkkF7QeGE0zA0W7GBIqjccyCWwJYjkfUTMgwE1kGTBAM+wxjRDGEkp6ygSQ5gJOC9YZLRAQIMAENzviFg3gnxAAAAAElFTkSuQmCC\",\n\tbutton_on: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTU0NzMyOUU3MjVEMTFFMzkxNjc4NTlFOTA5MTY1RjciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTU0NzMyOUY3MjVEMTFFMzkxNjc4NTlFOTA5MTY1RjciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFNTQ3MzI5QzcyNUQxMUUzOTE2Nzg1OUU5MDkxNjVGNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFNTQ3MzI5RDcyNUQxMUUzOTE2Nzg1OUU5MDkxNjVGNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pn1307MAAAC0SURBVHjaYvz//z8DtQBj/hK88thsmgXE6TDOhGiEEiYGKoIRYhgLFrEuIJbGo8cJiJdC2XOBeB8+wzYB8QEgZsZhmAoUHwHig4S8CVJUQ8BHr4E4Aoj/EhNmHUC8FY9h0UD8lJQIiAPiR1jEm4B4N6mx+Q7qlV9IYvughuGMTeQsw4gmfxyIK4G4F4hfQL2HEk4FSxn/44tNdNAHxDZAPAVqIEnpDBsIGvAc8H94ZnSAAAMAwKElB0jQE0QAAAAASUVORK5CYII=\",\n\n\tapiKey: XKit.api_key,\n\n\tarchived_posts: [],\n\tcategories: [],\n\n\tframe_run: function() {\n\n\t\tif ($(\".btn.like\").length === 0 && $(\".btn.edit\").length === 0) { return; }\n\n\t\tXKit.tools.init_css(\"postarchive\");\n\n\t\tXKit.extensions.postarchive.load_posts();\n\n\t\tvar m_css = \"#iframe_controls { width: auto !important; } \" +\n\t\t\t\t\"#xkit_postarchive_inblog_button:before {\" +\n\t\t\t\t\t\" background-size: auto; \" +\n\t\t\t\t\t\" background-position: 50% 50%; \" +\n\t\t\t\t\t\" background-repeat: no-repeat; \" +\n\t\t\t\t\t\" background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTQ0NUQ3NjA3Mjg4MTFFMzkxNjc4NTlFOTA5MTY1RjciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTQ0NUQ3NjE3Mjg4MTFFMzkxNjc4NTlFOTA5MTY1RjciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5NDQ1RDc1RTcyODgxMUUzOTE2Nzg1OUU5MDkxNjVGNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5NDQ1RDc1RjcyODgxMUUzOTE2Nzg1OUU5MDkxNjVGNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtuUengAAACQSURBVHjaYvz//z8DOYAJi5gxEP9Hw8bEaCTZRjYglgNiCSzqJKBybHARkB+hmA2Iz//HDc5D1YDVI2sEYRUg/oxF02eoHAMujSAcgkVjCLo6bBpBeDKSpsnY1DDiiEdQIByDsq2A+Be6AphGmG5GJDlRKP0aSQyuDp9GbACujgWHBFlJjijAQqQTMQBAgAEAoAjV0Rb+PnUAAAAASUVORK5CYII=); \" +\n\t\t\t\t\"}\" +\n\t\t\t\t\".btn.xkit-post-archive-inblog-button-done { background-color: #59982a !important; }\";\n\n\t\tXKit.tools.add_css(m_css, \"post_archive_in_blog\");\n\n\t\tvar m_html = \"Post Archiver\";\n\n\t\t$(\".btn.dashboard\").before(m_html);\n\n\t\tvar post_id = \"\";\n\n\t\tif ($(\".btn.like\").length > 0) {\n\t\t\tpost_id = $(\".btn.like\").attr('data-id');\n\t\t} else {\n\t\t\tvar postid_start = document.location.href.search(\"&pid=\");\n\t\t\tif (postid_start === -1) { return; }\n\t\t\tvar postid_end = document.location.href.indexOf(\"&\", postid_start + 2);\n\t\t\tpost_id = document.location.href.substring(postid_start + 5, postid_end);\n\t\t}\n\n\t\tif (XKit.extensions.postarchive.is_post_in_archive(post_id) !== false) {\n\n\t\t\t$(\"#xkit_postarchive_inblog_button\").addClass(\"xkit-post-archive-inblog-button-done\");\n\n\t\t}\n\n\t\t$(\"#xkit_postarchive_inblog_button\").click(function() {\n\n\t\t\tXKit.iframe.full();\n\n\t\t\tXKit.extensions.postarchive.archive(post_id, this, true);\n\n\n\t\t});\n\n\t},\n\n\trun: function() {\n\n\t\tthis.running = true;\n\n\t\tXKit.tools.init_css(\"postarchive\");\n\n\t\tXKit.extensions.postarchive.load_posts();\n\n\t\tif (XKit.interface.where().inbox === true) { return; }\n\n\t\tif ($('#postarchive_ul').length === 0) {\n\t\t\tvar xf_html =\n\t\t\t``;\n\n\t\t\t$(\".controls_section_radar\").before(xf_html);\n\t\t}\n\n\t\t$(\"#postarchive_view\").click(function() {\n\n\t\t\tXKit.extensions.postarchive.view();\n\n\t\t\treturn false;\n\t\t});\n\n\t\tif ($(\".posts .post\").length > 0) {\n\n\t\t\tXKit.interface.create_control_button(\"xkit-postarchive\", this.button_icon, \"Archive this post\", \"\", this.button_on);\n\t\t\tXKit.extensions.postarchive.init();\n\t\t\tXKit.post_listener.add(\"postarchive\", XKit.extensions.postarchive.do);\n\t\t\tXKit.extensions.postarchive.do();\n\t\t}\n\n\t},\n\n\trender_posts_uncategorized: function() {\n\n\t\tvar m_post_list_html = \"\";\n\n\t\tfor (var i = 0; i < XKit.extensions.postarchive.archived_posts.length; i++) {\n\n\t\t\tif (!XKit.extensions.postarchive.archived_posts[i].category) {\n\n\t\t\t\tvar m_x_list_div = `
      ${XKit.tools.escape_html(XKit.extensions.postarchive.archived_posts[i].title)}
      `;\n\t\t\t\tm_post_list_html = m_post_list_html + m_x_list_div;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn m_post_list_html;\n\n\t},\n\n\trender_posts_on_category: function(category, additional_classes) {\n\n\t\tvar m_post_list_html = \"\";\n\n\t\tif (typeof additional_classes === \"undefined\") { additional_classes = \"\"; }\n\n\t\tfor (var i = 0; i < XKit.extensions.postarchive.archived_posts.length; i++) {\n\n\t\t\tif (typeof XKit.extensions.postarchive.archived_posts[i].category !== \"undefined\") {\n\n\t\t\t\tif (XKit.extensions.postarchive.archived_posts[i].category == category) {\n\n\t\t\t\t\tvar m_x_list_div = `\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${XKit.tools.escape_html(XKit.extensions.postarchive.archived_posts[i].title)}\n\t\t\t\t\t\t
      \n\t\t\t\t\t`;\n\t\t\t\t\tm_post_list_html = m_post_list_html + m_x_list_div;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn m_post_list_html;\n\n\t},\n\n\tshow_items_in_category: function(category_id, show) {\n\n\t\t$(\".xkit-postarchive-post, .xkit-postarchive-no-posts-index\").each(function() {\n\n\t\t\tif ($(this).attr('data-category') === category_id) {\n\n\t\t\t\tif (show !== true) {\n\n\t\t\t\t\t$(this).addClass(\"xkit-postarchive-hidden-category-item\");\n\n\t\t\t\t} else {\n\n\t\t\t\t\t$(this).removeClass(\"xkit-postarchive-hidden-category-item\");\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t});\n\n\t\tXKit.extensions.postarchive.save_category_collapse(category_id, show);\n\n\t},\n\n\tsave_category_collapse: function(category_id, show) {\n\n\t\tif (category_id === \"\") {\n\t\t\t// we have a storage bug on chrome.\n\t\t\tif (show === true) {\n\t\t\t\tXKit.storage.set(\"postarchive\", \"collapse_uncategorized\", \"false\");\n\t\t\t} else {\n\t\t\t\tXKit.storage.set(\"postarchive\", \"collapse_uncategorized\", \"true\");\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.extensions.postarchive.load_posts();\n\n\t\tfor (var i = 0; i < XKit.extensions.postarchive.categories.length; i++) {\n\n\t\t\tif (category_id === XKit.extensions.postarchive.categories[i].id) {\n\n\t\t\t\tXKit.extensions.postarchive.categories[i].collapsed = !show;\n\t\t\t\tXKit.extensions.postarchive.save_posts();\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tview: function(open_this_id) {\n\n\t\tXKit.extensions.postarchive.load_posts();\n\n\t\tif ($(\"#xkit-postarchive-background\").length > 0) {\n\n\t\t\t$(\"#xkit-postarchive-background\").remove();\n\t\t\t$(\"#xkit-postarchive-container\").remove();\n\n\t\t}\n\n\t\tif (XKit.extensions.postarchive.archived_posts.length === 0) {\n\n\t\t\tXKit.window.show(\"No posts yet.\", \"You have no archived posts yet.
      If you've archived them on another computer, you might need to sync them using XCloud.\", \"error\", \"
      OK
      \");\n\n\t\t}\n\n\t\tvar m_post_list_html = \"\";\n\n\t\tm_post_list_html += `
      Uncategorized
      `;\n\t\tm_post_list_html = m_post_list_html + XKit.extensions.postarchive.render_posts_uncategorized();\n\n\n\t\tif (XKit.extensions.postarchive.categories.length > 0) {\n\n\t\t\tfor (var i = 0; i < XKit.extensions.postarchive.categories.length; i++) {\n\n\t\t\t\tvar m_collapse_class = \"xkit-pac-opened\";\n\t\t\t\tvar m_collapse_class_post = \"\";\n\n\t\t\t\tif (XKit.extensions.postarchive.categories[i].collapsed === true) { m_collapse_class = \"\"; m_collapse_class_post = \"xkit-postarchive-hidden-category-item\"; }\n\n\t\t\t\tm_post_list_html += `
      ${XKit.extensions.postarchive.categories[i].title}
      `;\n\n\t\t\t\tvar cat_index = XKit.extensions.postarchive.render_posts_on_category(XKit.extensions.postarchive.categories[i].id, m_collapse_class_post);\n\n\t\t\t\tif (cat_index !== \"\") {\n\n\t\t\t\t\tm_post_list_html = m_post_list_html + cat_index;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tm_post_list_html += `
      No posts
      `;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar m_html =\n\t\t\t`
       
      \n\t\t\t
      \n\t\t\t\t
      \n\t\t\t\t\t
      \n\t\t\t\t\t\t${m_post_list_html}\n\t\t\t\t\t
      \n\t\t\t\t
      \n\t\t\t\t\n\t\t\t\t
      Export
      \n\t\t\t\t
      Import
      \n\t\t\t\t
      \n\t\t\t\t\tSelect a post from the right to get started.\n\t\t\t\t
      \n\t\t\t\t
      remove
      \n\t\t\t\t
      recategorize
      \n\t\t\t\t
      rename
      \n\t\t\t
      `;\n\n\t\t$(\"body\").append(m_html);\n\n\t\tif ($(\"#xkit-postarchive-sidebar .xkit-postarchive-post\").length > 8) {\n\n\t\t\t$(\"#xkit-postarchive-sidebar .xkit-postarchive-post:last-child\").css(\"border-bottom\", \"0px\");\n\n\t\t}\n\n\t\t$(\".xkit-postarchive-cat-separator\").click(function() {\n\n\t\t\t$(this).toggleClass(\"xkit-pac-opened\");\n\n\t\t\tif ($(this).hasClass(\"xkit-pac-opened\")) {\n\n\t\t\t\tXKit.extensions.postarchive.show_items_in_category($(this).attr('data-category'), true);\n\n\t\t\t} else {\n\n\t\t\t\tXKit.extensions.postarchive.show_items_in_category($(this).attr('data-category'), false);\n\n\t\t\t}\n\n\t\t});\n\n\t\t$(\"#xkit-postarchive-sidebar\").nanoScroller();\n\t\t$(\"#xkit-postarchive-sidebar\").nanoScroller({ scroll: 'top' });\n\n\t\t$(\"#xkit-postarchive-sidebar .xkit-postarchive-post\").click(function() {\n\n\t\t\t$(\"#xkit-postarchive-sidebar .xkit-postarchive-post\").removeClass(\"selected\");\n\n\t\t\t$(this).addClass(\"selected\");\n\n\t\t\tXKit.extensions.postarchive.render_post($(this).attr('data-post-id'));\n\n\t\t});\n\n\t\t$(\"#xkit-postarchive-background\").click(function() {\n\n\t\t\t$(\"#xkit-postarchive-background, #xkit-postarchive-container\").fadeOut('fast', function() { $(this).remove(); });\n\n\t\t});\n\n\t\tif (typeof open_this_id !== \"undefined\") {\n\n\t\t\t$(\".xkit-postarchive-post\").each(function() {\n\n\t\t\t\tif ($(this).attr('data-post-id') === open_this_id) {\n\n\t\t\t\t\t$(this).trigger(\"click\");\n\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t}\n\n\t\t$(\"#xkit-postarchive-export\").on(\"click\", function() {\n\n\t\t\tvar m_data = {};\n\n\t\t\tm_data.posts = XKit.storage.get(\"postarchive\", \"archived_posts\", \"\");\n\t\t\tm_data.categories = XKit.storage.get(\"postarchive\", \"categories\", \"\");\n\n\t\t\tvar blob = new Blob([JSON.stringify(m_data)], {type: 'text/plain'});\n\n\t\t\tXKit.window.show(\"Export Archive\", \"Click OK to download a file with the contents of your Archive.\", \"info\", \"
      OK
      \");\n\t\t\tvar link = $('#xkit-postarchive-download-export')[0];\n\t\t\tlink.href = window.URL.createObjectURL(blob);\n\t\t\tlink.download = `PostArchive export - ${Date()}.txt`;\n\n\t\t\t$(\"#xkit-postarchive-export-confirm\").click(function() {\n\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.extensions.postarchive.view();\n\n\t\t\t});\n\n\t\t});\n\n\t\t$(\"#xkit-postarchive-import\").on(\"click\", function() { //Import Function\n\n\t\t\tXKit.window.show(\"Import\", \"You can import settings from XKit.
      Click XKit's Export button and select the file here (or drag and drop it).

      If you need to import your archive from old XKit, click here for the PostArchive migration guide.

      \", \"question\", \"
      Import!
      Cancel
      \");\n\n\t\t\t$(\"#xkit-postarchive-replace-on-import\").click(function() {\n\t\t\t\t$(this).toggleClass(\"selected\");\n\t\t\t});\n\n\t\t\t$(\"#xkit-postarchive-add-words\").click(function() {\n\n\t\t\t\tvar file = $(\"#xkit-postarchive-import-file\")[0].files[0];\n\t\t\t\t// TODO: check if import will push XKit over browser storage limit\n\n\t\t\t\tvar f_reader = new FileReader();\n\n\t\t\t\tvar progress_bar = XKit.progress.add('postarchive-import-progress');\n\n\t\t\t\t$('.xkit-window-msg').append(progress_bar);\n\t\t\t\t$('.xkit-window-title').text('Importing...');\n\n\t\t\t\tf_reader.onload = function(event) {\n\t\t\t\t\tvar m_data = event.target.result;\n\n\t\t\t\t\tvar m_obj = null;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tm_obj = JSON.parse(m_data);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tXKit.extensions.postarchive.show_error(\"Invalid/Corrupt JSON object found.\\nImport can not continue.\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar m_posts = JSON.parse(m_obj.posts);\n\t\t\t\t\tvar m_categories = JSON.parse(m_obj.categories);\n\n\t\t\t\t\tXKit.extensions.postarchive.load_posts();\n\n\t\t\t\t\tArray.prototype.push.apply(XKit.extensions.postarchive.categories, m_categories);\n\t\t\t\t\tArray.prototype.push.apply(XKit.extensions.postarchive.archived_posts, m_posts);\n\t\t\t\t\tXKit.extensions.postarchive.save_posts();\n\n\t\t\t\t\tXKit.extensions.postarchive.update_sidebar();\n\n\t\t\t\t\tXKit.window.show(\"Done!\", \"Your posts should exist!\", \"info\", \"
      OK
      \");\n\t\t\t\t\tXKit.extensions.postarchive.view();\n\t\t\t\t\treturn;\n\n\t\t\t\t};\n\n\t\t\t\tf_reader.onprogress = function(event) {\n\t\t\t\t\tXKit.progress.value('postarchive-import-progress', 100 * event.loaded / file.size);\n\t\t\t\t};\n\n\t\t\t\tf_reader.readAsText(file);\n\n\t\t\t});\n\n\t\t});\n\n\t\t$(\"#xkit-postarchive-search\").keyup(function() {\n\n\t\t\tvar m_value = $(this).val().toLowerCase();\n\t\t\tm_value = $.trim(m_value);\n\n\t\t\tif (m_value === \"\") {\n\n\t\t\t\t$(\".xkit-postarchive-post\").removeClass(\"xkit-this-post-is-pretty-hidden\");\n\t\t\t\t$(\"#xkit-postarchive-not-found\").remove();\n\t\t\t\t$(\".xkit-postarchive-cat-separator\").removeClass(\"xkit-this-post-is-pretty-hidden\");\n\t\t\t\t$(\".xkit-postarchive-no-posts-index\").removeClass(\"xkit-this-post-is-pretty-hidden\");\n\n\t\t\t} else {\n\n\t\t\t\t$(\".xkit-postarchive-cat-separator\").addClass(\"xkit-this-post-is-pretty-hidden\");\n\t\t\t\t$(\".xkit-postarchive-no-posts-index\").addClass(\"xkit-this-post-is-pretty-hidden\");\n\n\t\t\t}\n\n\t\t\tvar found_count = 0;\n\n\t\t\t$(\".xkit-postarchive-post\").each(function() {\n\n\t\t\t\tif ($(this).html().toLowerCase().indexOf(m_value) !== -1) {\n\n\t\t\t\t\tfound_count++;\n\t\t\t\t\t$(this).removeClass(\"xkit-this-post-is-pretty-hidden\");\n\n\t\t\t\t} else {\n\n\t\t\t\t\t$(this).addClass(\"xkit-this-post-is-pretty-hidden\");\n\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\tif (found_count === 0) {\n\n\t\t\t\tif ($(\"#xkit-postarchive-not-found\").length === 0) {\n\t\t\t\t\t$(\"#xkit-postarchive-sidebar-content\").append(\"
      Not found.
      \");\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t$(\"#xkit-postarchive-sidebar\").nanoScroller();\n\t\t\t$(\"#xkit-postarchive-sidebar\").nanoScroller({ scroll: 'top' });\n\n\t\t});\n\n\t\tvar collapse_uncat = XKit.storage.get(\"postarchive\", \"collapse_uncategorized\", \"false\");\n\t\tif (collapse_uncat === \"true\" || collapse_uncat === true) {\n\n\t\t\t// dirty coding.\n\t\t\t$(\".xkit-postarchive-cat-separator-uncategorized\").trigger('click');\n\n\t\t}\n\n\t},\n\n\tget_photo: function(data, index, width) {\n\n\t\tfor (var i = 0; i < data.photos[index].alt_sizes.length; i++) {\n\t\t\tif (parseInt(data.photos[index].alt_sizes[i].width) === parseInt(width)) {\n\t\t\t\treturn data.photos[index].alt_sizes[i].url;\n\t\t\t}\n\t\t}\n\n\t\treturn data.photos[index].alt_sizes[0].url;\n\n\t},\n\n\tget_photo_height: function(data, index, width) {\n\n\t\tfor (var i = 0; i < data.photos[index].alt_sizes.length; i++) {\n\t\t\tif (parseInt(data.photos[index].alt_sizes[i].width) === parseInt(width)) {\n\t\t\t\treturn data.photos[index].alt_sizes[i].height;\n\t\t\t}\n\t\t}\n\n\t\treturn data.photos[index].alt_sizes[0].height;\n\n\t},\n\n\tparse_item: function(data, username) {\n\n\t\tvar m_html = \"
    11. \";\n\t\tvar post_class = \"\";\n\n\t\tvar post_tags = \"\";\n\t\tvar post_contents = \"\";\n\n\t\tif (data.type === \"text\") {\n\n\t\t\tpost_class = \"is_regular\";\n\n\t\t\tif (data.title !== \"\" && data.title !== null) {\n\t\t\t\tpost_contents += `
      ${data.title}
      `;\n\t\t\t}\n\n\t\t\tif (data.body !== \"\" && data.body !== null) {\n\t\t\t\tpost_contents += `
      ${data.body}
      `;\n\t\t\t}\n\n\t\t}\n\n\t\tif (data.type === \"quote\") {\n\n\t\t\tpost_class = \"is_quote\";\n\n\t\t\tif (data.text !== \"\" && data.text !== null) {\n\t\t\t\tpost_contents += `
      \"${data.text}\"
      `;\n\t\t\t}\n\n\t\t\tif (data.source !== \"\" && data.source !== null) {\n\t\t\t\tpost_contents += `
       - ${data.source}
      `;\n\t\t\t}\n\n\t\t}\n\n\t\tif (data.type === \"link\") {\n\n\t\t\tpost_class = \"is_link\";\n\n\t\t\tif (data.link_image !== \"\" && data.link_image !== null && typeof data.link_image !== \"undefined\") {\n\n\t\t\t\tpost_contents += `
      `;\n\n\t\t\t} else {\n\n\t\t\t\tvar link_title = data.url;\n\n\t\t\t\tif (data.title !== \"\" && data.title !== null && typeof data.title !== \"undefined\") {\n\n\t\t\t\t\tlink_title = data.title;\n\n\t\t\t\t}\n\n\t\t\t\tpost_contents += `
      `;\n\n\t\t\t}\n\n\t\t\tif (data.description !== \"\" && data.description !== null) {\n\n\t\t\t\tpost_contents += `
      ${data.description}
      `;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif (data.type === \"answer\") {\n\n\t\t\tpost_class = \"is_note\";\n\n\t\t\tpost_contents += `

      ${data.asking_name} asked:

      ${data.question}

      \"\"
      ${data.answer}
      `;\n\n\t\t}\n\n\t\tif (data.type === \"video\") {\n\n\t\t\tpost_class = \"is_video\";\n\n\t\t\tvar m_post_inner_html = \"\";\n\n\t\t\tvar last_width = 0;\n\t\t\tfor (var obj in data.player) {\n\t\t\t\tif (data.player[obj].width > last_width && data.player[obj].width <= 540) {\n\t\t\t\t\tm_post_inner_html = data.player[obj].embed_code;\n\t\t\t\t\tlast_width = data.player[obj].width;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (m_post_inner_html.indexOf(\"${m_post_inner_html}`;\n\n\t\t\tif (data.caption !== \"\" && data.caption !== null) {\n\t\t\t\tpost_contents += `
      ${data.caption}
      `;\n\t\t\t}\n\n\t\t}\n\n\t\tif (data.type === \"audio\") {\n\n\t\t\tpost_class = \"is_audio\";\n\n\t\t\tpost_contents += `
      ${data.embed}
      `;\n\n\t\t\tif (data.caption !== \"\" && data.caption !== null) {\n\t\t\t\tpost_contents += `
      ${data.caption}
      `;\n\t\t\t}\n\n\t\t}\n\n\t\tif (data.type === \"photo\") {\n\n\t\t\tpost_class = \"is_photo\";\n\n\t\t\tif (data.photos.length === 1) { post_class = \"is_photo\"; } else { post_class = \"is_photoset\"; }\n\n\t\t\tvar photo_post_inner_html = \"\";\n\n\t\t\tif (data.photos.length === 1) {\n\n\t\t\t\tphoto_post_inner_html = `\"\"`;\n\n\t\t\t} else {\n\n\t\t\t\tvar rows = [];\n\n\t\t\t\tfor (var i = 0; i < data.photoset_layout.length; i++) {\n\t\t\t\t\trows.push(data.photoset_layout[i]);\n\t\t\t\t}\n\n\t\t\t\tphoto_post_inner_html = \"
      \";\n\n\t\t\t\tvar current_photo = 0;\n\n\t\t\t\trows.forEach(function(row) {\n\t\t\t\t\tvar shortest = 0;\n\t\t\t\t\tvar m_width = 540 / row;\n\t\t\t\t\tif (row > 1) {\n\t\t\t\t\t\tm_width -= row;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Calculate the shortest!\n\t\t\t\t\tvar m_temp_photo = current_photo;\n\n\t\t\t\t\tif (row >= 2) {\n\n\t\t\t\t\t\tfor (var j = 1; j < row; j++) {\n\n\t\t\t\t\t\t\tvar scaled_height = (m_width * XKit.extensions.postarchive.get_photo_height(data, m_temp_photo, \"500\")) / 500;\n\n\t\t\t\t\t\t\tif (scaled_height <= shortest || shortest === 0) {\n\t\t\t\t\t\t\t\tshortest = scaled_height;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tm_temp_photo++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshortest = XKit.extensions.postarchive.get_photo_height(data, m_temp_photo, \"500\");\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar in_row_html = \"\";\n\n\t\t\t\t\tfor (var x = 0; x < row; x++) {\n\n\t\t\t\t\t\tvar m_height = (m_width * XKit.extensions.postarchive.get_photo_height(data, current_photo, \"500\")) / 500;\n\t\t\t\t\t\tvar margin_top = 0;\n\n\t\t\t\t\t\tif (m_height > shortest) {\n\t\t\t\t\t\t\tmargin_top = (m_height - shortest) / 2;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tin_row_html +=\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t`;\n\n\t\t\t\t\t\tcurrent_photo++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tphoto_post_inner_html +=\n\t\t\t\t\t\t`
      \n\t\t\t\t\t\t\t${in_row_html}\n\t\t\t\t\t\t
      `;\n\n\t\t\t\t});\n\n\t\t\t\tphoto_post_inner_html += `
      `;\n\n\t\t\t}\n\n\t\t\tpost_contents += `
      ${photo_post_inner_html}
      `;\n\n\t\t\tif (data.caption !== \"\" && data.caption !== null) {\n\t\t\t\tpost_contents += `
      ${data.caption}
      `;\n\t\t\t}\n\n\t\t}\n\n\t\tif (typeof data.tags !== \"undefined\") {\n\n\t\t\tpost_tags = \"
      \";\n\n\t\t\tdata.tags.forEach(function(tag) {\n\t\t\t\tvar fixed_tag_url = XKit.tools.replace_all(tag, + \" \", \"-\");\n\t\t\t\tpost_tags += `#${tag}`;\n\t\t\t});\n\n\t\t\tpost_tags += `
      `;\n\n\t\t}\n\n\t\tvar source_div = \"\";\n\t\t// var reblog_div = \"\";\n\n\t\tif (data.source_url !== \"\" && typeof data.source_url !== \"undefined\") {\n\n\t\t\tsource_div = ``;\n\n\t\t}\n\n\t\tif (data.reblogged_from_id !== \"\" && typeof data.reblogged_from_id !== \"undefined\") {\n\n\t\t\t// reblog_div = 'reblogged' + data.reblogged_from_name + '';\n\n\t\t}\n\n\t\tm_html += `\n\t\t\t\n\t\t\t\t\t
      \n\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tArchived from:\n\t\t\t\t\t\t\t\t${data.blog_name}\n\t\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t${source_div}\n\t\t\t\t\t\t
      \n\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t\t\t${post_contents}\n\t\t\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t
      \n\t\t\t\t\t\t
      \n\t\t\t\t\t${post_tags}\n\t\t\t\t
      \n\t\t\t\n\t\t
    12. `;\n\n\t\treturn m_html;\n\n\t},\n\n\tcurrent_post_id: \"\",\n\n\trender_post: function(post_id) {\n\n\t\tvar m_post = XKit.extensions.postarchive.get_from_archive(post_id);\n\t\tif (m_post === false) {\n\t\t\tXKit.window.show(\"Can not fetch post\",\n\t\t\t\t\"Error code: PAC-302\",\n\t\t\t\t\"error\",\n\t\t\t\t'
      OK
      '\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tvar post_obj = \"\";\n\t\tif (m_post.post.substring(0, 11) === \"XKIT-BTOA!!\") {\n\t\t\tvar tmp_dt = m_post.post.substring(11, m_post.post.length);\n\t\t\tpost_obj = JSON.parse(decodeURIComponent(escape(window.atob(tmp_dt))));\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tpost_obj = JSON.parse(m_post.post);\n\t\t\t} catch (e) {\n\t\t\t\tpost_obj = JSON.parse(decodeURIComponent(escape(window.atob(m_post.post))));\n\t\t\t}\n\t\t}\n\n\t\tXKit.extensions.postarchive.current_post_id = post_id;\n\n\t\t$(\"#xkit-postarchive-content\").removeClass(\"xkit-postarchive-no-post-selected\").html(XKit.extensions.postarchive.parse_item(post_obj, \"xenix\"));\n\n\t\t$(\"#xkit-postarchive-remove-this\").removeClass(\"hidden\");\n\t\t$(\"#xkit-postarchive-recategorize-this\").removeClass(\"hidden\");\n\t\t$(\"#xkit-postarchive-rename-this\").removeClass(\"hidden\");\n\n\t\t$(\"#xkit-postarchive-remove-this\").off(\"click\");\n\t\t$(\"#xkit-postarchive-remove-this\").on(\"click\", function() {\n\n\t\t\tXKit.window.show(\"Remove\", \"You sure you want to remove this?\", \"warning\", \"
      Remove
      Cancel
      \");\n\n\t\t\t$(\"#xkit-postarchive-remove-item-confirm\").click(function() {\n\n\t\t\t\tXKit.extensions.postarchive.remove_from_archive(post_id);\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.extensions.postarchive.view();\n\n\t\t\t});\n\n\t\t});\n\n\t\t$(\"#xkit-postarchive-rename-this\").off(\"click\");\n\t\t$(\"#xkit-postarchive-rename-this\").on(\"click\", function() {\n\n\t\t\tXKit.window.show(\"Rename This Post\", `Title:`, \"question\", \"
      Save
      Cancel
      \");\n\n\t\t\t$(\"#xkit-postarchive-save-new-name\").click(function() {\n\n\t\t\t\tvar m_title = $(\"#xkit-postarchive-title\").val();\n\n\t\t\t\tif ($.trim(m_title) === \"\") { XKit.window.close(); }\n\n\t\t\t\tXKit.extensions.postarchive.rename_archived_post(post_id, m_title);\n\n\t\t\t\t$(\".xkit-postarchive-post\").each(function() {\n\n\t\t\t\t\tif ($(this).attr('data-post-id') === post_id) {\n\n\t\t\t\t\t\t$(this).html(m_title);\n\n\t\t\t\t\t}\n\n\t\t\t\t});\n\n\t\t\t\tXKit.window.close();\n\n\t\t\t});\n\n\t\t});\n\n\t\t$(\"#xkit-postarchive-recategorize-this\").off(\"click\");\n\t\t$(\"#xkit-postarchive-recategorize-this\").on(\"click\", function() {\n\n\t\t\tif (XKit.extensions.postarchive.categories.length === 0) {\n\n\t\t\t\tXKit.window.show(\"No categories\", \"You have no categories. You can add some from the Post Archiver control panel.\", \"warning\", \"
      OK
      \");\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar m_categories = \"\";\n\n\t\t\tif (XKit.extensions.postarchive.categories.length === 0) {\n\n\t\t\t\tm_categories = \"You have no categories. You can add some from XKit Control Panel > Post Archiver > Add Category.\";\n\n\t\t\t} else {\n\n\t\t\t\tfor (var i = 0; i < XKit.extensions.postarchive.categories.length; i++) {\n\n\t\t\t\t\tm_categories += `${m_categories}`;\n\t\t\t\tm_categories = ``;\n\n\t\t\t}\n\n\t\t\tXKit.window.show(\"Recategorize This Post\", `Category:${m_categories}`, \"question\", \"
      Save
      Cancel
      \");\n\n\t\t\t$(\"#xkit-postarchive-save-new-category\").click(function() {\n\n\t\t\t\tXKit.extensions.postarchive.recategorize_archived_post(post_id, $(\"#xkit-postarchive-category\").val());\n\n\t\t\t\t// to-do refresh view.\n\t\t\t\tXKit.extensions.postarchive.view(post_id);\n\n\t\t\t\tXKit.window.close();\n\n\t\t\t});\n\n\t\t});\n\n\t\t$(\"#xkit-postarchive-content\").find(\".post\").css(\"display\", \"block\").css(\"visibility\", \"visible\");\n\n\t\tXKit.tools.add_function(function() {\n\t\t\tTumblr.Events.trigger(\"posts:load\");\n\t\t}, true, \"\");\n\n\t\tXKit.post_listener.check(true);\n\n\t},\n\n\tload_posts: function() {\n\n\t\tvar m_storage = XKit.storage.get(\"postarchive\", \"archived_posts\", \"\");\n\n\t\tif (m_storage !== \"\") {\n\t\t\ttry {\n\t\t\t\tXKit.extensions.postarchive.archived_posts = JSON.parse(m_storage);\n\t\t\t\tconsole.log(` --- Storage loaded successfully.. (${XKit.extensions.postarchive.archived_posts.length} items)`);\n\t\t\t} catch (e) {\n\t\t\t\tXKit.extensions.postarchive.archived_posts = [];\n\t\t\t\tXKit.notifications.add(\"Post Archiver storage error: POSTA-101
      Please refresh the page and/or file a bug report.\", \"error\");\n\t\t\t\tconsole.log(` --- Storage Error!! ${e.message}`);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log(\" --- Storage is empty\");\n\t\t\tXKit.extensions.postarchive.archived_posts = [];\n\t\t}\n\n\t\tm_storage = XKit.storage.get(\"postarchive\", \"categories\", \"\");\n\n\t\tif (m_storage !== \"\") {\n\t\t\ttry {\n\t\t\t\tXKit.extensions.postarchive.categories = JSON.parse(m_storage);\n\t\t\t} catch (e) {\n\t\t\t\tXKit.extensions.postarchive.categories = [];\n\t\t\t}\n\t\t} else {\n\t\t\tXKit.extensions.postarchive.categories = [];\n\t\t}\n\n\t},\n\n\tsave_posts: function() {\n\n\t\ttry {\n\t\t\tXKit.storage.set(\"postarchive\", \"archived_posts\", JSON.stringify(XKit.extensions.postarchive.archived_posts));\n\t\t\tXKit.storage.set(\"postarchive\", \"categories\", JSON.stringify(XKit.extensions.postarchive.categories));\n\t\t} catch (e) {\n\t\t\tXKit.window.show(\"Unable to save data\", `Post Archiver could not save data

      Error:
      ${e.message}`, \"error\", \"
      OK
      \");\n\t\t}\n\t},\n\n\tinit: function() {\n\n\t\t$(document).on(\"click\", \".xkit-postarchive\", function(event) {\n\t\t\tvar post_id = $(this).attr('data-post-id');\n\t\t\tXKit.extensions.postarchive.archive(post_id, this);\n\t\t});\n\n\t},\n\n\tis_post_in_archive: function(post_id) {\n\n\t\tfor (var i = 0; i < XKit.extensions.postarchive.archived_posts.length; i++) {\n\t\t\tif (XKit.extensions.postarchive.archived_posts[i].post_id == post_id) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tget_from_archive: function(post_id) {\n\n\t\tfor (var i = 0; i < XKit.extensions.postarchive.archived_posts.length; i++) {\n\t\t\tif (XKit.extensions.postarchive.archived_posts[i].post_id == post_id) {\n\t\t\t\treturn XKit.extensions.postarchive.archived_posts[i];\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tremove_from_archive: function(post_id) {\n\n\t\tfor (var i = 0; i < XKit.extensions.postarchive.archived_posts.length; i++) {\n\t\t\tif (XKit.extensions.postarchive.archived_posts[i].post_id == post_id) {\n\t\t\t\tXKit.extensions.postarchive.archived_posts.splice(i, 1);\n\t\t\t\tXKit.extensions.postarchive.save_posts();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\trename_archived_post: function(post_id, title) {\n\n\t\tfor (var i = 0; i < XKit.extensions.postarchive.archived_posts.length; i++) {\n\t\t\tif (XKit.extensions.postarchive.archived_posts[i].post_id == post_id) {\n\t\t\t\tXKit.extensions.postarchive.archived_posts[i].title = title;\n\t\t\t\tXKit.extensions.postarchive.save_posts();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\trecategorize_archived_post: function(post_id, category) {\n\n\t\tfor (var i = 0; i < XKit.extensions.postarchive.archived_posts.length; i++) {\n\t\t\tif (XKit.extensions.postarchive.archived_posts[i].post_id == post_id) {\n\t\t\t\tXKit.extensions.postarchive.archived_posts[i].category = category;\n\t\t\t\tXKit.extensions.postarchive.save_posts();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tupdate_sidebar: function() {\n\n\t\t$(\"#postarchive_view_count\").html(XKit.extensions.postarchive.archived_posts.length);\n\n\t},\n\n\tarchive: function(post_id, obj, in_blog_mode) {\n\n\t\tXKit.extensions.postarchive.load_posts();\n\n\t\tif (XKit.interface.where().drafts === true) { XKit.window.show(\"Oops\", \"Unfortunately, Post Archiver does not yet support archiving from the drafts, but I'm working on it. Thank you for your patience.\", \"error\", \"
      OK
      \"); return; }\n\n\t\tif (XKit.extensions.postarchive.is_post_in_archive(post_id) !== false) {\n\n\t\t\tXKit.window.show(\"Already in archive.\", \"Would you like to remove this post from the archive?\", \"question\", \"
      Yes, remove from archive
      Cancel
      \");\n\n\t\t\t$(\"#xkit-postarchive-remove-from-archive\").click(function() {\n\n\t\t\t\tXKit.window.close();\n\n\t\t\t\tXKit.extensions.postarchive.remove_from_archive(post_id);\n\n\t\t\t\tif (!in_blog_mode) {\n\n\t\t\t\t\tXKit.interface.completed_control_button(obj, false);\n\n\t\t\t\t\tXKit.notifications.add(\"Post removed from Archive.\", \"ok\");\n\n\t\t\t\t\tXKit.extensions.postarchive.update_sidebar();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t$(obj).removeClass(\"xkit-post-archive-inblog-button-done\");\n\t\t\t\t\tsetTimeout(function() { XKit.iframe.restore();\t}, 300);\n\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar m_categories = \"\";\n\n\t\tif (XKit.extensions.postarchive.categories.length === 0) {\n\n\t\t\tm_categories = \"You have no categories. You can add some from XKit Control Panel > Post Archiver > Add Category.\";\n\n\t\t} else {\n\n\t\t\tfor (var i = 0; i < XKit.extensions.postarchive.categories.length; i++) {\n\n\t\t\t\tm_categories += `${m_categories}`;\n\t\t\tm_categories = ``;\n\n\t\t}\n\n\t\tvar m_title = \"\";\n\t\tif ($(`#post_${post_id}`).length > 0) {\n\n\t\t\tvar dpostobj = $(`#post_${post_id}`);\n\n\t\t\tif ($(dpostobj).find(\".post-title\").length > 0) {\n\n\t\t\t\tm_title = $(dpostobj).find(\".post-title\").text();\n\n\t\t\t} else if ($(dpostobj).find(\".post_title\").length > 0) {\n\n\t\t\t\tm_title = $(dpostobj).find(\".post_title\").text();\n\n\t\t\t} else if ($(dpostobj).find(\".title\").length > 0) {\n\n\t\t\t\tm_title = $(dpostobj).find(\".title\").text();\n\n\t\t\t} else if ($(dpostobj).find(\".reblog-title\").length > 0) {\n\n\t\t\t\tm_title = $(dpostobj).find(\".reblog-title\").text();\n\n\t\t\t} else if ($(dpostobj).find(\".post_body\").length > 0) {\n\n\t\t\t\tm_title = $(dpostobj).find(\".post_body\").text();\n\n\t\t\t} else if ($(dpostobj).find(\".track_name\").length > 0) {\n\n\t\t\t\tm_title = $(dpostobj).find(\".track_name\").text();\n\n\t\t\t} else if ($(dpostobj).find(\".chat_line\").length > 0) {\n\n\t\t\t\tm_title = $(dpostobj).find(\".chat_line:first\").text();\n\n\t\t\t} else if ($(dpostobj).find('.reblog-list').length > 0) {\n\n\t\t\t\tm_title = $(dpostobj).find('.reblog-list-item:first .reblog-content').text();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif (m_title.length > 30) {\n\t\t\tm_title = `${m_title.substring(0, 29)}...`;\n\t\t}\n\n\t\tXKit.window.show(\"Archive This Post\", `Title:Category:
      ${m_categories}`, \"question\", \"
      Save
      Cancel
      \");\n\n\t\t$(\"#xkit-postarchive-save\").click(function() {\n\n\t\t\tvar $save_title = $(\"#xkit-postarchive-title\");\n\t\t\tvar save_title = $save_title.val();\n\n\t\t\tif ($(this).hasClass(\"disabled\")) { return; }\n\n\t\t\tif ($.trim(save_title) === \"\") {\n\t\t\t\t$save_title\n\t\t\t\t\t.css(\"border-color\", \"red\")\n\t\t\t\t\t.attr(\"placeholder\", \"Please enter a title for this post.\")\n\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t$save_title\n\t\t\t\t\t\t\t.removeAttr(\"style\")\n\t\t\t\t\t\t\t.attr(\"placeholder\", \"Enter a title (example: 'hotline phone list')\")\n\t\t\t\t\t\t\t.off(\"click\");\n\t\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar m_category = \"\";\n\n\t\t\tif ($(\"#xkit-postarchive-category\").length > 0) {\n\n\t\t\t\tm_category = $(\"#xkit-postarchive-category\").val();\n\n\t\t\t}\n\n\t\t\tXKit.extensions.postarchive.save_using_api(post_id, obj, save_title, m_category, in_blog_mode);\n\n\t\t});\n\n\t},\n\n\tsave_using_api: function(post_id, obj, title, m_category, in_blog_mode) {\n\n\t\t$(\"#xkit-postarchive-save\").addClass(\"disabled\");\n\n\t\tvar m_post = XKit.interface.find_post(post_id);\n\t\tvar blog_url = m_post.owner;\n\n\t\tif (!blog_url) {\n\t\t\tblog_url = window.location.href.split('%2F')[2].split('.')[0];\n\t\t}\n\n\t\tvar api_url = `http://api.tumblr.com/v2/blog/${blog_url}.tumblr.com/posts/?api_key=${XKit.extensions.postarchive.apiKey}&id=${post_id}`;\n\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: api_url,\n\t\t\tjson: true,\n\t\t\tonerror: function(response) {\n\t\t\t\tXKit.extensions.postarchive.show_error(`Unable to get the blog information.
      Please try again later.

      Error Code: POA-230

      ${blog_url}`);\n\t\t\t\treturn;\n\t\t\t},\n\t\t\tonload: function(response) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\tvar data = JSON.parse(response.responseText).response;\n\n\t\t\t\t\tvar m_object = {};\n\n\t\t\t\t\tm_object.title = title;\n\n\t\t\t\t\tm_object.post = JSON.stringify(data.posts[0]);\n\n\t\t\t\t\tm_object.post_id = post_id;\n\t\t\t\t\tm_object.date = new Date().getTime();\n\t\t\t\t\tm_object.category = m_category;\n\n\t\t\t\t\tconsole.log(\"Fetched contents, trying to save...\");\n\n\t\t\t\t\tXKit.extensions.postarchive.load_posts();\n\n\t\t\t\t\tsetTimeout(function() {\n\n\t\t\t\t\t\tXKit.extensions.postarchive.archived_posts.push(m_object);\n\t\t\t\t\t\tconsole.log(XKit.extensions.postarchive.archived_posts);\n\t\t\t\t\t\tXKit.extensions.postarchive.save_posts();\n\n\t\t\t\t\t\tif (!in_blog_mode) {\n\n\t\t\t\t\t\t\tXKit.interface.completed_control_button(obj, true);\n\t\t\t\t\t\t\tXKit.notifications.add(\"Post added to Archive.\", \"ok\");\n\t\t\t\t\t\t\tXKit.extensions.postarchive.update_sidebar();\n\t\t\t\t\t\t\tXKit.window.close();\n\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t$(obj).addClass(\"xkit-post-archive-inblog-button-done\");\n\t\t\t\t\t\t\tXKit.window.close();\n\t\t\t\t\t\t\tsetTimeout(function() { XKit.iframe.restore();\t}, 300);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}, 1);\n\n\t\t\t\t} catch (e) {\n\t\t\t\t\tXKit.extensions.postarchive.show_error(`Unable to read JSON received from API calls.
      Please try again later.

      Error Code: POS-535
      ${e.message}`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t}\n\t\t});\n\n\t},\n\n\tdo: function() {\n\n\t\tvar posts = XKit.interface.get_posts(\"xkit-postarchive-done\");\n\n\t\t$(posts).each(function() {\n\n\t\t\t$(this).addClass(\"xkit-postarchive-done\");\n\n\t\t\tvar m_post = XKit.interface.post($(this));\n\n\t\t\tXKit.interface.add_control_button(this, \"xkit-postarchive\", `data-xkit-postarchive-tumblelog-key=\"${m_post.tumblelog_key}\" data-xkit-postarchive-tumblelog-name=\"${m_post.owner}\"`);\n\n\t\t\tif (XKit.extensions.postarchive.is_post_in_archive(m_post.id)) {\n\n\t\t\t\tXKit.interface.completed_control_button($(this).find(\".xkit-interface-control-button.xkit-postarchive\"), true);\n\n\t\t\t}\n\n\t\t});\n\n\t},\n\n\tshow_error: function(message) {\n\n\t\tXKit.window.show(\"Post Archiver encountered an error\", message, \"error\", \"
      OK
      \");\n\n\t},\n\n\tcpanel: function(m_div) {\n\n\t\tXKit.extensions.postarchive.load_posts();\n\n\t\tif ($(\"#xkit-postarchive-custom-panel\").length > 0) {\n\t\t\t// Panel already exists, probably in refresh mode.\n\t\t\t// Remove it first.\n\t\t\t$(\"#xkit-postarchive-custom-panel\").remove();\n\t\t}\n\n\t\tvar cat_list = \"\";\n\n\t\tif (XKit.extensions.postarchive.categories.length === 0) {\n\t\t\tcat_list = \"
      You have no categories set.
      \";\n\t\t} else {\n\n\t\t\tfor (var j = 0; j < XKit.extensions.postarchive.categories.length; j++) {\n\n\t\t\t\tcat_list += `
      ${XKit.extensions.postarchive.categories[j].title}
      `;\n\n\t\t\t}\n\t\t}\n\n\t\tvar m_html =\n\t\t\t`
      \n\t\t\t\t
      \n\t\t\t\t\t
      Add new category
      \n\t\t\t\t
      \n\t\t\t\t${cat_list}\n\t\t\t
      `;\n\n\t\t$(m_div).html(m_html);\n\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller();\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller({ scroll: 'top' });\n\n\t\t$(\"#xkit-postarchive-add-category\").click(function() {\n\n\t\t\tXKit.window.show(\"New category\", 'Category Name:', \"question\", '
      Create Category
      Cancel
      ');\n\n\t\t\t$(\"#xkit-postarchive-create-category\").click(function() {\n\n\t\t\t\tvar $m_title = $(\"#xkit-postarchive-category-add-title\");\n\t\t\t\tvar m_title = $m_title.val();\n\t\t\t\tfunction complain(problem) {\n\t\t\t\t\t$m_title\n\t\t\t\t\t\t.css(\"border-color\", \"red\")\n\t\t\t\t\t\t.attr(\"placeholder\", problem)\n\t\t\t\t\t\t.val(\"\")\n\t\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t\t$m_title\n\t\t\t\t\t\t\t\t.removeAttr(\"style\")\n\t\t\t\t\t\t\t\t.attr(\"placeholder\", \"e.g. Recipes\")\n\t\t\t\t\t\t\t\t.off(\"click\");\n\t\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ($.trim(m_title) === \"\") {\n\t\t\t\t\tcomplain(\"You can't create a category without a title!\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (XKit.extensions.postarchive.category_exists(m_title)) {\n\t\t\t\t\tcomplain(`A category named ${m_title} already exists!`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar m_obj = {};\n\t\t\t\tm_obj.id = XKit.tools.random_string() + new Date().getTime();\n\t\t\t\tm_obj.title = m_title;\n\n\t\t\t\tXKit.extensions.postarchive.load_posts();\n\n\t\t\t\tXKit.extensions.postarchive.categories.push(m_obj);\n\n\t\t\t\tXKit.extensions.postarchive.save_posts();\n\t\t\t\tXKit.extensions.postarchive.cpanel(m_div);\n\t\t\t\tXKit.window.close();\n\n\t\t\t});\n\n\t\t});\n\n\t\t$(\".xkit-postarchive-cp-item\").click(function() {\n\n\t\t\tvar m_cat_obj = XKit.extensions.postarchive.get_category($(this).attr('data-id'));\n\n\t\t\tif (m_cat_obj === false) {\n\t\t\t\tXKit.window.show(\"Unknown error\",\n\t\t\t\t\t\"Code: PAS-30\",\n\t\t\t\t\t\"error\",\n\t\t\t\t\t'
      OK
      '\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tXKit.window.show(\"Edit category\", `Category Name:
      If you delete this category, items saved in this category will be marked \"Uncategorized.\"`, \"question\", \"
      Save Category
      Delete
      Cancel
      \");\n\n\t\t\t$(\"#xkit-postarchive-save-category\").click(function() {\n\n\t\t\t\tXKit.extensions.postarchive.load_posts();\n\n\t\t\t\tfor (var i = 0; i < XKit.extensions.postarchive.categories.length; i++) {\n\n\t\t\t\t\tif (m_cat_obj.id === XKit.extensions.postarchive.categories[i].id) {\n\n\t\t\t\t\t\tXKit.extensions.postarchive.categories[i].title = $(\"#xkit-postarchive-category-add-title\").val();\n\t\t\t\t\t\tXKit.extensions.postarchive.save_posts();\n\n\t\t\t\t\t\tXKit.window.close();\n\n\t\t\t\t\t\tXKit.extensions.postarchive.cpanel(m_div);\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\t$(\"#xkit-postarchive-delete-category\").click(function() {\n\n\t\t\t\tXKit.window.show(\"You sure?\", `Delete category \"${m_cat_obj.title}\"?`, \"warning\", \"
      Confirm
      Cancel
      \");\n\n\t\t\t\t$(\"#xkit-postarchive-delete-category-confirm\").click(function() {\n\n\t\t\t\t\tXKit.extensions.postarchive.load_posts();\n\n\t\t\t\t\tfor (var i = 0; i < XKit.extensions.postarchive.archived_posts.length; i++) {\n\n\t\t\t\t\t\tif (typeof XKit.extensions.postarchive.archived_posts[i].category !== \"undefined\") {\n\n\t\t\t\t\t\t\tif (XKit.extensions.postarchive.archived_posts[i].category === m_cat_obj.id) {\n\n\t\t\t\t\t\t\t\tXKit.extensions.postarchive.archived_posts[i].category = \"\";\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (var ii = 0; ii < XKit.extensions.postarchive.categories.length; ii++) {\n\n\t\t\t\t\t\tif (m_cat_obj.id === XKit.extensions.postarchive.categories[ii].id) {\n\n\t\t\t\t\t\t\tXKit.extensions.postarchive.categories.splice(ii, 1);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tXKit.extensions.postarchive.save_posts();\n\t\t\t\t\tXKit.extensions.postarchive.cpanel(m_div);\n\t\t\t\t\tXKit.window.close();\n\n\t\t\t\t});\n\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\tget_category: function(id) {\n\n\t\tfor (var i = 0; i < XKit.extensions.postarchive.categories.length; i++) {\n\n\t\t\tif (id === XKit.extensions.postarchive.categories[i].id) {\n\n\t\t\t\treturn XKit.extensions.postarchive.categories[i];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcategory_exists: function(title) {\n\n\t\ttitle = title.toLowerCase();\n\n\t\tfor (var i = 0; i < XKit.extensions.postarchive.categories.length; i++) {\n\n\t\t\tif (title === XKit.extensions.postarchive.categories[i].title.toLowerCase()) {\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\t$(\"#postarchive_ul\").remove();\n\t\tXKit.post_listener.remove(\"postarchive\");\n\n\n\t}\n\n};\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4QzczNEU1QzcyODYxMUUzOTE2Nzg1OUU5MDkxNjVGNyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4QzczNEU1QjcyODYxMUUzOTE2Nzg1OUU5MDkxNjVGNyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yjqFuwAAAuNJREFUeNrsWs1vEkEUfzPgB0a82AMno1e1J2ts/KgXjT2YeJGbp95MvBhNPGg8+HXQePBg/CO0xmBIRI3btCYWLY0eCC0fIZFdjCgUkEJhC+u0NOkHdDu7O+1kmnn5nRaW9377fm/evGHR9bcgtGEASYCruRGSGeCbAZAZkBmQRSwzsGRPLhg0XxuO+sfVV+wI8HhsiGUGeETPkgCHVQgZDJ1uAwltOQPiESGhCQBbAlJCvCUk+wDnPiB+EfNoZGLXgPASAtnIOA80bJ8YejBipxNdPvLSt7dvzfV9uw7S3F6bz+vNf2suvokdypS2rIgN+JTyDx0r73R5bdztce8nWHnlq3pfLdnMDG43dquYmYPg9HkmGtDKYyPpu/bCIMC275zOhyPZxw6jJ3IKTA20ADgQIFDSt3KzE04IBOMnyw1wEgPGiyuRPRgGBGLHGx0VSWlh9U66EHcSAAZnGSAo1iGUOGdL+srnnw8deidwDQ4t9XbbKNQ0z449Pu8p+uirem442qs3nbomwE4zuIgxUgyVMD2Bd/Gj1QYwcY2dJ5GgtVCO/fVmkUr6mZuZ0h8mfp0W8UpU5uBj4vSG0aul0Df1KSunzDLQRnom+v3XPZPoZ/Xs+8QgADB0ip5/Ybm1ciG4dHjU5z3TZf9hNAMxj1bWWZ9Or//Z1f5Vp80vxjferbQM+JAc8Pf+3b16t0NsQruRLeuUGx561xgvdOPu6Ng2UYEsL0rqRIf0g5PaM8pfsOp63SW26yhIg0wx9SN7e1n6jYySumhpdad3bbYKdc4+9Iioj3KV0bb0leSBum7tdguuTQq864kaJYiEleTZ+nw+ol77XbG8ttC7dtPPlFanT1IMoamefJXB2IqZDPU2JvFCjc38bvIjFkZKjv/HmrjeRAkxNG4SYngizyADV/oMsTPA0UwzIAIBvK0JgAgETNT1ehKENuHfF3KL/sKQ+ASElxACSUAS2KQWIYb9F2AArvzPhmFrSFwAAAAASUVORK5CYII=","css":"#xkit-postarchive-background {\n\n\tposition: fixed;\n\ttop: 0; left: 0;\n\tbackground: rgba(0,0,0,0.67);\n\twidth: 100%;\n\tz-index: 100000;\n\theight: 100%;\n\n}\n\n.xkit-post-archive-avatar {\n\t/* margin-left: 8px; */\n\tmargin-right: 7px;\n\tvertical-align: middle;\n\tborder-radius: 3px;\n\tdisplay: inline-block;\n\tmargin-bottom: 3px;\n}\n\n#postarchive_view:after {\n\tbackground: no-repeat 0px 45% url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OEM3MzRFNUY3Mjg2MTFFMzkxNjc4NTlFOTA5MTY1RjciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OEM3MzRFNjA3Mjg2MTFFMzkxNjc4NTlFOTA5MTY1RjciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4QzczNEU1RDcyODYxMUUzOTE2Nzg1OUU5MDkxNjVGNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4QzczNEU1RTcyODYxMUUzOTE2Nzg1OUU5MDkxNjVGNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnWNT5cAAADASURBVHjaYmRAA////0fmZjNggqtAfADGYWRkhEswMVARjBDDGLFEgBWQ4oZy1bDo+QjEL6Hs68AIeAKTYMGi+D4QB2KzCAr4ofg5ED8l5E2QohMEfPQdiHeCPEJMmJ0D4od4DNsNxF9JiYA9QPwZi/hpIH5Mamz+AOJdQPwXSewJ1DDssQmMPeQsMxWLGgMgtgbib0C8EkpjzXIsRCSfC0AsCcSXsRiEAliITI/b6Z4DWHD5f5hldLSSlSIAEGAAoNcs9y8b6dQAAAAASUVORK5CYII=) !important;\n\tcontent: \"\\54\";\n\tfont-size: 0;\n\tline-height: 37px;\n\twidth: 20px;\n}\n\n.xkit-postarchive-cat-separator {\n\tborder-bottom: 1px solid rgb(200,200,200);\n\theight: 26px;\n\tline-height: 26px;\n\tbackground: #f4ffe8 no-repeat 5px 50% url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAANCAYAAACZ3F9/AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTQ0NUQ3NjQ3Mjg4MTFFMzkxNjc4NTlFOTA5MTY1RjciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjlFNzM3RTg3MzM1MTFFMzkxNjc4NTlFOTA5MTY1RjciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5NDQ1RDc2MjcyODgxMUUzOTE2Nzg1OUU5MDkxNjVGNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5NDQ1RDc2MzcyODgxMUUzOTE2Nzg1OUU5MDkxNjVGNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Psb/oUAAAABhSURBVHjaYvr//z8DOZiFAQ1EdjD+B1KM6OLLK/6j8JkYsIP/DAQAEx65/+RqxKuZkEacmonRiFUzURqBIZpOskaQJmAUzSJJIy5NeDXi04RTIyFNkODCTIdpxKRVgAADALDQb7Gw7aKlAAAAAElFTkSuQmCC');\n\ttext-align: center;\n\tfont-size: 13px;\n\tfont-weight: bold;\n\tcolor: #55871e;\n\ttext-shadow: 0px 1px 0px white;\n\tposition: relative;\n\tcursor: pointer;\n}\n\n.xkit-postarchive-cat-separator.xkit-pac-opened {\n\n\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAANCAYAAACZ3F9/AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjlFNzM3RUI3MzM1MTFFMzkxNjc4NTlFOTA5MTY1RjciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjlFNzM3RUM3MzM1MTFFMzkxNjc4NTlFOTA5MTY1RjciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyOUU3MzdFOTczMzUxMUUzOTE2Nzg1OUU5MDkxNjVGNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyOUU3MzdFQTczMzUxMUUzOTE2Nzg1OUU5MDkxNjVGNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrxkghcAAABbSURBVHjaYvz//z8DOYCJgUxAf40sICKyg5Fojy6v+M8ItxHISSdSUzqKU4E2ziKkGSQPUofhR3ya0TVhBA42zdg0YQ1VZM24NIEBKOXgwGl45BgY6Z7kAAIMAKBeWWFB0YUEAAAAAElFTkSuQmCC');\n\n}\n\n.xkit-postarchive-cat-separator:hover {\n\n\tbackground-color: #e6f0da;\n\n}\n\n.xkit-postarchive-cat-separator-title {\n\n\tposition: absolute;\n\ttop: 0; left: 22px;\n\ttext-align: left;\n\twidth: 195px;\n\n}\n\n.xkit-postarchive-no-posts-index {\n\tfont-size: 12px;\n\tpadding: 5px;\n\ttext-align: center;\n\tborder-bottom: 1px solid rgb(200,200,200);\n\tcolor: rgb(130,130,130);\n}\n\n.xkit-postarchive-cp-item {\n\tpadding: 10px 16px 10px 16px;\n\tborder-bottom: 1px dotted rgb(190,190,190);\n\tcursor: pointer;\n}\n\n.xkit-postarchive-cp-item:hover {\n\tbackground: rgb(240,240,240);\n}\n\n#xkit-postarchive-category {\n\twidth: 100%;\n\theight: 28px;\n\tmargin-top: 5px;\n}\n\n.xkit-postarchive-no-categories {\n\ttext-align: center;\n\tpadding-top: 20px;\n\tcolor: rgb(140,140,140);\n\tfont-size: 14px;\n}\n\n#xkit-postarchive-custom-panel-toolbar {\n\tbackground: rgb(245,245,245);\n\tpadding: 3px 15px;\n\tborder-bottom: 1px solid rgb(190,190,190);\n}\n\n#xkit-postarchive-remove-this {\n\tposition: absolute;\n\ttop: 0px;\n\tleft: -91px;\n\twidth: 80px;\n\tfont-size: 11px;\n\ttext-align: center;\n\theight: 30px;\n\tline-height: 30px;\n\tborder-radius: 4px;\n\tcursor: pointer;\n\tpadding: 0;\n}\n\n#xkit-postarchive-recategorize-this {\n\tposition: absolute;\n\ttop: 36px;\n\tleft: -91px;\n\twidth: 80px;\n\tfont-size: 11px;\n\ttext-align: center;\n\theight: 30px;\n\tline-height: 30px;\n\tborder-radius: 4px;\n\tcursor: pointer;\n\tpadding: 0;\n}\n\n#xkit-postarchive-rename-this {\n\tposition: absolute;\n\ttop: 72px;\n\tleft: -91px;\n\twidth: 80px;\n\tfont-size: 11px;\n\ttext-align: center;\n\theight: 30px;\n\tline-height: 30px;\n\tborder-radius: 4px;\n\tcursor: pointer;\n\tpadding: 0;\n}\n\n#xkit-postarchive-container {\n\n\tposition: absolute;\n\ttop: 91px; left: 50%;\n\twidth: 800px;\n\tmargin-left: -346px;\n\tz-index: 200000;\n\n}\n\n#xkit-postarchive-search {\n\n\tposition: absolute;\n\tright: 16px;\n\ttop: 275px;\n\twidth: 230px;\n\tborder: 0px;\n\theight: 29px;\n\tpadding: 5px 10px 5px 30px;\n\tbox-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tborder-radius: 6px;\n\tbackground: white no-repeat 10px 50% url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjMxRTZFMEZBODY4MTFFMkFDMDJFMzk3N0RDMDc2NDQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjMxRTZFMTBBODY4MTFFMkFDMDJFMzk3N0RDMDc2NDQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCMzFFNkUwREE4NjgxMUUyQUMwMkUzOTc3REMwNzY0NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCMzFFNkUwRUE4NjgxMUUyQUMwMkUzOTc3REMwNzY0NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pnjwe50AAADhSURBVHjalJExEoIwEEVDvAAdpUeQhhk7OQKeAO2k4wh6AztK4w04AvYUUNp5BDwB/sz8MGsGh/HP/MmyyctulmAcR2VVVdUOSwnHcAg38LUoiofyFFgIQI7YqHkZgEeZWEVRZCvU8ACfcGCfJMmlbVtbKYO3iDvkng7SbMmqBHB3G2wr4+dZVtJ8g5KAB3bujIRC9ac0p+Sm9yXkNqzy8iE3tVqCiNdiz8yN/Ib4wFzHVb7DTjbFG/sJ4s25+LmKLRnmQglO0C/xXY0AY700KbaUErDVh8VK3mAGXPL+CDAAWp9eZGKACQQAAAAASUVORK5CYII=);\n\n}\n\n#xkit-postarchive-export {\n\n\tposition: absolute;\n\tright: 12px;\n\ttop: 310px;\n\twidth: 230px;\n\tborder: 0px;\n\theight: 29px;\n\tpadding: 5px 10px 5px 30px;\n\tbox-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tborder-radius: 6px;\n\tbackground: white;\n\n}\n\n#xkit-postarchive-import {\n\n\tposition: absolute;\n\tright: 12px;\n\ttop: 350px;\n\twidth: 230px;\n\tborder: 0px;\n\theight: 29px;\n\tpadding: 5px 10px 5px 30px;\n\tbox-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tborder-radius: 6px;\n\tbackground: white;\n\n}\n\n#xkit-postarchive-sidebar {\n\n\twidth: 230px;\n\theight: 265px;\n\tbackground: rgb(255,255,255);\n\tborder-radius: 6px;\n\tbox-shadow: 0px 1px 3px rgba(0,0,0,0.44);\n\tposition: absolute;\n\ttop: 0; right: 16px;\n\toverflow: hidden;\n\n}\n\n#xkit-postarchive-sidebar * {\n\n \t-moz-user-select: none;\n \t-webkit-user-select: none;\n \t-ms-user-select: none;\n\n}\n\n#xkit-postarchive-content {\n\n\tposition: absolute;\n\ttop: 0; left: 0px;\n\n}\n\n#xkit-postarchive-content.xkit-postarchive-no-post-selected {\n\n\tbackground: rgba(245,245,245,0.22);\n\twidth: 540px;\n\tborder-radius: 6px;\n\tpadding: 170px 0px;\n\ttext-align: center;\n\tcolor: white;\n\tborder: 1px dashed white;\n\ttext-shadow: 0px -1px 0px black;\n\n}\n\n#xkit-postarchive-not-found {\n\ttext-align: center;\n\tpadding-top: 120px;\n\tcolor: rgb(140,140,140);\n}\n\n.xkit-postarchive-fix-margins {\n\n\tpadding: 0 !important; margin: 0 !important;\n\n}\n\n#xkit-postarchive-sidebar .xkit-postarchive-post.xkit-this-post-is-pretty-hidden,\n.xkit-postarchive-cat-separator.xkit-this-post-is-pretty-hidden,\n.xkit-postarchive-no-posts-index.xkit-this-post-is-pretty-hidden,\n.xkit-postarchive-hidden-category-item,\n#xkit-postarchive-rename-this.hidden,\n#xkit-postarchive-remove-this.hidden,\n#xkit-postarchive-recategorize-this.hidden {\n\tdisplay: none;\n}\n\n#xkit-postarchive-sidebar .xkit-postarchive-post {\n\n\tpadding: 6px 11px;\n\tborder-bottom: 1px solid rgb(210,210,210);\n\tfont-size: 13px;\n\tcursor: pointer;\n\tcolor: rgb(90,90,90);\n\n\ttext-overflow:ellipsis;\n\twhite-space:nowrap;\n\toverflow: hidden;\n\n}\n\n#xkit-postarchive-sidebar .xkit-postarchive-post:hover {\n\n\tcolor: black;\n\tbackground: rgb(240,240,240);\n\n}\n\n#xkit-postarchive-sidebar .xkit-postarchive-post.selected {\n\n\tcolor: black !important;\n\tbackground: rgb(220,220,220) !important;\n\tbox-shadow: inset 0px 1px 2px rgba(0,0,0,0.22);\n\n}\n\n#postarchive_view {\n color: rgba(255, 255, 255, 0.5);\n}\n\n#xkit-postarchive-content .post_full.is_photoset .photoset .photoset_row,\n#xkit-postarchive-content .post_full.is_photo .photoset .photoset_row {\n\twidth: 540px;\n}\n\n#xkit-postarchive-content .post_tags {\n\tmargin-bottom: 15px;\n}\n","title":"Post Archiver","description":"Never lose a post again.","developer":"new-xkit","version":"1.0.6","details":"Post Archiver lets you save posts to your XKit.

      Found a good recipe? Think those hotline numbers on that signal boost post might come in handy in the future?

      Click on the save button, then click on the My Archive button on your sidebar anytime to access those posts. You can also name and categorize posts.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/postblock.json b/Extensions/dist/postblock.json new file mode 100644 index 000000000..5de5efe70 --- /dev/null +++ b/Extensions/dist/postblock.json @@ -0,0 +1 @@ +{"id":"postblock","script":"//* TITLE PostBlock **//\n//* VERSION 1.0.2 **//\n//* DESCRIPTION Block the posts you don't like **//\n//* DETAILS This extension lets you blocks posts you don't like on your dashboard. When you block a post, it will be hidden completely, including reblogs of it.

      Tip: hold down ALT to skip the blocking confirmation! **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* SLOW true **//\n//* BETA false **//\n\nXKit.extensions.postblock = new Object({\n\n\trunning: false,\n\tslow: true,\n\tblacklisted: [],\n\tbutton_icon: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAApUlEQVQoz2NgQAHVR6t3MOADtZbVFkBl/6v/41VW87X6E0xZzerqBTiUQRTAyX/EKftPtLKahuoCvMrwAHTTIBAuXeVe09LAB5Gq0sFUVj0fEhAfgdwFaFKobJDC6rMg71db4FEGUlhTCmLUnMGlDAoaRKq/IYTRlSEpr5lGlLIKlZrfRCgDmjeBKGVlvNV3iVAGTG26Nc+JUAb0sUTNamCaw6EMAJiVMfrH3EFYAAAAAElFTkSuQmCC',\n\n\tprocessing: false,\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tXKit.tools.init_css(\"postblock\");\n\n\t\tthis.blacklisted = XKit.storage.get(\"postblock\", \"posts\", \"\").split(\",\");\n\n\t\tXKit.interface.react.create_control_button(\"xpostblockbutton\", this.button_icon, \"PostBlock\", XKit.extensions.postblock.block).then(() => {\n\t\t\tXKit.post_listener.add(\"postblock\", XKit.extensions.postblock.process_posts);\n\t\t\tXKit.extensions.postblock.process_posts();\n\t\t});\n\t},\n\n\tsave: function() {\n\t\tXKit.storage.set(\"postblock\", \"posts\", this.blacklisted.join(\",\"));\n\t},\n\n\tremove: function(rootID) {\n\t\tconst hide = (id) => XKit.interface.hide(`[data-id='${id}']`, \"postblock\");\n\n\t\thide(rootID);\n\n\t\tXKit.interface.react.get_posts().then($posts => {\n\t\t\t$posts.each(async function() {\n\t\t\t\tvar post_obj = await XKit.interface.react.post($(this));\n\t\t\t\tif (post_obj.root_id == rootID) {\n\t\t\t\t\thide(post_obj.id);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t},\n\n\tblock: async function(event) {\n\t\tconst self = XKit.extensions.postblock;\n\n\t\tconst $button = $(this);\n\t\tconst altKey = event.altKey;\n\t\tconst $post = $button.parents(\"[data-id]\");\n\t\tconst post = await XKit.interface.react.post($post);\n\t\tconst postID = post.root_id;\n\n\t\tconst blockPost = () => {\n\t\t\tself.remove(postID);\n\t\t\tself.blacklisted.push(postID);\n\t\t\tself.save();\n\t\t};\n\n\t\tif (altKey) {\n\t\t\tblockPost();\n\t\t} else {\n\t\t\tXKit.window.show(\n\t\t\t\t\"Block this post?\",\n\t\t\t\t\"This post (including reblogs) will be blocked from your dashboard forever, \" +\n\t\t\t\t\"without any indication that it was blocked.\",\n\n\t\t\t\t\"question\",\n\n\t\t\t\t'
      Block Post
      ' +\n\t\t\t\t'
      Cancel
      '\n\t\t\t);\n\n\t\t\t$(\"#xkit-post-block-ok\").click(() => {\n\t\t\t\tXKit.window.close();\n\t\t\t\tblockPost();\n\t\t\t});\n\t\t}\n\t},\n\n\tprocess_posts: async function() {\n\t\tif (XKit.extensions.postblock.processing === true) {\n\t\t\treturn;\n\t\t}\n\t\tXKit.extensions.postblock.processing = true;\n\n\t\tlet blacklist = XKit.extensions.postblock.blacklisted;\n\n\t\tconst $posts = await XKit.interface.react.get_posts(\"xpostblock-done\");\n\t\t$posts\n\t\t\t.addClass(\"xpostblock-done\")\n\t\t\t.each(async function() {\n\t\t\t\tconst $post = $(this);\n\t\t\t\tconst post = await XKit.interface.react.post($post);\n\n\t\t\t\tif (blacklist.includes(post.root_id)) {\n\t\t\t\t\tXKit.extensions.postblock.remove(post.root_id);\n\t\t\t\t} else {\n\t\t\t\t\tawait XKit.interface.react.add_control_button($post, \"xpostblockbutton\");\n\t\t\t\t}\n\t\t\t});\n\t\tXKit.extensions.postblock.processing = false;\n\t},\n\n\tcpanel: function(m_div) {\n\n\t\t$(m_div).html(\"
      You have \" + (XKit.extensions.postblock.blacklisted.length - 1) + \" blocked posts.
      \" +\n\t\t\t\t\t\"
      Unblock last blocked post
      You need to refresh the page in order for previously blocked posts to appear again.
      \");\n\n\t\tif ((XKit.extensions.postblock.blacklisted.length - 1) === 0) {\n\t\t\t$(\"#postblock-undo-last\").addClass(\"disabled\");\n\t\t}\n\n\t\t$(\"#postblock-undo-last\").click(function() {\n\n\t\t\tif ($(this).hasClass(\"disabled\")) { return; }\n\n\t\t\tXKit.extensions.postblock.blacklisted.pop();\n\t\t\tXKit.storage.set(\"postblock\", \"posts\", XKit.extensions.postblock.blacklisted.join(\",\"));\n\n\t\t\t$(\"#xkit-postblock-cp-count\").html((XKit.extensions.postblock.blacklisted.length - 1));\n\n\t\t\tif ((XKit.extensions.postblock.blacklisted.length - 1) === 0) {\n\t\t\t\t$(\"#postblock-undo-last\").addClass(\"disabled\");\n\t\t\t}\n\n\t\t});\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.post_listener.remove(\"postblock\");\n\t\tXKit.tools.remove_css(\"postblock\");\n\t\t$(\".xpostblock-done\").removeClass(\"xpostblock-done\");\n\t\t$(\".xpostblockbutton\").remove();\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUJCQjBGRjNFNjU5MTFFMkJEMTFFMTAzOUE3MTJBQkUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUJCQjBGRjRFNjU5MTFFMkJEMTFFMTAzOUE3MTJBQkUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1QkJCMEZGMUU2NTkxMUUyQkQxMUUxMDM5QTcxMkFCRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1QkJCMEZGMkU2NTkxMUUyQkQxMUUxMDM5QTcxMkFCRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ppl22eQAAAUGSURBVHjajFbPa11VED735vYm1mg3tVJxof4HKkGpVFqk1EURwRbEjSgWRDdCcVMXhWARtD9ArYtSBVGwQqPQCHaha4Vgrba4qTVNGrVIbTaxeXmemXHmmzk37UsIXnjv3XPeOd/MfPOzOjlxhiWxiH6lhI/gIUm6pY9+kf/LhL+Tbek7dvWk3hdbsLDf1U1dVwBoYk+/gWwyFFPXdt2OAkCBxdFNsO4bIJClHOOCg7UdsY80xIFs2jAk4C1BJF6SlA/Qk+qewmh7VFt2dBdAZJboMbVBuPHdoMXQzALcFXZdDSoVvYwvBhsMRkP5FOYLu/12njnrbwOtO3qcCF+Kk6UHTCVyZTmbeIDbGUjDcYKz2LGYQmlSC9yvnfeKLRTeggLsLiLAsV+IN3jLb4XFIs4YdKbGGUrOGlMxO0hl9yOno28fGB4e2fvqvkD3GBKnJCUHRSwsewPcNgnkusjk2hSOdHP614u6uO+B+6cvXYRsRCRLDfVAUCpqkHuIEINAMuENUfEBBEVEMeKQ+f0jB+u6euvwccSL3pdPP/pgXdvufvZF8zaUyc5UGGZKVIg3RiTUIJh9R0psO7qu+v2lXq/HqTzC58/98OPU9yWr9CCFwZnCx2oDke2bBdK4xkRF93AxUiVJKC7UWbAcPcuJy+AbGe/xCQcRnNC4oxzdIxYRhyzjgktcJHGxRL79ZnJkZP3Ylsfdm3aYw5+wLQGGm4ykiVpRwUvuhJKoHiPlRU58fEr/mrv6166n9+ScFxZumK5c0hLM2xIhrYAN2IhSQPBLF3MFNnWSFOql53enm57940c9nJBL+ptRCuFRJFxtepKJzhZfJu6XCz9/fXqit3ijo+jP36/4S5853fqoFl99eVKxsvmWK2WGwmjYoj7QLVROZKrp/cmHx3q9xfn5a3uee8FR3n1nvCNrQICSdv7clMbgzl3PWAVn5GnB00Vd6iWKGhx89+bNunN26ruZy5fSoMK8YscUvvDT2TOTp6IYeiypttl811AirzfGD/w79shjM9O/6ZHJic8G0GiFBRrxh987off/WVi8Pj/PHkgmJ6Ky8YqJUuaC5OGxR09/8Xm/35+7MjNISBoUcOjg/u79lX0HkCqoGgpb2fka3dH8TFyaUt1u2bo9rfbISopupcujG4S7l6lOyA8jjH1Hcqat23bUQ0OrIEheAx/xSlabvI3YimsqlcEz233e3ja67Ymdq+m4lgHi3Sk5R1F46uQMlV6MLkSZ8o4nn9p416YVLl1LgpoeDd7rW/5X32tyD1izoRhT4Mmlpf7el1+7c8OGgahf2wK0DEY9jWJQS/QG1NwyFGnnzSTt+ttff2P8wYfG2rb9PwKST0TMGj5V8r6YqjePHE/oDBIdwmsbCknmoaH6jtHR4Xad59js7B/33rMpeiSVMcxLfZLpy7O8PMBE220k5jrA+0EJV+hvn/rXrv8tPq0gDWfnrpKVG0QGqm9JLk6lJ0dvhfQGqpXiHHK9IfsAw93I4KNJQmuRm/pNDIH6d1ZGKrffKUC55pg3JBLBpwqKuQ7DjpcELk0tNKxcNa7KDBX9vwxgGEOl8Zps9nMXYBgRGYXdG2cMbyjwzMVGu1DFaNFVnDLhxdxCOpuaKpqh4iOtrkxWFUOJQVTBbzfvlPkqerOHYIqmGO0P6JiLYqIBrP6NIdFdHg5P4fGYl2A7iEcPk64EdrOX16Sw/D8BBgAd8iES5BLqkgAAAABJRU5ErkJggg==","css":".postblock-cp {\n text-align: center;\n padding-top: 48px;\n}\n.postblock-cp small {\n color: rgb(128,128,128);\n font-size: small;\n}\n","title":"PostBlock","description":"Block the posts you don't like","developer":"new-xkit","version":"1.0.2","details":"This extension lets you blocks posts you don't like on your dashboard. When you block a post, it will be hidden completely, including reblogs of it.

      Tip: hold down ALT to skip the blocking confirmation!","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/profiler.json b/Extensions/dist/profiler.json new file mode 100644 index 000000000..fd522e954 --- /dev/null +++ b/Extensions/dist/profiler.json @@ -0,0 +1 @@ +{"id":"profiler","script":"//* TITLE Profiler **//\n//* VERSION 1.2.6 **//\n//* DESCRIPTION The User Inspection Gadget **//\n//* DETAILS Select Profiler option from the User Menu to see information such as when they started blogging, how many posts they have, timezone, and more.

      Requires User Menus+ to be installed. **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.profiler = new Object({\n\n\trunning: false,\n\n\tapiKey: XKit.api_key,\n\n\tpreferences: {\n\t\t\"show_nicknames\": {\n\t\t\ttext: \"Show Nicknames / Descriptions on Dashboard\",\n\t\t\tdefault: true,\n\t\t\tvalue: true,\n\t\t\tslow: true\n\t\t}\n\t},\n\n\n\tframe_run: function() {\n\n\t\tXKit.tools.init_css(\"profiler\");\n\n\t\tvar m_css = \"#iframe_controls { width: auto !important; } \" +\n\t\t\t\t\"#xkit_profiler_inblog_button:before {\" +\n\t\t\t\t\t\" background-size: auto; \" +\n\t\t\t\t\t\" background-position: 50% 50%; \" +\n\t\t\t\t\t\" background-repeat: no-repeat; \" +\n\t\t\t\t\t\" background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjEzRkZBMkE2Q0QzMTFFMzlDNTZCMzI0NDhERkFFOUQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjEzRkZBMkI2Q0QzMTFFMzlDNTZCMzI0NDhERkFFOUQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MTNGRkEyODZDRDMxMUUzOUM1NkIzMjQ0OERGQUU5RCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2MTNGRkEyOTZDRDMxMUUzOUM1NkIzMjQ0OERGQUU5RCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ptc21PYAAACFSURBVHjaYvz//z8DOYAFjS8LxMFA7A7ExlCxs0C8E4jXAvFjuEqQjVBsCcQb/uMGG6BqwOphmmTRNSEZjK5ZFlljAbrxODT+h6plYILKu6N7Ht0AJOCO7MdXJNj4CtlGkgETUpATC84ia9xJgsadyH4kOzpITgCMaCFOdJJjJDeRAwQYAEACMSh3yj0GAAAAAElFTkSuQmCC); \" +\n\t\t\t\t\"}\";\n\n\t\tXKit.tools.add_css(m_css, \"profiler_in_blog\");\n\n\t\tvar m_html = \"Profiler\";\n\n\t\t$(\".btn.dashboard\").before(m_html);\n\n\t\t$(\"#xkit_profiler_inblog_button\").click(function() {\n\n\t\t\tvar blog_url = $(\"#tumblelog_name\").attr('data-tumblelog-name');\n\n\t\t\tXKit.iframe.full();\n\n\t\t\tXKit.extensions.profiler.show(blog_url, true);\n\n\n\t\t});\n\n\t},\n\n\tadd_nicks: function() {\n\n\t\tif ($(\".follower\").length > 0) {\n\n\t\t\t$(\".follower\").each(function() {\n\n\t\t\t\tvar m_url = $(this).find(\".name\").text();\n\t\t\t\tvar m_storage = XKit.storage.get(\"profiler\", \"nick-for--\" + m_url, \"\");\n\t\t\t\tif (m_storage === \"\") { return; }\n\n\t\t\t\t$(this).find(\".name\").append(\"
      (\" + m_storage + \")
      \");\n\n\t\t\t});\n\n\t\t}\n\n\t\tvar posts = XKit.interface.get_posts(\"profiler-nicknamed\");\n\n\t\t$(posts).each(function() {\n\n\t\t\t$(this).addClass(\"profiler-nicknamed\");\n\n\t\t\tvar m_post = XKit.interface.post($(this));\n\n\t\t\tif (XKit.interface.where().inbox !== true) {\n\t\t\t\tif (m_post.is_mine === true) { return; }\n\t\t\t}\n\n\t\t\t// console.log(m_post);\n\n\t\t\tvar post_owner = m_post.owner;\n\n\t\t\tif (m_post.type === \"note\" && XKit.interface.where().inbox === true) {\n\t\t\t\tvar m_json_info = $(this).find(\".post_avatar_link\").attr('data-tumblelog-popover');\n\t\t\t\ttry {\n\t\t\t\t\tvar m_json_obj = JSON.parse(m_json_info);\n\t\t\t\t\tpost_owner = m_json_obj.name;\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar m_storage = XKit.storage.get(\"profiler\", \"nick-for--\" + post_owner, \"\");\n\n\t\t\tif (m_storage === \"\") { return; }\n\n\t\t\tvar name_div_container;\n\t\t\tvar name_div;\n\n\t\t\tif ($(this).find(\".post_info_fence\").length > 0) {\n\t\t\t\tname_div_container = $(this).find(\".post_info_fence\");\n\t\t\t} else {\n\t\t\t\tname_div_container = $(this).find(\".post_info\");\n\t\t\t}\n\n\t\t\tif (name_div_container.find(\"a\").length > 0) {\n\t\t\t\tname_div = name_div_container.find(\"a\").first();\n\t\t\t\t$(name_div).after(\"(\" + m_storage + \")\");\n\t\t\t} else {\n\t\t\t\tname_div = name_div_container;\n\t\t\t\t$(name_div).append(\"(\" + m_storage + \")\");\n\t\t\t}\n\n\t\t});\n\n\t},\n\n\tredo_nicks: function() {\n\n\t\t$(\".xkit-profiler-nickname-inline\").remove();\n\t\t$(\".post .xkit-profiler-nickname\").remove();\n\t\t$(\".post.profiler-nicknamed\").removeClass(\"profiler-nicknamed\");\n\t\tXKit.extensions.profiler.add_nicks();\n\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tXKit.tools.init_css(\"profiler\");\n\t\t//XKit.extensions.profiler.show(\"xenixlet\");\n\n\t\tif (XKit.extensions.profiler.preferences.show_nicknames.value === true) {\n\n\t\t\tXKit.post_listener.add(\"profiler\", XKit.extensions.profiler.add_nicks);\n\t\t\tXKit.extensions.profiler.add_nicks();\n\n\t\t}\n\n\t\tXKit.installed.when_running(\"show_more\", function() {\n\t\t\tif (XKit.extensions.show_more.preferences.use_classic_menu.value === true) {\n\t\t\t\tXKit.extensions.show_more.add_custom_menu(\"profiler\", function(data) {\n\t\t\t\t\tvar user_url = data.name;\n\n\t\t\t\t\t$(document).off(\"click\", \".xkit-profiler-button-\" + user_url, XKit.extensions.profiler.menu_clicked);\n\t\t\t\t\t$(document).on(\"click\", \".xkit-profiler-button-\" + user_url, XKit.extensions.profiler.menu_clicked);\n\n\t\t\t\t\treturn \"
      Profiler
      \";\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tXKit.extensions.show_more.add_custom_menu(\"profiler\", function(data) {\n\t\t\t\t\tvar user_url = data.name;\n\n\t\t\t\t\t$(document).off(\"click\", \".xkit-profiler-button-\" + user_url, XKit.extensions.profiler.menu_clicked);\n\t\t\t\t\t$(document).on(\"click\", \".xkit-profiler-button-\" + user_url, XKit.extensions.profiler.menu_clicked);\n\n\t\t\t\t\treturn \"
    13. \" +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\t\"Profiler\" +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\"
    14. \";\n\t\t\t\t});\n\t\t\t}\n\t\t}, function() {\n\t\t\tXKit.extensions.profiler.show_ump_error();\n\t\t});\n\n\t},\n\n\tmenu_clicked: function(e) {\n\n\t\tvar m_object = $(e.target);\n\n\t\tif (!m_object.hasClass(\"xkit-profiler\")) {\n\n\t\t\twhile (!m_object.hasClass(\"xkit-profiler\")) {\n\t\t\t\tm_object = m_object.parent();\n\t\t\t}\n\n\t\t}\n\n\t\t$(\".tumblelog_popover_glass\").trigger('click');\n\t\tsetTimeout(function() { $(\".tumblelog_popover_glass\").trigger('click'); }, 10);\n\t\t$(\".popover\").hide();\n\t\tXKit.extensions.show_more.hide_classic_menu();\n\n\t\tvar user_url = $(m_object).attr('data-url');\n\n\t\tXKit.extensions.profiler.show(user_url);\n\n\t},\n\n\twindow_id: \"\",\n\n\tis_inframe: false,\n\n\tshow: function(user_url, inframe) {\n\n\t\tXKit.extensions.profiler.is_inframe = inframe;\n\n\t\tvar m_window_id = XKit.tools.random_string();\n\t\tXKit.extensions.profiler.window_id = m_window_id;\n\n\t\tvar m_html = \"
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Blog Information\" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Title\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Nickname / Description\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Is NSFW/Adult blog?\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Is Following You?\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Last Update\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Other\" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Blogging Since\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Timezone\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Custom Domain?\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Shares liked posts?\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Posts\" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Total Posts\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Text Posts\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Photo / Photoset Posts\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Chat Posts\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Quote Posts\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Audio Posts\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"Video Posts\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\"
      \";\n\n\t\tXKit.window.show(\"Profiler for \" + user_url, m_html, \"info\", \"
      Close Window
      Rename Person
      \");\n\n\t\t$(\".xkit-profiler-line div\").addClass(\"loading-up\");\n\n\t\t$(\"#xkit-profiler-contents\").nanoScroller();\n\t\t$(\"#xkit-profiler-contents\").nanoScroller({ scroll: 'top' });\n\n\t\t$(\"body\").css(\"overflow\", \"hidden\");\n\n\t\t$(\"#xkit-profiler-close\").click(function() {\n\n\t\t\t$(\"body\").css(\"overflow\", \"auto\");\n\t\t\tXKit.window.close();\n\n\t\t\tif (XKit.extensions.profiler.is_inframe === true) {\n\t\t\t\tsetTimeout(function() { XKit.iframe.restore();\t}, 300);\n\t\t\t}\n\n\t\t});\n\n\t\t$(\"#xkit-profiler-rename\").click(function() {\n\n\t\t\tvar new_name = prompt(\"Enter a nickname/title/description for this person\");\n\n\t\t\tif (new_name !== null) {\n\t\t\t\tXKit.storage.set(\"profiler\", \"nick-for--\" + user_url, new_name);\n\t\t\t\t$(\"#xkit-profiler-nickname\").removeClass(\"loading-up\").html(new_name);\n\t\t\t} else {\n\t\t\t\tconsole.log(\"Nothing entered.\");\n\t\t\t}\n\n\t\t\tXKit.extensions.profiler.redo_nicks();\n\n\t\t});\n\n\t\tvar m_nickname = XKit.storage.get(\"profiler\", \"nick-for--\" + user_url, \"\");\n\t\tif (m_nickname === \"\") {\n\t\t\t$(\"#xkit-profiler-nickname\").removeClass(\"loading-up\").html(\"Not set\");\n\t\t} else {\n\t\t\t$(\"#xkit-profiler-nickname\").removeClass(\"loading-up\").html(m_nickname);\n\t\t}\n\n\t\tvar blog_id;\n\t\tvar m_blogs = XKit.tools.get_blogs();\n\t\tfor (var i = 0; i < m_blogs.length; i++) {\n\t\t\tif (m_blogs[i] !== \"\") {\n\t\t\t\tblog_id = m_blogs[i];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tXKit.interface.is_following(user_url, blog_id).then(function(follow) {\n\t\t\tif (follow) {\n\t\t\t\t$(\"#xkit-profiler-is-following\").removeClass(\"loading-up\").html(\"Yes\");\n\t\t\t} else {\n\t\t\t\t$(\"#xkit-profiler-is-following\").removeClass(\"loading-up\").html(\"No\");\n\t\t\t}\n\t\t});\n\n\t\tvar api_url = \"https://api.tumblr.com/v2/blog/\" + user_url + \".tumblr.com/info\" + \"?api_key=\" + XKit.extensions.profiler.apiKey;\n\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: api_url,\n\t\t\tjson: true,\n\t\t\tonerror: function(response) {\n\t\t\t\tXKit.extensions.profiler.display_error(m_window_id);\n\t\t\t\treturn;\n\t\t\t},\n\t\t\tonload: function(response) {\n\n\t\t\t\tif (XKit.extensions.profiler.window_id !== m_window_id) {return; }\n\n\t\t\t\tvar data = JSON.parse(response.responseText).response;\n\t\t\t\tvar dtx = new Date(data.blog.updated * 1000);\n\t\t\t\t// defined in moment.js\n\t\t\t\t/* globals moment */\n\t\t\t\tvar dt = moment(dtx);\n\n\t\t\t\t$(\"#xkit-profiler-last-update\").removeClass(\"loading-up\").html(dt.from(new Date()));\n\t\t\t\t$(\"#xkit-profiler-total\").removeClass(\"loading-up\").html(data.blog.posts);\n\t\t\t\t$(\"#xkit-profiler-title\").removeClass(\"loading-up\").html(data.blog.title);\n\n\t\t\t\tvar m_custom_val = \"None\";\n\t\t\t\tif (data.blog.url.indexOf(\".tumblr.com\") === -1) {\n\t\t\t\t\tm_custom_val = \"Yes (\" + data.blog.url + \")\";\n\t\t\t\t}\n\t\t\t\t$(\"#xkit-profiler-custom-domain\").removeClass(\"loading-up\").html(m_custom_val);\n\n\t\t\t\tif (data.blog.is_nsfw === true) {\n\t\t\t\t\t$(\"#xkit-profiler-nsfw\").removeClass(\"loading-up\").html(\"Yes\");\n\t\t\t\t} else {\n\t\t\t\t\t$(\"#xkit-profiler-nsfw\").removeClass(\"loading-up\").html(\"No\");\n\t\t\t\t}\n\n\t\t\t\tif (data.blog.share_likes === true) {\n\t\t\t\t\t$(\"#xkit-profiler-is-sharing-likes\").removeClass(\"loading-up\").html(\"Yes (\" + data.blog.likes + \" posts)\");\n\t\t\t\t} else {\n\t\t\t\t\t$(\"#xkit-profiler-is-sharing-likes\").removeClass(\"loading-up\").html(\"No\");\n\t\t\t\t}\n\n\t\t\t\tvar last_post = data.blog.posts - 1;\n\t\t\t\tvar new_url = \"https://api.tumblr.com/v2/blog/\" + user_url + \".tumblr.com/posts\" + \"?api_key=\" + XKit.extensions.profiler.apiKey + \"&offset=\" + last_post + \"&limit=1\";\n\n\t\t\t\tGM_xmlhttpRequest({\n\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\turl: new_url,\n\t\t\t\t\tjson: true,\n\t\t\t\t\tonerror: function(next_response) {\n\t\t\t\t\t\tXKit.extensions.profiler.display_error(m_window_id);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t\tonload: function(next_response) {\n\t\t\t\t\t\tvar next_data = JSON.parse(next_response.responseText).response;\n\t\t\t\t\t\tvar date = new Date(next_data.posts[0].timestamp * 1000);\n\t\t\t\t\t\t$(\"#xkit-profiler-since\").removeClass(\"loading-up\").html(date.getFullYear());\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tXKit.extensions.profiler.get_json_p1(user_url, m_window_id);\n\t\t\t\tXKit.extensions.profiler.get_json_p2(user_url, m_window_id, 1);\n\n\t\t\t}\n\t\t});\n\t},\n\n\tget_json_p1: function(user_url, m_window_id) {\n\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"https://\" + user_url + \".tumblr.com/api/read/json?read_id=\" + XKit.tools.random_string(),\n\t\t\tjson: false,\n\t\t\tonerror: function(response) {\n\t\t\t\tconsole.log(\"Error getting page.\");\n\t\t\t\t// XKit.extensions.profiler.display_error(m_window_id);\n\t\t\t\treturn;\n\t\t\t},\n\t\t\tonload: function(response) {\n\n\t\t\t\tif (XKit.extensions.profiler.window_id !== m_window_id) {return; }\n\n\t\t\t\t// Manually look for the string \"timezone\":\"Whatever\" because\n\t\t\t\t// the responseText is a substring of a JSON object\n\t\t\t\tvar timezone = '';\n\t\t\t\tif (response.responseText) {\n\t\t\t\t\ttimezone = response.responseText.match(/\"timezone\":\\s*(\"[^\"]*\")/)[1];\n\t\t\t\t}\n\n\t\t\t\tif (timezone) {\n\t\t\t\t\t// Unescape the JS string\n\t\t\t\t\ttimezone = JSON.parse(timezone);\n\t\t\t\t\t$(\"#xkit-profiler-timezone\").removeClass(\"loading-up\").html(timezone);\n\t\t\t\t}\n\n\t\t\t}\n\t\t});\n\n\t},\n\n\tget_json_p2: function(user_url, m_window_id, part) {\n\n\t\tvar to_get = \"\";\n\t\tif (part === 1) { to_get = \"text\"; }\n\t\tif (part === 2) { to_get = \"photo\"; }\n\t\tif (part === 3) { to_get = \"quote\"; }\n\t\tif (part === 4) { to_get = \"link\"; }\n\t\tif (part === 5) { to_get = \"chat\"; }\n\t\tif (part === 6) { to_get = \"audio\"; }\n\t\tif (part === 7) { to_get = \"video\"; }\n\t\tif (part === 8) { return; }\n\n\t\tvar api_url = \"https://api.tumblr.com/v2/blog/\" + user_url + \".tumblr.com/posts\" + \"?api_key=\" + XKit.extensions.profiler.apiKey + \"&type=\" + to_get + \"&limit=1\";\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: api_url,\n\t\t\tjson: true,\n\t\t\tonerror: function(response) {\n\t\t\t\tconsole.log(\"Error getting page.\");\n\t\t\t\tXKit.extensions.profiler.display_error(m_window_id);\n\t\t\t\treturn;\n\t\t\t},\n\t\t\tonload: function(response) {\n\n\t\t\t\tif (XKit.extensions.profiler.window_id !== m_window_id) {return; }\n\n\t\t\t\tvar data = null;\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(response.responseText).response;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.log(\"Error parsing data.\");\n\t\t\t\t\tXKit.extensions.profiler.display_error(m_window_id);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t$(\"#xkit-profiler-\" + to_get).removeClass(\"loading-up\").html(data.total_posts);\n\n\t\t\t\tXKit.extensions.profiler.get_json_p2(user_url, m_window_id, (part + 1));\n\n\t\t\t}\n\t\t});\n\n\t},\n\n\tdisplay_error: function(m_window_id) {\n\n\t\tif (XKit.extensions.profiler.window_id !== m_window_id) {return; }\n\n\t\t$(\"#xkit-profiler-contents\").addClass(\"error-box\");\n\t\t$(\"#xkit-profiler-contents\").html(\"
      Can't fetch blog information.
      Please try again later.
      \");\n\t\t$(\"#xkit-profiler-contents\").nanoScroller();\n\t\t$(\"#xkit-profiler-contents\").nanoScroller({ scroll: 'top' });\n\n\t},\n\n\tshow_ump_error: function() {\n\n\t\tif (XKit.storage.get(\"profiler\", \"shown_warning_about_show_more\", \"\") !== \"yass\") {\n\t\t\tXKit.window.show(\"Oops: User Menus+ is missing.\", \"Profiler requires User Menus+ extension to be installed and enabled in order to work. Please download User Menus+ from the extension gallery and refresh the page to start using Profiler.\", \"error\", \"
      OK
      \");\n\t\t\tXKit.storage.set(\"profiler\", \"shown_warning_about_show_more\", \"yass\");\n\t\t}\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\ttry {\n\t\t\tXKit.extensions.show_more.remove_custom_menu(\"profiler\");\n\t\t} catch (e) {\n\t\t\tconsole.error(\"Can't remove custom menu, \" + e.message);\n\t\t}\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkQzMUIxMzgxQjM2MTFFM0EzRUJBOUI0RDFFQjc1RUQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkQzMUIxMzkxQjM2MTFFM0EzRUJBOUI0RDFFQjc1RUQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5Mzk1NzY3RjFCMjYxMUUzQTNFQkE5QjREMUVCNzVFRCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5Mzk1NzY4MDFCMjYxMUUzQTNFQkE5QjREMUVCNzVFRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsYvGsQAAAQ/SURBVHjafJYpTzRBEIZ3huG+b8KNQACOIJA4BAYwKCS/AIFEIEkw/ACCwKBIgASDQGBIcByKIyEQ7jvcx/fsvkvRzOx+JXp6qquqq6rfqu5ga2vL8zzf9xljsZiXoK+vL/1C3wmCo18mn5+fjGLqF5KYlt7f343py7qUvR+Cw5ptySiOK2OK9vv9Q+ZZXNH7S7aTKbujqy8TYtrcLJhW4BpNqamls7Oz09NTouaXsaqqqrKyMuSWSNmWLukKLEbLiRvg+fn5/Pz8+vo6EzsnZb+ioqK7u7uvr6+srMyC0JLrtLezs5ORkeFuoPnT09PMzMzCwkJWVlZOTg5jEATKGyY+Pj7e3t5eXl4Ye3t7BwcHc3Nz7cw/EqS5t7u7a6dq2+7t7U1OTh4fHxcWFpaUlDBmZ2fLD3mK5uvr68PDw+3tLSMZGxkZqa+v1xLExprHIzBIKLr9/f2xsTEmZJnwCwoKcB/rsb8kK4+Pj9fX1xcXF/yOjo5qD9wHqZr4lnFZR2FqaoqcNDU1IV1eXk7sUesQTJYQQAzhvLy82dlZEpt03POEiEAno7wTxNzc3N3dXUNDQ2lpKY6HEEKusXhycrK8vGyYwTTHk5mZeXR0tLS0NDAwoHNKCmimDQDi6upqTU0N1kl6yDrxwmck44wu3hFmCcWNjQ0yZhWHcV8flfXi4qLyju/RnDw/P3PsTIAA89AqKiiivra2pkYifhDf5KdVbG9vI0RmQ76LOLfx8fGrqyustLa2hlZRQRH1g4ODb4cCO5PLy0sCBzO2n0v9/f3gVeECs5WVlagMiqhfJ0jCcaa1RqAG3lMmh42Li4utjhobGznSWCpCHSMUh9W2b2r8q5rSZV8VJHnSlXID1IUOq7jfDWCltK7sT0xMDA0NWSegxGJpCCP39/d2YQTy3b0AokRCSBFGzRW3aUdPoqioyNAfWNXBTacDPCg9yhvf/29dxFErMXEUWcmxAQspFShUjo7uZoH/xzp+YEeBJlNkuMRN2kBKtZ6eHjywCIaHhykI6jYqSZ3b3RBH0adD7e3tOpIoTLFugJZrIN1tGNZim5ubFeLvBu8JQjo/P5/llDAlMm0gFDE5PDyMNgzaETBFQMLJVqHjhsvY1tZ2c3ND0w7BdHp6mkr87ZG+X11dHWoYwkLoVZCEqV3TTDo6OjY3N93wBVP3eAE7HLee4bS0tMAJvaOCKCTQ7OrqovFxF7qu4bJ7rdIV4OtXuWV0+2gyAvdfbzo43CGdnZ00Ne4Qg2k6XJL3uro6IjBTf9q1mwq3mJkQcm1tLV2IRssDImSXw6Q5E5YSZQVoSFPaAw7QHjz2HLI7D9+5bwn/JUEmg3VSFEq3dVCDbHwDsxV67bp9CQHM4alhwSrOtW6ZsTqIu+hWlvsOdN+wblhqXJYHc9aeEa5u8lXhempPKyHPfbWro1gFGb71m65B/RNgAE6EQ+bxcXjIAAAAAElFTkSuQmCC","css":"#xkit-profiler-contents {\n\tbackground: rgb(245,245,245);\n\tborder: 1px solid rgb(190,190,190);\n\theight: 200px;\n}\n\n.xkit-profiler-nickname-inline {\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tmargin-left: 5px;\n\tcolor: rgb(100,100,100);\n}\n\n#xkit-profiler-contents.error-box {\n\ttext-align: center;\n\tcolor: rgb(130,130,130);\n\tline-height: 30px;\n}\n\n.xkit-profiler-nickname {\n\tfont-weight: normal;\n\tmargin-left: 5px;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tmax-width: 55px;\n}\n\n.xkit-profiler-line {\n\tborder-bottom: 1px solid rgb(190,190,190);\n\tpadding: 0px 10px;\n\theight: 25px;\n\tline-height: 25px;\n\tposition: relative;\n}\n\n.xkit-profiler-line:last-child {\n\tborder-bottom: 0;\n}\n\n.xkit-profiler-line.separator {\n\tbackground: rgb(190,190,190);\n\tfont-weight: bold;\n}\n\n.xkit-profiler-line div.loading-up {\n\tbackground: transparent no-repeat 50% 50% url(data:image/gif;base64,R0lGODlhDgAEALMKAOvt7////97i5L3Ey+Xn6vb3+PDy89PY26ixueLl5wAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzU0REE2MUM4NjVBMTFFMkE4N0FGRkVDQThGN0FCRDAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzU0REE2MUQ4NjVBMTFFMkE4N0FGRkVDQThGN0FCRDAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRTRCNEE3NTg2NTUxMUUyQTg3QUZGRUNBOEY3QUJEMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozRTRCNEE3Njg2NTUxMUUyQTg3QUZGRUNBOEY3QUJEMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAURAAoALAAAAAAOAAQAAAQfMI2RghHChAJAGQgyBMJxCAFAEAAokiaqshJlYRrnRQAh+QQFEQAKACwAAAAACQAEAAAEFdAIYVQaI4lzhBoIMmzdFw4SZWFJBAAh+QQFEQAKACwAAAAADgAEAAAEH7AAUJQRwqg0RgIEASjCcQjKgCADKJImqrISZWEa50UAIfkEBREACgAsBQAAAAkABAAABBWwAFCUEcIAQoASxyFs3RcKEmVhRgQAOw==);\n}\n\n.xkit-profiler-line div {\n\ttext-align: right;\n\tposition: absolute;\n\ttop: 0; right: 20px;\n\theight: 25px;\n\tline-height: 25px;\n\tmin-width: 15px;\n\tmax-width: 240px;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}","title":"Profiler","description":"The User Inspection Gadget","developer":"STUDIOXENIX","version":"1.2.6","details":"Select Profiler option from the User Menu to see information such as when they started blogging, how many posts they have, timezone, and more.

      Requires User Menus+ to be installed.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/quick_tags.json b/Extensions/dist/quick_tags.json new file mode 100644 index 000000000..64d23c085 --- /dev/null +++ b/Extensions/dist/quick_tags.json @@ -0,0 +1 @@ +{"id":"quick_tags","script":"//* TITLE Quick Tags **//\n//* VERSION 0.6.9 **//\n//* DESCRIPTION Quickly add tags to posts **//\n//* DETAILS Allows you to create tag bundles and add tags to posts without leaving the dashboard. **//\n//* DEVELOPER New-XKit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.quick_tags = new Object({\n\n\trunning: false,\n\n\tbutton_icon:\" data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAaRJREFUOBGlk7FKw1AUhnMjQSpZpIsP4KCLHUQ3h+oLuDkLxSWlSd7AooNbSkmLeQAfw3ZxKDpVEH0EF52EUqKp/x+SEq7NTYIXLufmnNPvnv/cUzEcDjfn8/mNEKKhaZqOnV0/+JiYpnnVarU+s4G8s/A8L0DwIi+Bflz2ZhhG07Ksd1UeY3pSGc/nOB9mt67rR/BPF4vFThiG48FgsMVE1aLEWCZALzifYo9oHcd5sm37AZWd4Ls0VO5ZB9WYAHSw49Vutz+qQGVgH5V+gdRPeJWhotfrPaKqA/aOMrMg+ez7fh29vIe/gfyVD8UKv/lDJKzTqlYZ+QROCImiCAX4dRWQsSKojqG9RnWvyG1Qzn+hgrdyvgAboZe7+JzyVVkJY6ol97RWq+3Hr8x/ACDHbDQAlSrF8N/yUg7/bDbbXo5NAm1WgWJCzgDyExVdTMlzLDlxxCaRP+aNcOTKJwzxO+StwXZd172E1f4A6SyC5sFygSqoCqYEroLyAdgzWSZz07VSchqkleSnoWXPUkdqC4FMlKC5sBRaygZBsIH+7RUl/wJcdCuw4Tjk5QAAAABJRU5ErkJggg==\",\n\tbutton_ok_icon: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAcBJREFUOBGlk79KA0EQxmc2F2JCFEQLH8BCMZoiJJ2F+gJiESVWNjYJWgmWES0EC0mIoA9wChY21sZGMCRVJEEfwUYtDInC5dadIyuXNXeXw4Vj/83+br5vZ3Ffnx9vgXnMEeLAkYGtIUAXESuaFj08TT++27Ych5jT5y44wLZjhNgQ0JewFl46Sdde3eJoj1mZ0YCxLS0Aqb4PtUUBq3POZzpG537vOjnlCZQyGZpNg+OqYUKZ+sJGs1bI1B/4SGTFD7TPM+B8BzhErb6Xytla9c0PtB+IWASEljCtaJfmB4pZPVYF4EnyjmTaQeo4e5OawK/2nfA07nRRDBEM66CphVSAOh8mUyb8qtDBLnRLlIEKUedeUBYMjh0Jz54tGULOf6HiMQBQfbWNTllkO2uViCgVykTNTp2rnk6OhhLWLdMLiGjhZTLab6aiKs7pR1T8H5/f079lQ1B6Xn6guavYOudQIiACHhQyjSdLMi3IRvLpmdEf3eT3YLpILUCw0mYjT4w/QFr0gjrBHIFuUDeYK3AQlC7A8kyRSbGyDZQsN6m3y5frds/kmuw9gRRoh7rBJHSoPn+biOxexha8gn8AF6tJ8Q8uzcUAAAAASUVORK5CYII=\",\n\tpreferences: {\n\t\t\"sep0\": {\n\t\t\ttext: \"Options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"append_not_replace\": {\n\t\t\ttext: \"Append, do not replace tags when adding them\",\n\t\t\tvalue: true,\n\t\t\tdefault: true\n\t\t},\n\t\t\"show_in_new_post\": {\n\t\t\ttext: \"Enable Quick Tags in new post popup\",\n\t\t\tvalue: true,\n\t\t\tdefault: true\n\t\t},\n\t\t\"show_in_one_click_postage\": {\n\t\t\ttext: \"Enable Quick Tags in One-Click Postage popup\",\n\t\t\tvalue: true,\n\t\t\tdefault: true\n\t\t},\n\t\t\"append_not_replace_one_click\": {\n\t\t\ttext: \"Also append and do not replace tags when adding them using One-Click Postage\",\n\t\t\tvalue: false,\n\t\t\tdefault: false\n\t\t},\n\t\t\"hide_new_bundle_button\": {\n\t\t\ttext: \"Hide the new bundle button at the end of One-Click Postage\",\n\t\t\tvalue: false,\n\t\t\tdefault: false\n\t\t},\n\t\t\"sep1\": {\n\t\t\ttext: \"My Tag Bundles\",\n\t\t\ttype: \"separator\"\n\t\t}\n\t},\n\n\ttag_array: [],\n\n\tprocessing: false,\n\n\tcancel_menu_close: function() {\n\t\tclearTimeout(XKit.extensions.quick_tags.menu_closer_int);\n\t\tXKit.extensions.quick_tags.user_on_box = true;\n\t},\n\n\tmenu_close: function() {\n\t\t// Only close the menu if it doesn't have keyboard or mouse focus\n\t\tif ($(\"#xkit-quick-tags-window\").find('input:focus').length === 0 &&\n\t\t\t\t$('#xkit-quick-tags-window:hover').length === 0) {\n\t\t\tXKit.extensions.quick_tags.user_on_box = false;\n\t\t\tXKit.extensions.quick_tags.menu_closer_int = setTimeout(function() { XKit.extensions.quick_tags.close_window(); }, 500);\n\t\t}\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tXKit.tools.init_css(\"quick_tags\");\n\n\t\tXKit.interface.post_window.create_control_button(\"xkit-quick-tags-window\", this.button_icon, \"Quick Tags in a window!\");\n\n\t\t$(document).on(\"mouseover\", \"#xkit-quick-tags-window\", XKit.extensions.quick_tags.cancel_menu_close);\n\t\t$(document).on(\"mouseout\", \"#xkit-quick-tags-window\", XKit.extensions.quick_tags.menu_close);\n\n\t\t$(document).on('mouseover', '.xkit-quick-tags, .xkit-quick-tags-window', XKit.extensions.quick_tags.move_window);\n\t\t$(document).on('mouseout', '.xkit-quick-tags, .xkit-quick-tags-window', XKit.extensions.quick_tags.menu_close);\n\n\t\t$(document).on('click', '.xkit-tag', XKit.extensions.quick_tags.button_clicked);\n\t\t$(document).on('click', '.xkit-tag-add', XKit.extensions.quick_tags.add_button_clicked);\n\n\t\tXKit.interface.post_window_listener.add(\"quick_tags\", XKit.extensions.quick_tags.post_window);\n\n\t\tif (XKit.page.react) {\n\t\t\tXKit.interface.react.create_control_button(\"xkit-quick-tags\", this.button_icon, \"Quick Tags!\", \"\", this.button_ok_icon).then(() => {\n\t\t\t\tXKit.post_listener.add(\"quick_tags\", XKit.extensions.quick_tags.do_posts);\n\n\t\t\t\tthis.do_posts();\n\t\t\t});\n\t\t}\n\t},\n\n\tpost_window: function() {\n\t\tif (XKit.extensions.quick_tags.preferences.show_in_new_post.value) {\n\t\t\tXKit.interface.post_window.add_control_button(\"xkit-quick-tags-window\", \"data-in-window=\\\"true\\\"\");\n\t\t}\n\t},\n\n\tsubmit: async function(tags, button) {\n\n\t\t// Are we in post window?\n\t\tif ($(button).attr('data-in-window') === \"true\") {\n\t\t\tif (XKit.extensions.quick_tags.preferences.append_not_replace.value !== true) {\n\t\t\t\tXKit.interface.post_window.remove_all_tags();\n\t\t\t}\n\t\t\tXKit.interface.post_window.add_tag(tags.split(\",\"));\n\t\t\tXKit.interface.switch_control_button($(button), false);\n\t\t\treturn;\n\t\t}\n\n\t\t// Find the post object.\n\t\tvar m_post = await XKit.interface.react.find_post($(button).attr('data-post-id'));\n\n\t\tvar m_button = $(button);\n\n\t\t// Fetch info about it!\n\t\tif (!m_post.error) {\n\t\t\tXKit.interface.fetch(m_post, function(data) {\n\n\t\t\t\t// Use Interface to edit the post's tags:\n\t\t\t\tvar m_tags = data.data.post.tags;\n\n\t\t\t\tif (m_tags === \"undefined\" || typeof m_tags === \"undefined\" || m_tags == \"null\") {\n\t\t\t\t\tm_tags = \"\";\n\t\t\t\t}\n\n\t\t\t\tif (XKit.extensions.quick_tags.preferences.append_not_replace.value === true) {\n\t\t\t\t\tm_tags = m_tags + \",\" + tags;\n\t\t\t\t} else {\n\t\t\t\t\tm_tags = tags;\n\t\t\t\t}\n\n\t\t\t\tif (m_tags.indexOf(\",\") != -1) {\n\n\t\t\t\t\tvar split_tags = m_tags.split(\",\");\n\t\t\t\t\tvar new_data = \"\";\n\n\t\t\t\t\tfor (var i = 0; i < split_tags.length; i++) {\n\n\t\t\t\t\t\tif (split_tags[i]) {\n\t\t\t\t\t\t\tif (new_data === \"\") {\n\t\t\t\t\t\t\t\tnew_data = split_tags[i];\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnew_data = new_data + \",\" + split_tags[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tm_tags = new_data;\n\n\t\t\t\t}\n\n\t\t\t\tvar m_post_object = XKit.interface.edit_post_object(data.data, { tags: m_tags });\n\n\t\t\t\t// Now submit it back to the server:\n\t\t\t\tXKit.interface.edit(m_post_object, async function(edit_data) {\n\n\t\t\t\t\tXKit.interface.switch_control_button($(m_button), false);\n\n\t\t\t\t\tif (edit_data.error === false && edit_data.data.errors === false) {\n\n\t\t\t\t\t\tXKit.interface.switch_control_button($(m_button), false);\n\t\t\t\t\t\tawait XKit.interface.react.update_view.tags(m_post, m_tags);\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Oops?\n\t\t\t\t\t\tif (edit_data.error === true) {\n\t\t\t\t\t\t\tXKit.window.show(\"Unable to edit post\", \"Something went wrong, my apologizes.
      Please try again later or file a bug report with the error code:
      QT01B\" + edit_data.status + \"
      \" + edit_data.message, \"error\", \"
      OK
      \");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tXKit.window.show(\"Unable to edit post\", \"Something went wrong, my apologizes.
      Please try again later or file a bug report with the error code:
      QT01A\" + edit_data.status + \"
      \" + edit_data.data.errors, \"error\", \"
      OK
      \");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t});\n\n\t\t\t}, false);\n\t\t} else {\n\t\t\tXKit.window.show(\"Unable to edit post\", \"Something went wrong, my apologies.
      Please try again later or file a bug report with the error code:
      QT02\", \"error\", \"
      OK
      \");\n\t\t}\n\n\t\tXKit.extensions.quick_tags.user_on_box = false;\n\t\tXKit.extensions.quick_tags.close_window();\n\t},\n\n\tcustom_tag: function() {\n\n\t\tXKit.interface.switch_control_button($(XKit.extensions.quick_tags.current_button), true);\n\t\tXKit.extensions.quick_tags.close_window();\n\n\t\tvar m_tags = $(\"#xkit-tag-input\").val();\n\t\tXKit.extensions.quick_tags.submit(m_tags, XKit.extensions.quick_tags.current_button);\n\n\t},\n\n\tbutton_clicked: function(e) {\n\n\t\tvar obj = $(e.target);\n\n\t\tif ($(obj).hasClass(\"xkit-tag\") === false) {\n\t\t\tobj = $(obj).parent();\n\t\t}\n\n\t\tXKit.interface.switch_control_button($(XKit.extensions.quick_tags.current_button), true);\n\t\tXKit.extensions.quick_tags.close_window();\n\n\t\tvar m_tags = $(obj).attr('data-tags');\n\n\t\tvar m_one_click = $(obj).attr('data-one-click-postage');\n\t\tif (m_one_click !== \"true\") {\n\t\t\tXKit.extensions.quick_tags.submit(m_tags, XKit.extensions.quick_tags.current_button);\n\t\t} else {\n\t\t\tif (XKit.extensions.quick_tags.preferences.append_not_replace_one_click.value !== true) {\n\t\t\t\t$(\"#x1cpostage_tags\").val(m_tags);\n\t\t\t} else {\n\t\t\t\tif ($(\"#x1cpostage_tags\").val() === \"\") {\n\t\t\t\t\t$(\"#x1cpostage_tags\").val(m_tags);\n\t\t\t\t} else {\n\t\t\t\t\tvar m_u_tags = $(\"#x1cpostage_tags\").val();\n\t\t\t\t\tif (typeof m_u_tags === \"undefined\" || m_u_tags == \"null\") {\n\t\t\t\t\t\tm_u_tags = \"\";\n\t\t\t\t\t}\n\t\t\t\t\t$(\"#x1cpostage_tags\").val(m_u_tags + \",\" + m_tags);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tadd_button_clicked: function() {\n\t\tXKit.extensions.quick_tags.add_bundle_ui();\n\t},\n\n\tmenu_closer_int: 0,\n\tuser_on_box: false,\n\tcurrent_button: \"\",\n\n\tclose_window: function() {\n\t\tif (XKit.extensions.quick_tags.user_on_box === false) {\n\t\t\t$(\"#xkit-quick-tags-window\").fadeOut('fast');\n\t\t}\n\t},\n\n\tload_tag_prefs: function() {\n\n\t\t// Get the user tags.\n\t\tvar user_tags = XKit.storage.get(\"quick_tags\", \"user_tags\");\n\t\tvar user_tag_array = [];\n\n\t\ttry {\n\t\t\tuser_tag_array = JSON.parse(user_tags);\n\t\t} catch (e) {\n\t\t}\n\n\t\tXKit.extensions.quick_tags.tag_array = user_tag_array;\n\n\t\treturn user_tag_array;\n\n\t},\n\n\trender_tags_from_array: function(user_tag_array, for_one_click) {\n\n\t\tvar m_user_tags = \"\";\n\n\t\tif (user_tag_array.length !== 0) {\n\n\t\t\tvar showNumbers = for_one_click && typeof XKit.extensions.one_click_postage != \"undefined\" && XKit.extensions.one_click_postage.preferences.enable_keyboard_shortcuts.value;\n\n\t\t\tfor (var tag in user_tag_array) {\n\n\t\t\t\tvar m_title = user_tag_array[tag].title;\n\t\t\t\tvar m_tags = user_tag_array[tag].tags;\n\n\t\t\t\tvar add_data = \"\";\n\t\t\t\tif (for_one_click === true) {\n\t\t\t\t\tadd_data = \"data-one-click-postage=\\\"true\\\"\";\n\t\t\t\t}\n\n\t\t\t\tm_user_tags = m_user_tags + \"
      \" + m_title;\n\n\t\t\t\tif (showNumbers && tag < 9) {\n\t\t\t\t\t// force javascript to treat tag as a number instead of string concatenation\n\t\t\t\t\tvar shortcutNumber = parseInt(tag) + 1;\n\t\t\t\t\tm_user_tags = m_user_tags + \"\" + shortcutNumber + \"\";\n\t\t\t\t}\n\n\t\t\t\tm_user_tags = m_user_tags + \"
      \";\n\n\t\t\t\tif (for_one_click !== true) {\n\t\t\t\t\tm_user_tags = m_user_tags + \"
      \" + m_tags + \"
      \";\n\t\t\t\t}\n\t\t\t\tm_user_tags = m_user_tags + \"
      \";\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn m_user_tags;\n\n\t},\n\n\trender_add_bundle_button: function(user_tag_array) {\n\t\tvar m_add_button = \"\";\n\n\t\tif (user_tag_array.length === 0 &&\n\t\t\t!XKit.extensions.quick_tags.preferences.hide_new_bundle_button.value) {\n\t\t\tm_add_button = \"
      + Add tag bundle
      \";\n\t\t}\n\n\t\treturn m_add_button;\n\t},\n\n\tmove_window: function(e) {\n\n\t\tvar obj = $(e.target);\n\n\t\tif ($(obj).hasClass(\"xkit-interface-working\") === true) { return; }\n\n\t\tvar user_tag_array = XKit.extensions.quick_tags.load_tag_prefs();\n\t\tvar m_user_tags = XKit.extensions.quick_tags.render_tags_from_array(user_tag_array);\n\t\tvar m_add_button = XKit.extensions.quick_tags.render_add_bundle_button(user_tag_array);\n\n\t\tvar add_class = \"nano\";\n\t\tvar add_class_2 = \"content\";\n\t\tif (user_tag_array.length <= 3) {\n\t\t\tadd_class = \"no-scroll-needed\";\n\t\t\tadd_class_2 = \"\";\n\t\t}\n\n\t\t// Let's create our popup first.\n\t\tvar m_html = \"
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" + m_user_tags + m_add_button + \"
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\"
      \";\n\n\t\t$(\"#xkit-quick-tags-window\").remove();\n\t\t$(\"body\").append(m_html);\n\n\t\t$(\"#xkit-tag-input\").bind(\"keydown\", function(event) {\n\t\t\tif (event.which == 13) {\n\t\t\t\tXKit.extensions.quick_tags.custom_tag();\n\t\t\t}\n\t\t\tevent.stopPropagation();\n\t\t\tevent.stopImmediatePropagation();\n\t\t});\n\n\t\tif ($(obj).attr('data-in-window') === \"true\") {\n\t\t\t$(\"#xkit-quick-tags-window, #xkit-quick-tags-user-tags\").addClass(\"no-other-section\");\n\t\t\t$(\".xkit-tag-other\").css(\"display\", \"none\");\n\t\t} else {\n\t\t\t$(\"#xkit-quick-tags-window, #xkit-quick-tags-user-tags\").removeClass(\"no-other-section\");\n\t\t\t$(\".xkit-tag-other\").css(\"display\", \"block\");\n\t\t}\n\n\t\tclearTimeout(XKit.extensions.quick_tags.menu_closer_int);\n\n\t\tif (user_tag_array.length >= 4) {\n\t\t\tsetTimeout(function() {\n\t\t\t\t$(\"#xkit-quick-tags-user-tags\").nanoScroller();\n\t\t\t\t$(\"#xkit-quick-tags-user-tags\").nanoScroller({ scroll: 'top' });\n\t\t\t}, 100);\n\t\t}\n\n\t\tvar offset = $(obj).offset();\n\n\t\tvar box_left = offset.left - ($(\"#xkit-quick-tags-window\").width() / 2) + 10;\n\t\tvar box_top = offset.top - ($(\"#xkit-quick-tags-window\").height() + 7);\n\n\t\tXKit.extensions.quick_tags.user_on_box = true;\n\t\tXKit.extensions.quick_tags.current_button = $(obj);\n\n\t\t$(\"#xkit-quick-tags-window\").css(\"top\", box_top + \"px\");\n\t\t$(\"#xkit-quick-tags-window\").css(\"left\", box_left + \"px\");\n\t\t$(\"#xkit-quick-tags-window\").fadeIn('fast');\n\n\t},\n\n\tshow: function(button, post) {\n\n\t\t// if (m_post.error == true) { return; }\n\n\n\n\t},\n\n\treturn_for_one_click_postage: function() {\n\n\t\tvar user_tag_array = XKit.extensions.quick_tags.load_tag_prefs();\n\t\tvar m_user_tags = XKit.extensions.quick_tags.render_tags_from_array(user_tag_array, true);\n\t\tvar m_add_button = XKit.extensions.quick_tags.render_add_bundle_button(user_tag_array);\n\n\t\treturn m_user_tags + m_add_button;\n\n\t},\n\n\tdo_posts: async function() {\n\t\tif (XKit.extensions.quick_tags.processing === true) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (XKit.interface.where().inbox) {\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.extensions.quick_tags.processing = true;\n\t\tvar $posts = await XKit.interface.react.get_posts(\"xkit-quick-tags-done\", true);\n\n\t\t$posts\n\t\t\t.addClass(\"xkit-quick-tags-done\")\n\t\t\t.each(function() {\n\t\t\t\tXKit.interface.react.add_control_button($(this), \"xkit-quick-tags\", \"\");\n\t\t\t});\n\n\t\tXKit.extensions.quick_tags.processing = false;\n\t},\n\n\tdestroy: function() {\n\n\t\tthis.running = false;\n\n\t\tXKit.interface.post_window_listener.remove(\"quick_tags\");\n\t\tXKit.post_listener.remove(\"quick_tags\");\n\n\t\t$(document).off(\"mouseover\", \"#xkit-quick-tags-window\", XKit.extensions.quick_tags.cancel_menu_close);\n\t\t$(document).off(\"mouseout\", \"#xkit-quick-tags-window\", XKit.extensions.quick_tags.menu_close);\n\n\t\t$(document).off('mouseover', '.xkit-quick-tags, .xkit-quick-tags-window', XKit.extensions.quick_tags.move_window);\n\t\t$(document).off('mouseout', '.xkit-quick-tags, .xkit-quick-tags-window', XKit.extensions.quick_tags.menu_close);\n\n\t\t$(document).off('click', '.xkit-tag', XKit.extensions.quick_tags.button_clicked);\n\t\t$(document).off('click', '.xkit-tag-add', XKit.extensions.quick_tags.add_button_clicked);\n\n\t\t$(\"#xkit-tag-input\").unbind(\"focus\");\n\t\t$(\"#xkit-tag-input\").unbind(\"blur\");\n\t\t$(\"#xkit-tag-input\").unbind(\"keydown\");\n\n\t\t$(\"#xkit-quick-tags-window\").remove();\n\t\t$(\".xkit-quick-tags, .xkit-quick-tags-window\").remove();\n\n\t},\n\n\tcreate_div: function(obj, id, max) {\n\n\t\tvar m_html =\t\"
      \" +\n\t\t\t\t\t\"
      \" + obj.title + \"
      \" +\n\t\t\t\t\t\"
      \" + obj.tags + \"
      \";\n\n\t\tm_html = m_html + \"
       
      \";\n\n\t\tif (id === 0) {\n\t\t\tm_html = m_html + \"
       
      \";\n\t\t} else {\n\t\t\tm_html = m_html + \"
       
      \";\n\t\t}\n\n\t\tm_html = m_html + \"
      \";\n\n\t\treturn m_html;\n\n\t},\n\n\tcheck_div_move_buttons: function() {\n\n\t\tvar m_count = 0;\n\n\t\t$(\".xkit-quick-tags-cp-tag\").each(function() {\n\n\t\t\tif (m_count === 0) {\n\t\t\t\t$(this).find(\".xkit-quick-tags-cp-up\").css(\"display\", \"none\");\n\t\t\t} else {\n\t\t\t\t$(this).find(\".xkit-quick-tags-cp-up\").css(\"display\", \"block\");\n\t\t\t}\n\n\t\t\tif ($(this).is(\":last-child\")) {\n\t\t\t\t$(this).find(\".xkit-quick-tags-cp-down\").css(\"display\", \"none\");\n\t\t\t} else {\n\t\t\t\t$(this).find(\".xkit-quick-tags-cp-down\").css(\"display\", \"block\");\n\t\t\t}\n\n\t\t\tm_count++;\n\n\t\t});\n\n\t},\n\n\tsave_div_positions: function() {\n\n\t\tvar temp_array = [];\n\n\t\t$(\".xkit-quick-tags-cp-tag\").each(function() {\n\n\t\t\tvar m_object = {};\n\t\t\tm_object.title = $(this).find(\".xkit-tag-title\").text();\n\t\t\tm_object.tags = $(this).find(\".xkit-tag-tags\").text();\n\n\t\t\ttemp_array.push(m_object);\n\n\t\t});\n\n\t\tXKit.storage.set(\"quick_tags\", \"user_tags\", JSON.stringify(temp_array));\n\t\tXKit.extensions.xkit_preferences.restart_extension(\"quick_tags\");\n\n\t},\n\n\tcpanel: function(m_div) {\n\n\t\tif ($(\"#xkit-quick-tags-custom-panel\").length > 0) {\n\t\t\t// Panel already exists, probably in refresh mode.\n\t\t\t// Remove it first.\n\t\t\t$(\"#xkit-quick-tags-custom-panel\").remove();\n\t\t}\n\n\t\tXKit.extensions.quick_tags.load_tag_prefs();\n\n\t\tvar m_html = \"
      Add new tag bundle
      \";\n\n\t\tif (XKit.extensions.quick_tags.tag_array.length <= 0) {\n\t\t\tm_html = m_html + \"
      You have no tag bundles.
      Create some by clicking on the button above to quickly tag your posts.
      \";\n\t\t} else {\n\t\t\tfor (var i = 0; i < XKit.extensions.quick_tags.tag_array.length; i++) {\n\t\t\t\tif (XKit.extensions.quick_tags.tag_array[i] !== \"\") {\n\t\t\t\t\tm_html = m_html + XKit.extensions.quick_tags.create_div(XKit.extensions.quick_tags.tag_array[i], i, XKit.extensions.quick_tags.tag_array.length);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t$(m_div).append(m_html);\n\n\t\t$(\".xkit-quick-tags-cp-down\").click(function() {\n\n\t\t\tvar box = $(this).parent();\n\t\t\t$(box).next().after($(box));\n\n\t\t\tXKit.extensions.quick_tags.check_div_move_buttons();\n\t\t\tXKit.extensions.quick_tags.save_div_positions();\n\n\t\t});\n\n\t\t$(\".xkit-quick-tags-cp-up\").click(function() {\n\n\t\t\tvar box = $(this).parent();\n\t\t\t$(box).prev().before($(box));\n\n\t\t\tXKit.extensions.quick_tags.check_div_move_buttons();\n\t\t\tXKit.extensions.quick_tags.save_div_positions();\n\n\t\t});\n\n\t\t$(\"#quick-tags-add-button\").click(function() {\n\t\t\tXKit.extensions.quick_tags.add_bundle_ui();\n\t\t});\n\n\t\t$(\".xkit-quick-tags-cp-tag\").click(function(event) {\n\n\t\t\tif ($(event.target).hasClass(\"xkit-quick-tags-cp-up\") || $(event.target).hasClass(\"xkit-quick-tags-cp-down\")) { return; }\n\n\t\t\tvar m_id = $(this).attr('data-id');\n\n\t\t\tvar m_tags = XKit.extensions.quick_tags.tag_array[m_id].tags;\n\t\t\tvar m_title = XKit.extensions.quick_tags.tag_array[m_id].title;\n\t\t\tXKit.window.show(\"Edit bundle\", \"Bundle TitleBundled Tags, comma separated\", \"question\", \"
      Save Bundle
      Delete This Bundle
      Cancel
      \");\n\n\t\t\t$(\"#xkit-quick-tags-delete-bundle\").click(function() {\n\n\t\t\t\tXKit.extensions.quick_tags.tag_array.splice(m_id, 1);\n\n\t\t\t\tXKit.storage.set(\"quick_tags\", \"user_tags\", JSON.stringify(XKit.extensions.quick_tags.tag_array));\n\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.extensions.quick_tags.cpanel(m_div);\n\t\t\t\tXKit.extensions.xkit_preferences.restart_extension(\"quick_tags\");\n\n\t\t\t});\n\n\t\t\t$(\"#xkit-quick-tags-create-bundle\").click(function() {\n\n\t\t\t\tvar $title = $(\"#xkit-quick-tags-add-title\");\n\t\t\t\tvar title = $title.val();\n\t\t\t\tvar $tags = $(\"#xkit-quick-tags-add-tags\");\n\t\t\t\tvar tags = $tags.val();\n\t\t\t\tvar quit = false;\n\n\t\t\t\tif ($.trim(title) === \"\") {\n\t\t\t\t\t$title\n\t\t\t\t\t\t.css(\"border-color\", \"red\")\n\t\t\t\t\t\t.attr(\"placeholder\", \"Please enter a name for your bundle.\")\n\t\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t\t$title\n\t\t\t\t\t\t\t\t.removeAttr(\"style\")\n\t\t\t\t\t\t\t\t.attr(\"placeholder\", \"eg: Doctor Who\")\n\t\t\t\t\t\t\t\t.off(\"click\");\n\t\t\t\t\t\t});\n\t\t\t\t\tquit = true;\n\t\t\t\t}\n\n\t\t\t\tif ($.trim(tags) === \"\") {\n\t\t\t\t\t$tags\n\t\t\t\t\t\t.css(\"border-color\", \"red\")\n\t\t\t\t\t\t.attr(\"placeholder\", \"Please enter the tags for your bundle.\")\n\t\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t\t$tags\n\t\t\t\t\t\t\t\t.removeAttr(\"style\")\n\t\t\t\t\t\t\t\t.attr(\"placeholder\", \"eg: Doctor Who, Dr. Who, Non-Medical Tv Show Doctor\")\n\t\t\t\t\t\t\t\t.off(\"click\");\n\t\t\t\t\t\t});\n\t\t\t\t\tquit = true;\n\t\t\t\t}\n\n\t\t\t\tif (quit) { return; }\n\n\t\t\t\tXKit.extensions.quick_tags.tag_array[m_id].title = title;\n\t\t\t\tXKit.extensions.quick_tags.tag_array[m_id].tags = tags;\n\n\t\t\t\tXKit.storage.set(\"quick_tags\", \"user_tags\", JSON.stringify(XKit.extensions.quick_tags.tag_array));\n\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.extensions.quick_tags.cpanel(m_div);\n\t\t\t\tXKit.extensions.xkit_preferences.restart_extension(\"quick_tags\");\n\n\t\t\t});\n\n\n\t\t});\n\n\t\t$(\".xkit-quick-tags-tag-delete\").click(function() {\n\n\t\t\ttry {\n\n\t\t\t\tvar m_id = $(this).attr('data-id');\n\n\t\t\t\tXKit.extensions.quick_tags.tag_array.splice(m_id, 1);\n\n\t\t\t\tXKit.storage.set(\"quick_tags\", \"user_tags\", JSON.stringify(XKit.extensions.quick_tags.tag_array));\n\n\t\t\t\tXKit.extensions.quick_tags.cpanel(m_div);\n\t\t\t\tXKit.extensions.xkit_preferences.restart_extension(\"quick_tags\");\n\n\t\t\t} catch (e) {\n\n\t\t\t\tconsole.log(\"quick-tags cp delete -> \" + e.message);\n\n\t\t\t}\n\n\t\t});\n\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller();\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller({ scroll: 'top' });\n\n\t\tXKit.extensions.quick_tags.infoCpanel(m_div);\n\t},\n\n\tinfoCpanel: function(m_div) {\n\n\t\t$('.xkit-quick-tags-cp-info').remove();\n\t\t$(m_div).prepend(`\n\t\t\t
      \n\t\t\t\t

      \n\t\t\t\t\tThe XKit Rewritten extension includes a new version of this script. It fixes post formatting becoming broken when tags are added and adds a quick tag button to the post editor!\n\t\t\t\t

      \n\t\t\t\t

      \n\t\t\t\t\tTo migrate easily, install XKit Rewritten and enable its Quick Tags feature in your browser toolbar, then refresh this page and press this button to copy your tag bundles:\n\t\t\t\t

      \n\t\t\t\t\n\t\t\t
      \n\t\t`);\n\n\t\t$('#xkit-quick-tags-cp-export').on('click', async function() {\n\t\t\tif (!XKit.extensions.quick_tags.tag_array.length) {\n\t\t\t\tXKit.window.show(\n\t\t\t\t\t'Nothing to Copy',\n\t\t\t\t\t\"You don't have any tag bundles to copy!\",\n\t\t\t\t\t'error',\n\t\t\t\t\t'
      OK
      ',\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.setAttribute('disabled', '');\n\t\t\tthis.classList.add('disabled');\n\n\t\t\tlet succeeded = false;\n\n\t\t\twindow.addEventListener('xkit-quick-tags-migration-success', () => { succeeded = true; }, { once: true });\n\t\t\twindow.dispatchEvent(new CustomEvent('xkit-quick-tags-migration', { detail: JSON.stringify(XKit.extensions.quick_tags.tag_array) }));\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.removeAttribute('disabled');\n\t\t\t\tthis.classList.remove('disabled');\n\n\t\t\t\tif (succeeded) {\n\t\t\t\t\tXKit.extensions.xkit_preferences.close();\n\t\t\t\t} else {\n\t\t\t\t\tXKit.window.show(\n\t\t\t\t\t\t'Failure',\n\t\t\t\t\t\t'Make sure you have installed XKit Rewritten v0.23.5 or later, have refreshed the page, and have enabled Quick Tags.',\n\t\t\t\t\t\t'error',\n\t\t\t\t\t\t'
      OK
      ',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}, 500);\n\t\t});\n\t},\n\n\tadd_bundle_ui: function() {\n\n\t\tXKit.window.show(\"Create new bundle\", \"Bundle TitleBundled Tags, comma separated\", \"question\", \"
      Create Bundle
      Cancel
      \");\n\n\t\t$(\"#xkit-quick-tags-create-bundle\").click(function() {\n\n\t\t\tvar $title = $(\"#xkit-quick-tags-add-title\");\n\t\t\tvar title = $title.val();\n\t\t\tvar $tags = $(\"#xkit-quick-tags-add-tags\");\n\t\t\tvar tags = $tags.val();\n\t\t\tvar quit = false;\n\n\t\t\tif ($.trim(title) === \"\") {\n\t\t\t\t$title\n\t\t\t\t\t.css(\"border-color\", \"red\")\n\t\t\t\t\t.attr(\"placeholder\", \"Please enter a name for your bundle.\")\n\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t$title\n\t\t\t\t\t\t\t.removeAttr(\"style\")\n\t\t\t\t\t\t\t.attr(\"placeholder\", \"eg: Doctor Who\")\n\t\t\t\t\t\t\t.off(\"click\");\n\t\t\t\t\t});\n\t\t\t\tquit = true;\n\t\t\t}\n\n\t\t\tif ($.trim(tags) === \"\") {\n\t\t\t\t$tags\n\t\t\t\t\t.css(\"border-color\", \"red\")\n\t\t\t\t\t.attr(\"placeholder\", \"Please enter the tags for your bundle.\")\n\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t$tags\n\t\t\t\t\t\t\t.removeAttr(\"style\")\n\t\t\t\t\t\t\t.attr(\"placeholder\", \"eg: Doctor Who, Dr. Who, Non-Medical Tv Show Doctor\")\n\t\t\t\t\t\t\t.off(\"click\");\n\t\t\t\t\t});\n\t\t\t\tquit = true;\n\t\t\t}\n\n\t\t\tif (quit) { return; }\n\n\t\t\tvar m_object = {};\n\t\t\tm_object.title = title;\n\t\t\tm_object.tags = tags;\n\t\t\tXKit.extensions.quick_tags.tag_array.push(m_object);\n\n\t\t\tXKit.storage.set(\"quick_tags\", \"user_tags\", JSON.stringify(XKit.extensions.quick_tags.tag_array));\n\n\t\t\tXKit.window.close();\n\t\t\tXKit.extensions.xkit_preferences.restart_extension(\"quick_tags\");\n\t\t\t$('.xkit-extension.selected[data-extension-id=\"quick_tags\"]').click();\n\t\t});\n\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":" data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAADk9JREFUeAHNW0mPXFcVvq9c1W2TpImx27FJlAUKhE2kCBQiAWGBWCMxZACEIsQkQiAOCwI/AIkNEkKsICDYMG3YZIMUxLQACUhwnFEMYkwCcTzEdtrtqq7i+8453733vVfVbsdD+lr1zrlnPueee9971eXmzN/umKVZskGkwT8RGlDJIpw/uhKSDoMN+DPghBzCCW209c/t/8LkLRGFSP/AhwxqFgE1CHQ2myLeCBgyBbOIWxfqeY5KqA0tXMqElskDz/6I45/45jZsypF4nCs2Qo5evHDvNoydbbcWlDLOtjiGCoo04Qow5BYCGmLtskHMS/+QGaoBTa4l78nnAMGjaBPybtkoYaiyWSgVJtlsoOJ5rCQwZg7GYx3gZXOCGIRdc5Yw6DlhWy12TXFYsBCsKmQFhrLkfQXZRW7R+bU9WXPYXfHZ1LuV0AbtEA97tEpNt+5+5VPyQyJqKRctKj0DYUxhuW6Z0a/lGx67CXflVQhB12dBKFls5foKEZSQSVOBhWAQXpDSX2GQIpUu87YOKA7duYSUmqDZ5kT2hIeAAVxiaoho0OrW1wVpKxQUmyBVWjgJGNl+B7e4qJDjC7w2Yhb8wrwHRMmXjKCJaCKBLpSyCYch0Wpd8acROmGNi9+DIW8p17gEaxpwmwYkbvEKGrMkGmQcgthHuWQy7NBOaLPnys3MjzhCGzytyNKpJdzFwRAiSFKFd/hk+TYw676gkMkLmjzWGSCH37Kr+LvxmFTxp1y15ak/dOMS4oy4U+VYkDzHXZ5bzQL2eDKuLeV2ij1urfoQoi1L2gL1hEgoCyLc/cn31uPBgqHTdMhKT5D52G0w/DOcQAU5LbhXXEFFmcCWQUsQM50h3i/kFxutDrBOAi86iiurVY1ANvXvzxDy4hosaB6G037wgDBW3XZJxSGIACMDWw3g2YhLR4ZNGux+fxqM9rhBKbnt87tunE7TtSfTxulHvGuyw3Zw1l11fN0EoOc19AzVXVpxa3kYUcv7UrBdPWHax20QRqJCli8dRjp1izc7b0hL+z56fomeQ3r84k/TxgvfLxW3AHJ8OS7Fx8VS05hpyvMwjYDVeYKUqXHm6sMh7dpzgDy12SEaxKZx0bBwUcBoz/sQ0zRNWAQbnQr0vDAYyZApnBCDGaltOBdOOG9AfqinqXn8RbTZbJImR36cxsceTs3o6jRavTsNr7x5kfim9NHeDxjfiqClDjg3XfCUDlfXShDywsXXwgqaPIqhruBWsecAbw1uBbp0SLz7USbj/34Pq/aj1EyOpLT2lzT+11fSdHxU7POGLMJw7922ghYD48CnqaDhiE2QcQonNLyC1O99GBnpecxYACSKfWS3C/J52wC0KtIghWWMOMbGqT8Y9IJRZy1NTz1itFd6Ga2iCOgk+lPhgRlOaDj3exUvfTFejRwP4pWNGpquFaDYGShZd8zbEMSwL3VyCsoJYTO61hwoWLOxfF0t8orw0eoHrQgM1IOlGSbDmHxRBBWnoOIUpCZ5HBbfAjhoV4iO6NxHy0B1kIz2fSQ1wz25CDv23pV2vObNUrsgyCKM9n0MQVtqGXohVBh1RjteqxK9R8UsF+B1jl186LeRSNWSBx5FgKolQ1gXZseuN6Sdb/wWtsKfUrN0IO3Yef0FJd1VZhGYMM8af+zVUiCe6j7YfTRntHoaNpvMgwsX+UQ6NO0DvNZt0ItOpRAwi8AJpRSsZrCchiu3xuzig9Hq7eZy8vx3Ad25nhK9OxiSP9To3YCBu2wkQGBFiPjqfEgCb9MHIVPLiWckrF16sIQiMIcxiuAjDuUoiGjBtC71BVfB2vmbXJUGa+NficX+ZpvrcZLCXnE6RRiVohxeDmidAN/j57/TjgfOudqKkbEodj0KO41XH738uAWsWVgKDOEGMXcFh2pDE7zMl6V9t5vHCYrgo16NCo88rO0hyKl3hGsZztt8SbD7Nhj2BWCBNTZLMi7eZYZWBMTATiiL0dnz82JaXB+THqhanKkwhIajVIKZaWqvzmXpmjvSaP/HFzrXnYqwxrOCFpEwcDsEUVIbKpYgpLwDKCDlbO3VQVgEjvFzD+KqV1tCDiwXX2G1WopZ0PKgXEkYHUBCDAkS1rj42wRaJxxAJ1jsjBWBGV5BopFD7giKWm5Fzp4D9L26naLxXTtE/L0A20DvCqRtl7F0zZ3MJp199sHWoWbxReK2fYEbNIbfM9QhzNv/MBJZ+XM0XxdLS4m2XRKv41jaf5ct/ARF4PANq4MRaXLxWAAd+ywMqxEFok48BxClAfLnnbGgnX3OZLbbZRlF4Bj/59vWCZ6wR2lvtnYsaH+AXqGsi70OuziZwSXEx/eLw9nZ/6Xxiw9n0e2EsAijaz8R4TPediolVmVP6Hj8YSSSJVlFoFZHfv0fX0uTlx4lZ9uN5f0fsiJYYKoAt7LhhLGtBSHIXP05IBTsywXg5dBz3CuBakzPpDN//vL2LsLrP8nU4sNyaBWJBh75cm4FYCX4sf0fkDiHoE14ma1v7yIcYCd8ypNFLpb0Amgd4InH4WgJQ4d58oN2yZA4bhtG21hLa888gE64sK/B4OKSjGUW4bpP26LSgRa4C3lD8C9Fo0IkQNruFI57YVSRmtagE9ae+dL2LgIKYfnguNetUJCpktc6BG11QXRYvh9k4vyoW1RJboe1p7dvEYZXv9NiVj6es55xPB88CJW/rnqC2PXsCCYcV4ftIhjfdM+gCA+kXTd+NQ1f+1bTqC8bxx/F2flsTTJ8tPrulHbs6tEvFmG2cSat//Obbk4JdN4d+Fzoj8KRKqWx/iUGFsKX3mjiCJLnxUIRsB3mFWH93z9M4yO/wTfJK253tpGm60fSytsfSoNdF/5Ncgm2YEz+5afvT9OTT0T8wVMuhBjM1b4VRhbMpPexYoCuf67C9ONDQJwQt0h2wuTEH0lsjaUD700r7/iZfa665Qct3sWeWPJPMfnHYTpii3h9sZANc4p8B/ptw7xAolDWBIbDnqDZxhYQ5D5LM1T+qS/OLcI8+xeb5skfTBsnD3uCLAETjaFcCYW3OqD7IKQHIkFmazJRUS9QuWuQ17AIT6IIx/udoEAuBWTyp5+8L228dBjmmTQ+lnzAatVbHeDCComKHGGgA72apYVkSJAvF8SbxO3AIvif0Nzmpbta8k98Ps1OedtzYfjxWBwSZ16CxDk2/z6AySArV4K0Z+iQ2jQqGrYAf6JnTsz9qXT68ME0WNqfhlf37w6To7/DH1X2UKE1Rq97G+4OV7Rom02U/NSSd8kcL6Y13rUz5/sAr0qtVONWVVgh5KC0aNPxBATcWAZLxvMLirKGW+DuWwoNBRvgjnDmr98oNGD0M5ucTCu3/iQNrnxTi7doYsk//jn8YZYr3x9aPD380Idokm79XUDERdC+OWJH+FJ7EzFwU5ilndd/NO284eAidaM3S6tp5V2/7skw+RO/uq1HX0Sw5A8j+dNInp3IoW4kxNg8XorbcwCUQ79boY49eqBVh/laugCkyzJy8qd44FVDhRAkq8ZbPUsezgDeDrSGnjDbxI1SV0UgpYGw07xiXb5rXdorkz91+F7c5w/n2BbF243EtysPaR/M2w7BTLC/mrDFPcHOgudiqqj2FSMmBmFz/fmH8LOZ33f8wsnuW9OuG+4z+vTs0XT6sYM4K8x1kZ3iDDnH8JW/N82YPGTttovsF8XrcXl8Mq1cOSfe+Z0gOyaSDwHOaiVM8/At4zpNg/eqybE0nRwHXzb8vBiu3JR1Gvy+aOPEY/jF2XvSjqtuzHQio723pWZ5tUXTxFf+s2ma7/PgMHluydwCpOET7tXZgrJVQ/9WWBkqWxnoQLdceVD1GUD+rQnNyyAxe+GsfRo+PvbbtHTdneiO6g7Rk3JCTh6FqxNE+r4lI2MLH5cIuxduzzzDNimuulZe0KRlirDGw5RkpT8X9tw6YbqO54QvoGm6W6Ytb8k/dk+anjgEhuL0eLxbWQT/MAejKQ6aIp6HcNcnz5ZnqwbcIW2GI7Mvo9nL1hCLYQ1FuH9hEXLyL2HltzB68SlOFoEfDkFD422Q90N7QECFBZGiCQtSkYeKoB0wQcsFwdyCoBPh5nXeJYLCL8z4xDg52u4EJn/y0GdwXhwym7IrmO2HH9K58QR9EzoNVHKMJ2hyzPv4L95C7twhIcJ5w4pFxzwDMLryzse2He7Gdx/x7j8dp4m9pw9wJ+AhFvqDnemKm75uZ4Kt/KF7kDx+gwTb8i98c3/niqfwGXNz7Oc3g0KUw2oYEICJMzkVQHgk3JFmjWHBjiYaw6h0nVCuYEmWkGOWRmn5+g+n8Qu/TNOX/158h79+PKZkbqjft+esvHy9fMC3AlAbo5Nfz59Lbf16vvbOV/5ckWzFXus2qKdcg2Fdi2/TjsVeB0BYbUp5qzwuZQUKbZ49e6CBj/xgQxtZGZOO/94KdQKaxU/qHLoxa3cZhXzncczCWnyRYkDFJugdj5l3tGeroGQ1C3tARpZdTmpcutle2K5latyMlQsfknxB7D3dtwhpOUArAHau873A9YMVjNcrKpyQQweYDqn8I0arvNeB8Sl+Q1iAIHT1u/Y7X+KikxAPbBNydPd8kL3w5NNP/aMo6lMxBJm3bwEjluLXRc3JFT3pu7E6wbBTAB3SpQesYmzVvtlx1WJyE6x7CKtY+T95WRwlHppqfR9gAYKvAPtbrt1SHks3wnouXFCr5+vQt8+Oo3/JE5aAvUM8BvrutTiURZvHJ02LQYz2/AyQw9qvREETmUolOM66Q5IOPXS1He04rhbObqUGc6IVyzUzqBWpDk6xCVK6xotN2eHrMDxme1ZBzLgMHIyGeETV3aM0LportK+yK2gmaxHZXuCvFnVdt5Qjhl77bbAdb1e/O6e1/wO1MOihEAHfcwAAAABJRU5ErkJggg==\n","css":"#xkit-quick-tags-window {\n\n\twidth: 210px;\n\tbackground: rgb(255,255,255);\n\tposition: absolute;\n\tz-index: 100000;\n\ttop:30px; left:30px;\n\tbox-shadow: 0px 0px 4px 2px rgba(0,0,0,0.10);\n\tborder-radius: 6px;\n\tdisplay: none;\n\n}\n\n.xkit-quick-tags-cp-tag:first-child .xkit-quick-tags-cp-up { display: none; }\n.xkit-quick-tags-cp-tag:last-child .xkit-quick-tags-cp-down { display: none; }\n\n.xkit-quick-tags-cp-up {\n\tposition: absolute;\n\ttop: 10px;\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAANCAYAAAB2HjRBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzNEMTNERDg4MDY1MTFFM0I0MDc4NDA0OTRFNEYyQjQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzNEMTNERDk4MDY1MTFFM0I0MDc4NDA0OTRFNEYyQjQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3M0QxM0RENjgwNjUxMUUzQjQwNzg0MDQ5NEU0RjJCNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3M0QxM0RENzgwNjUxMUUzQjQwNzg0MDQ5NEU0RjJCNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuwVTIsAAACFSURBVHjaYvz//z8DuYCJgRIAshmH7WZAfB6IpXHqwaEZpPEDSB0Q30M3AJ9mZI3/sRmASzM2jRgGYNOsi6bxJBAbAPETNAOEsGlOQ9PID3WNIpoBxjA92KLqFBC7AfFHKP8+ENsC8VNC8YyukQGvAUjOtkRyKi4A8oIiTA/jgCVPgAADABzFgQttkQ0QAAAAAElFTkSuQmCC);\n\tleft: 11px;\n\twidth: 15px;\n\theight: 13px;\n\topacity: 0.35;\n\tcursor: pointer;\n}\n\n.xkit-quick-tags-cp-down {\n\tposition: absolute;\n\tbottom: 10px;\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAANCAYAAAB2HjRBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzNEMTNERDQ4MDY1MTFFM0I0MDc4NDA0OTRFNEYyQjQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzNEMTNERDU4MDY1MTFFM0I0MDc4NDA0OTRFNEYyQjQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3M0QxM0REMjgwNjUxMUUzQjQwNzg0MDQ5NEU0RjJCNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3M0QxM0REMzgwNjUxMUUzQjQwNzg0MDQ5NEU0RjJCNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqN5tMkAAACTSURBVHjaYvr//z8DuZiJgQIA18zIyKgIxQx4MD8QW2JoBgIhID4MxIo4LOIH4l1ArItNMwhI4zAAptEMq7PxGIBVIxjAQg7q7HsgISh+AsQGQHwSSewDyNlwPUiaYbYiG/AfTaMZioVomnEZ8AHZ2fg0oxvwAd2/hDTDDDiPLaBgeliQBdDAUyA2JCqFkQMAAgwAYE6LqrONWvwAAAAASUVORK5CYII=);\n\tleft: 11px;\n\twidth: 15px;\n\theight: 13px;\n\topacity: 0.35;\n\tcursor: pointer;\n}\n\n.xkit-quick-tags-cp-up:hover,\n.xkit-quick-tags-cp-down:hover {\n\n\topacity: 1;\n\n}\n\n.xkit-quick-tags-cp-tag {\n\tborder-bottom: 1px dotted rgb(190,190,190);\n\tpadding: 9px 16px 9px 35px;\n\tcolor: rgb(100,100,100);\n\tfont-size: 12px;\n\tposition: relative;\n\tcursor: pointer;\n}\n\n.xkit-quick-tags-cp-tag:hover {\n\tbackground: rgb(230,239,247);\n}\n\n.xkit-quick-tags-cp-tag .xkit-tag-title {\n\tfont-weight: bold;\n}\n\n\n.xkit-quick-tags-tag-delete {\n\tmargin-right: 10px;\n\tmargin-left: 4px;\n\tcolor: #AD074A;\n\tcursor: pointer;\n\tposition: absolute;\n\theight: 30px; line-height: 30px;\n\tleft: 15px; top: 50%;\n\tmargin-top: -15px;\n}\n\n.xkit-quick-tags-tag-delete:hover {\n\tcolor: #CC0857;\n}\n\n.xkit-quick-tags-cp-tag:last-child {\n\tborder-bottom: 0;\n}\n\n#xkit-quick-tags-user-tags {\n\theight: 110px;\n\tborder-radius: 3px 3px 0px 0px;\n}\n\n#xkit-quick-tags-user-tags.no-other-section{\n\tborder-radius: 5px;\n\theight: 140px;\n}\n\n#xkit-quick-tags-user-tags.no-scroll-needed {\n\theight: auto !important;\n\toverflow: hidden;\n}\n\n#xkit-quick-tags-window .xkit-no-tags {\n\n\tbackground: rgba(228,232,238,1);\n\tcolor: #7a7f8e;\n\tborder-bottom: 1px solid #abafbc;\n\tpadding: 10px;\n\ttext-align: center;\n\tfont-size: 13px;\n\n}\n\n#xkit-quick-tags-window.no-other-section .xkit-no-tags {\n\n\tborder-bottom: 0;\n\n}\n\n#xkit-quick-tags-window .xkit-tag-other,\n#xkit-quick-tags-window .xkit-tag,\n#xkit-quick-tags-window .xkit-tag-add {\n\n\tbackground: rgb(255,255,255);\n\tcolor: #444444;\n\tfont-size: 13px;\n\tpadding: 5px 9px 5px 9px;\n\tborder-bottom: 1.5px solid #f3f3f3;\n\tcursor: pointer;\n\n}\n\n#x1cpostage_quick_tags .xkit-tag,\n#x1cpostage_quick_tags .xkit-tag-add {\n\n\tbackground: rgba(255,255,255,0.86);\n\tcolor: #7a7f8e;\n\tfont-size: 12px;\n\tpadding: 5px 9px 5px 9px;\n\tmargin-top: 1px;\n\tcursor: pointer;\n\n}\n\n#x1cpostage_quick_tags .xkit-tag-add,\n#xkit-quick-tags-window .xkit-tag-add {\n\ttext-align: center;\n}\n\n#x1cpostage_quick_tags.xkit-no-reverse-ui .xkit-tag,\n#x1cpostage_quick_tags.xkit-no-reverse-ui .xkit-tag-add {\n\n\tborder-top: 0;\n\tborder-bottom: 1px solid #abafbc;\n\n}\n\n#x1cpostage_quick_tags .xkit-tag:hover,\n#x1cpostage_quick_tags .xkit-tag-add:hover,\n#xkit-quick-tags-window .xkit-tag:hover,\n#xkit-quick-tags-window .xkit-tag-add:hover {\n\n\tbackground-color: rgba(230,239,248,1);\n\tcolor: #696d7a;\n\n}\n\n#xkit-quick-tags-window .xkit-tag-other {\n\n\tbackground-color: #f2f2f2 !important;\n\tbackground-image: none;\n\tborder-top: 1px solid rgb(231,231,231);\n\tpadding: 7px 7px 10px 7px;\n\tcursor: default;\n\tfont-size: 12px;\n\tcolor: #444444 !important;\n\tborder-bottom: 0;\n\n}\n\n#xkit-tag-input {\n\n\tbackground-color: #f2f2f2 !important;\n\twidth: 100%;\n\tborder: 1px solid rgb(242,242,242);\n\tfont-size: 13px;\n\tmargin-top: 4px;\n\n}\n\n#xkit-quick-tags-window .xkit-tag-data {\n\n\tfont-size: 11px;\n\tcolor: #a1a1a1;\n\twidth: 100%;\n\theight: 14px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\n}\n\n/*#xkit-quick-tags-window.no-other-section .xkit-tag:nth-last-child(2) {\n\n\tborder-bottom: 0 !important;\n\n}*/\n\n#xkit-quick-tags-window .xkit-tag:last-child {\n\n\tborder: 0;\n\n}\n\n#xkit-quick-tags-window .xkit-tag-other .xkit-tag-name,\n#xkit-quick-tags-window .xkit-tag .xkit-tag-name {\n\n\tfont-weight: bold;\n\n}\n\n#xkit-quick-tags-window *{\n\tbox-sizing:border-box;\n\t-moz-box-sizing:border-box; /* Firefox */\n\t-webkit-box-sizing:border-box; /* Safari */\n}\n\n#quick-tags-toolbar {\n\tbackground: rgb(245,245,245);\n\tpadding: 3px 15px;\n\tborder-bottom: 1px solid rgb(190,190,190);\n}\n\n#xkit-quick-tags-none {\n\tpadding: 15px;\n\tcolor: rgb(150,150,150);\n\tfont-size: 13px;\n\tline-height: 22px;\n\ttext-align: center;\n}\n\n.xkit-interface-control-button.xkit-quick-tags:after {\n\topacity: 1 !important;\n}\n\n.xkit-quick-tags-cp-info {\n padding: 0 1em;\n font-size: 14px;\n line-height: 1.5;\n color: rgb(80,80,80);\n}\n\n.xkit-quick-tags-cp-info button {\n margin: 0 0 .75em 0;\n}\n","title":"Quick Tags","description":"Quickly add tags to posts","developer":"New-XKit","version":"0.6.9","details":"Allows you to create tag bundles and add tags to posts without leaving the dashboard.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/read_more_now.json b/Extensions/dist/read_more_now.json new file mode 100644 index 000000000..350c47c24 --- /dev/null +++ b/Extensions/dist/read_more_now.json @@ -0,0 +1 @@ +{"id":"read_more_now","script":"//* TITLE Read More Now **//\n//* VERSION 2.0.3 **//\n//* DESCRIPTION Read Mores in your dash **//\n//* DETAILS This extension allows you to read "Keep Reading" posts without leaving your dash. Just click on the "Read More Now!" button on posts and XKit will automatically load and display the post on your dashboard. **//\n//* DEVELOPER New-XKit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.read_more_now = new Object({\n\n\trunning: false,\n\tcache: {},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (!XKit.interface.is_tumblr_page()) {\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.post_listener.add(\"read_more_now\", this.find_links);\n\t\tthis.find_links();\n\n\t\t$(document).on(\"click\", \".xreadmore:not(.disabled)\", function() {\n\t\t\tXKit.extensions.read_more_now.add_content($(this));\n\t\t});\n\t},\n\n\tfind_links: function() {\n\t\t$(\"a.tmblr-truncated-link:not(.xreadmore-done)\")\n\t\t\t.not(\"[contenteditable] a\")\n\t\t\t.addClass(\"xreadmore-done\")\n\t\t\t.each(function() {\n\t\t\t\tXKit.extensions.read_more_now.add_button($(this));\n\t\t\t});\n\t},\n\n\tadd_button: function($link) {\n\t\tconst href = $link.attr(\"href\");\n\t\tlet url;\n\t\tlet postID;\n\n\t\tif (!href.includes(\"t.umblr.com\")) {\n\t\t\t[url, /* discard */, postID] = href.split(\"://\")[1].split(\"/\");\n\t\t} else {\n\t\t\tlet $user_link = $link.parents(\".reblog-list-item\").find(\".reblog-tumblelog-name\");\n\t\t\tif (!$user_link.hasClass(\"inactive\") && $user_link.attr(\"data-peepr\")) {\n\t\t\t\ttry {\n\t\t\t\t\tlet data = JSON.parse($user_link.attr(\"data-peepr\"));\n\t\t\t\t\turl = data.tumblelog;\n\t\t\t\t\tpostID = data.postId;\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tthis.get_username(url).then(username =>\n\t\t\t$link.parent().after(\n\t\t\t\t`
      \n\t\t\t\t\tRead More Now!\n\t\t\t\t
      `\n\t\t\t)\n\t\t);\n\t},\n\n\tget_username: url => {\n\t\tif (url.includes(\".tumblr.com\") || !url.includes(\".\")) {\n\t\t\tlet [username] = url.split(\".\");\n\t\t\treturn Promise.resolve(username);\n\t\t} else {\n\t\t\treturn fetch(`https://www.tumblr.com/api/v2/blog/${url}/info?api_key=${XKit.api_key}`)\n\t\t\t\t.then(response => response.json())\n\t\t\t\t.then(responseData => responseData.response.blog.name);\n\t\t}\n\t},\n\n\tadd_content: function($button) {\n\t\t$button.addClass(\"disabled\");\n\t\tlet username = $button.attr(\"xreadmore-url\");\n\t\tlet postID = $button.attr(\"xreadmore-id\");\n\n\t\tif (this.cache[postID] !== undefined) {\n\t\t\t$button\n\t\t\t\t.attr(\"style\", \"display: none !important\")\n\t\t\t\t.after(this.cache[postID]);\n\t\t} else {\n\t\t\t$button.text(\"Loading...\");\n\n\t\t\tXKit.svc.indash_blog({\n\t\t\t\ttumblelog_name_or_id: username,\n\t\t\t\tpost_id: postID,\n\t\t\t\tlimit: 1,\n\t\t\t\tshould_bypass_safemode: true,\n\t\t\t\tshould_bypass_tagfiltering: true\n\t\t\t})\n\t\t\t\t.then(response => {\n\t\t\t\t\tlet responseData = response.json().response;\n\t\t\t\t\tif (responseData.post_not_found_message) {\n\t\t\t\t\t\tthrow 404;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet comment = responseData.posts[0].reblog.comment;\n\t\t\t\t\tlet readmore = comment.substring(comment.indexOf(\"[[MORE]]\") + 8);\n\t\t\t\t\tthis.cache[postID] = readmore;\n\t\t\t\t\t$button\n\t\t\t\t\t\t.attr(\"style\", \"display: none !important\")\n\t\t\t\t\t\t.after(readmore);\n\t\t\t\t})\n\t\t\t\t.catch(() =>\n\t\t\t\t\t$button.text(\"Couldn't load! Maybe it's deleted?\")\n\t\t\t\t);\n\t\t}\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\t$(document).off(\"click\", \".xreadmore:not(.disabled)\");\n\t\tXKit.post_listener.remove(\"read_more_now\");\n\t\t$(\".xreadmore-done\").removeClass(\"xreadmore-done\");\n\t\t$(\".xreadmore, .xreadmore ~ *\").remove();\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","title":"Read More Now","description":"Read Mores in your dash","developer":"New-XKit","version":"2.0.3","details":"This extension allows you to read "Keep Reading" posts without leaving your dash. Just click on the "Read More Now!" button on posts and XKit will automatically load and display the post on your dashboard.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/read_posts.json b/Extensions/dist/read_posts.json new file mode 100644 index 000000000..d10cbdfdf --- /dev/null +++ b/Extensions/dist/read_posts.json @@ -0,0 +1 @@ +{"id":"read_posts","script":"//* TITLE Read Posts **//\n//* VERSION 0.2.4 **//\n//* DESCRIPTION Dim old posts **//\n//* DETAILS Dims the posts on the dashboard that you've already seen on previous page loads. **//\n//* DEVELOPER jesskay **//\n//* FRAME false **//\n//* BETA true **//\n\nXKit.extensions.read_posts = new Object({\n\n\trunning: false,\n\n\tpreferences: {\n\t\t\"dim_avatars_only\": {\n\t\t\ttext: \"Dim only the avatars on read posts.\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\n\tundimmed_post: null,\n\tcurrently_undimming: false,\n\n\tpost_selector: \"[data-id]\",\n\n\trun: function() {\n\t\tXKit.tools.init_css('read_posts');\n\t\tXKit.post_listener.add('read_posts_process', this.process_posts);\n\t\tthis.process_posts();\n\t\t$(document).on(\"click\", `${XKit.extensions.read_posts.post_selector} footer`, XKit.extensions.read_posts.undim);\n\t\t$(document).on(\"click\", XKit.extensions.read_posts.redim);\n\n\t\tthis.running = true;\n\t},\n\n\tredim: function(e) {\n\t\t// This is less broken and meh.\n\t\tif (!XKit.extensions.read_posts.undimmed_post || XKit.extensions.read_posts.currently_undimming) {\n\t\t //we don't currently have a post that needs redimming\n\t\t XKit.extensions.read_posts.currently_undimming = false;\n\t\t return;\n\t\t}\n\t\tvar m_obj = $(XKit.extensions.read_posts.undimmed_post)[0];\n\t\t$(m_obj).addClass(\"read_posts_read\");\n\t\tif (XKit.extensions.read_posts.preferences.dim_avatars_only.value === true) {\n\t\t\t$(m_obj).addClass('read_posts_avatar_only');\n\t\t}\n\t\tXKit.extensions.read_posts.undimmed_post = null;\n\t\tXKit.extensions.read_posts.currently_undimming = false;\n\t},\n\n\tundim: function(e) {\n\t\tXKit.extensions.read_posts.currently_undimming = true;\n\t\tvar m_obj = $(e.target)[0];\n\t\tif (!m_obj.hasAttribute(\"data-id\")) {\n\t\t\tm_obj = $(m_obj).parentsUntil(XKit.extensions.read_posts.post_selector).parent();\n\t\t}\n\t\tif (!m_obj.hasClass(\"read_posts_read\")) {\n\t\t\treturn;\n\t\t} else {\n\t\t\tXKit.extensions.read_posts.undimmed_post = m_obj;\n\t\t\t$(m_obj).removeClass(\"read_posts_read\");\n\t\t\t$(m_obj).removeClass('read_posts_avatar_only');\n\t\t}\n\t},\n\n\tmark_post_read: function(post_id) {\n\t\tvar read_posts = JSON.parse(XKit.storage.get('read_posts', 'read_posts', '[]'));\n\n\t\tif (XKit.storage.quota('read_posts') <= (post_id.length + 50)) {\n\t\t\t/* drop oldest ~33.3% of posts to make room for new */\n\t\t\tread_posts = read_posts.slice(Math.round(read_posts.length / 2));\n\t\t}\n\n\t\tread_posts.push(post_id);\n\t\tXKit.storage.set('read_posts', 'read_posts', JSON.stringify(read_posts));\n\t},\n\n\tpost_is_read: function(post_id) {\n\t\tvar read_posts = JSON.parse(XKit.storage.get('read_posts', 'read_posts', '[]'));\n\t\tif (read_posts.indexOf(post_id) > -1) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t},\n\n\tprocess_posts: async function() {\n\t\tif (!XKit.interface.where().dashboard) {\n\t\t\treturn; /* don't run on non-dashboard, since that can be in the background of a new post page */\n\t\t}\n\n\t\tawait XKit.css_map.getCssMap();\n\t\tvar avatarSelector = XKit.css_map.keyToCss(\"avatar\");\n\n\t\t$('#base-container [data-id]').not('.read_posts_done').not(\".xkit_view_on_dash_post\").each(function(index) {\n\t\t\tvar post_id = $(this).data('id');\n\n\t\t\tif (XKit.extensions.read_posts.post_is_read(post_id)) {\n\t\t\t\t$(this).addClass('read_posts_read');\n\t\t\t\tif (XKit.extensions.read_posts.preferences.dim_avatars_only.value === true) {\n\t\t\t\t\t$(this).addClass('read_posts_avatar_only');\n\n\t\t\t\t\t$(this).find(avatarSelector).addClass(\"read_posts_post_avatar\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tXKit.extensions.read_posts.mark_post_read(post_id);\n\t\t\t}\n\n\t\t\t$(this).addClass('read_posts_done');\n\t\t});\n\t},\n\n\tremove_classes: function() {\n\t\t$(`${XKit.extensions.read_posts.post_selector}.read_posts_done`).removeClass('read_posts_done');\n\t\t$(`${XKit.extensions.read_posts.post_selector}.read_posts_read`).removeClass('read_posts_read');\n\t\t$(`${XKit.extensions.read_posts.post_selector}.read_posts_avatar_only`).removeClass('read_posts_avatar_only');\n\t\t$(`${XKit.extensions.read_posts.post_selector}.read_posts_post_avatars`).removeClass('read_posts_post_avatar');\n\t},\n\n\tdestroy: function() {\n\t\tthis.remove_classes();\n\t\tXKit.tools.remove_css('read_posts');\n\t\tXKit.post_listener.remove('read_posts_process');\n\t\t$(\"document\").off(\"click\", `${XKit.extensions.read_posts.post_selector} footer`, XKit.extensions.read_posts.undim);\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTlBRjlCQkZFRUU0MTFFMjlDQzREN0VDNzIxQUU5MkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTlBRjlCQzBFRUU0MTFFMjlDQzREN0VDNzIxQUU5MkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5OUFGOUJCREVFRTQxMUUyOUNDNEQ3RUM3MjFBRTkyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5OUFGOUJCRUVFRTQxMUUyOUNDNEQ3RUM3MjFBRTkyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pg6tMywAAASvSURBVHjarFbPa11VEJ5z7q1gW/oiQqEuTMCqiIJBXChdJIjgwk0WdZ+dKyH4DyRZ6TLxDyhxKSgJiCguTIIiCCJxIRSibSxawdULiKjvnhm/b+a8xyO9CUI8ae87P+bMfPPjzEx659bHKYkVs2SqYvhTrrBQk4KPaSlqyu2uiFjXabKudNZxsxQQa4cr/r9gD1uCS05vrQhuJnyw4exBQSHgjI2Eff4K94RLguAOIEj9OJy4KFKCCScgF2nVwUIA1+YX+ZGUEq/hIgXiF+jUT5ODCVVDdh1GjKkQgjoiGqQVGoG3nInf4ITIY0VIxTkblfWpOHIdy+CMepAprcHrkrRQSlucnegYul9WDbGuQodLdENAEA3TkC95lhBEnQHGMVBreCWYtS7dbQSh4QN36PiHzofuOGMQuNxOKxg3EMSUwGKSCVtperc32bU0mViFBaiMHR2DMrdIWEs7d204QihGqsnc/sSuHnQZ7BIvcVtpInH1IOSxq4Mb8089OrgcQWNWg0em5nVSjR1xFASc3P99+OlX3/5weM8DMExEWzD8rl0dvHnz1abJco7xxOPXbrzw9Nvv3jq8+xtdJ5ZD/1FXXnru+jm5x8g5v/HaywgKTfR36+EhXTd65MrFM67t7+9vbGwMh0PMZ2ZmVlZWFhYWTiO+cukinJOl4UNjjlAI6NSsl/r4+Hh5eXlnZ2d6E8ulpaWtra3BYNB3SRkNmmGcbJ49Im56uS8uLp7gPpGBIxA8eBSPNd57RmwhJzG++iQA5sHBAb6Yz83NTR9BrclRj4yCMOJfRlZk8is9Gqyvr+/t7c3Pz8MUWGI+zW5tbQ1H2ARZnxIamSQXDg8l6fcBXApDwxrgCN/GJpazs7M4Os3PnqDxOhGmTDyQ0KPB6uoqGAVGWPzo6AjL4I5l6Ic5yE5y95E8ZbRdxyRTRv0+CE8CO+a7u7uT/c3NzTBRr/8jjNSzSxt5r6TSayEYBzDhT7CDJ8IHoc2ZYSp5XJ/gZCRk479TfAAW29vb4e0DH+FbbJ7GnYXNygjG8YeGTJQj950xFnz894SBd5Aa6tDS0yy0o8lD/vCTL05Q33z9lV4uE0oQxLxSWgLgBjUEPsAjQ/1Fu4BsIf/T+GfURc3JqAdRBVGIDu/ef/6Z62fgfXBMU07Pb//0M4ojKyBSBdqajlrYB599+ePRL+eHf+fer+9/9LkXOBQ3ti2eNbL9+dffb62/9+KzTw4uXxJvY8blzGpgCwtImlQvi8ZpTORjePzH19/d1nyhaS+YNwEtmxk2LTnLQyWlb76/E7We3FRqr6HJH3rydqSU0USIJ4Sg8gKZUm7IvbVo0gwFR6PMKn3SNrl5WGrDyHSV2RehrbAmOaOo6tnbj5AXXZS3DqBLwFl3a+C3tVWMfgZSMvg2iVhSasyvKbOK5jgGgfdpmZiU2T5z1ZjjmFiTM+8N2+lMSrsXb0eT35faq6FFcRfIpM3wYqI21t2bIK1ZyJXxvoiTlvyxRCeTXbdwgHQVDh5kbEenaTkFQ6mYrD5bBkwJI7j7c+RStC21ySKDpJHBk3fC1XcW7GAmKpUULXBybxr30qQvqi3oZKlVoX8FGAB4yKy0qIHfjAAAAABJRU5ErkJggg==","css":".read_posts_read:not(.read_posts_avatar_only) {\n\topacity: 0.4;\n\ttransition: opacity 0.3s ease-in-out;\n}\n\n.read_posts_read.read_posts_avatar_only .read_posts_post_avatar img {\n\topacity: 0.4;\n\ttransition: opacity 0.3s ease-in-out;\n}\n\n.read_posts_read:hover {\n\topacity: 1.0;\n}\n\n.read_posts_read:hover .read_posts_post_avatar {\n\topacity: 1.0;\n}\n","title":"Read Posts","description":"Dim old posts","developer":"jesskay","version":"0.2.4","details":"Dims the posts on the dashboard that you've already seen on previous page loads.","frame":"false","beta":"true","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/retags.json b/Extensions/dist/retags.json new file mode 100644 index 000000000..0e47dfea6 --- /dev/null +++ b/Extensions/dist/retags.json @@ -0,0 +1 @@ +{"id":"retags","script":"//* TITLE Retags **//\n//* DEVELOPER new-xkit **//\n//* VERSION 1.2.9 **//\n//* DESCRIPTION Adds tags to reblog notes **//\n//* FRAME false **//\n//* SLOW false **//\n//* BETA false **//\n\nXKit.extensions.retags = {\n\trunning: false,\n\tapi_key: XKit.api_key,\n\tselectors: '.type_2,.type_8,.type_6,.reblog:not(.ui_avatar_link, .retags_has_processed),.is_reblog:not(.rollup),.is_reblog_naked,.notification_reblog,.is_reply,.is_answer,.is_user_mention,.notification_user_mention',\n\tblog_name: \"\",\n\n\tpreferences: {\n\t\t\"note\": {\n\t\t\ttext: \"Note\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t},\n\n\tcpanel: function(m_div) {\n\n\t\t$(m_div).append(`\n\t\t\t
      \n\t\t\t\tThis feature no longer works and has been replaced by Tumblr's native reblogs view, but it still functions on many blog pages.\n\t\t\t
      \n\t\t\t`);\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tXKit.tools.init_css(\"retags\");\n\t\ttry {\n\t\t\tthis.blog_name = $('body').data('new-root').split('/').pop();\n\t\t} catch (e) {}\n\t\tthis.add_toggle();\n\t\tthis.observer.observe($('body')[0], {\n\t\t\tchildList:true,\n\t\t\tsubtree:true\n\t\t});\n\t\tthis.tag(this.selectors);\n\t},\n\n\tobserver: new MutationObserver(function(ms) {\n\t\tvar notesProcessed = false;\n\t\tms.forEach(function(mutation) {\n\t\t\tvar $baseMutatedElements = $(mutation.addedNodes);\n\t\t\tvar activityNotes = $baseMutatedElements.find('.activity-notification');\n\t\t\tvar fallbackNotes = $baseMutatedElements.find('.note:not(.ui_post_badge)');\n\t\t\tif ($baseMutatedElements.hasClass('note-list')) {\n\t\t\t\t//remove existing retags items (if tabbing between popover views)\n\t\t\t\t$baseMutatedElements.find('.retags-wrapper').remove();\n\t\t\t\tvar elements = $baseMutatedElements.find('.post-activity-note');\n\t\t\t\tnotesProcessed = true;\n\t\t\t\tXKit.extensions.retags.tag_popover(elements.filter(XKit.extensions.retags.selectors));\n\t\t\t} else if ($baseMutatedElements.hasClass('post-activity-note') && !notesProcessed) {\n\t\t\t\tXKit.extensions.retags.tag_popover($baseMutatedElements.filter(XKit.extensions.retags.selectors));\n\t\t\t} else if (activityNotes.length > 0) {\n\t\t\t\tXKit.extensions.retags.tag(activityNotes.filter(XKit.extensions.retags.selectors));\n\t\t\t} else if (fallbackNotes.length > 0) {\n\t\t\t\tXKit.extensions.retags.tag(fallbackNotes.filter(XKit.extensions.retags.selectors));\n\t\t\t} else {\n\t\t\t\tXKit.extensions.retags.tag($baseMutatedElements.filter(XKit.extensions.retags.selectors));\n\t\t\t}\n\t\t});\n\t}),\n\n\ttag_popover: function(elements) {\n\t\t$(elements).each(function() {\n\t\t\tvar $element = $(this), retagClass, $target, host, id;\n\t\t\tif ($element.find('div.retags, p.note-added-tags').length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif ($element.is('.is_reply, .is_answer, .type_6')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// popover\n\t\t\tif ($element.hasClass('note-item')) {\n\t\t\t\tretagClass = 'with_commentary';\n\t\t\t\t$target = $element;\n\t\t\t\tvar peepr_data = $target.find('.note-text-link').data('peepr');\n\t\t\t\tif (peepr_data) {\n\t\t\t\t\thost = peepr_data.tumblelog.trim() + '.tumblr.com';\n\t\t\t\t\tid = peepr_data.postId.trim();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (host && id) {\n\t\t\t\tXKit.extensions.retags.request(host, id).then(function(tags) {\n\t\t\t\t\tXKit.extensions.retags.append_tag_popover($element, retagClass, $target, tags);\n\t\t\t\t}).fail(function(errorResponse) {\n\t\t\t\t\tvar tagError = 'ERROR: ' + errorResponse.status;\n\t\t\t\t\tXKit.extensions.retags.append_tag_popover($element, retagClass, $target, tagError);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t},\n\n\tappend_tag_popover: function($element, retagClass, $target, data) {\n\t\tif (!data || !data.length) {\n\t\t\treturn;\n\t\t}\n\t\tvar retags = XKit.extensions.retags.build_tag_collection($element, retagClass, data);\n\t\tretags = \"
    15. \" + retags[0].outerHTML + \"
    16. \";\n\t\t$target.after(retags);\n\t},\n\n\ttag: function(elements) {\n\t\t$(elements).each(function() {\n\t\t\tvar $element = $(this).addClass(\"retags_has_processed\"), retagClass, $target, url, host, id;\n\t\t\tif ($element.find('div.retags').length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t//we don't need to put tags on a reply, but we also don't need to hide it\n\t\t\tif ($element.is('.is_reply, .is_answer, .type_6')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t//blog\n\t\t\tif ($element.hasClass('note')) {\n\t\t\t\t retagClass = 'with_commentary';\n\t\t\t\t $target = $element;\n\t\t\t\t url = $target.find('.action').data('post-url');\n\t\t\t// Activity (page/dropdown)\n\t\t\t} else if ($element.hasClass('activity-notification')) {\n\t\t\t\tretagClass = 'is_retags';\n\t\t\t\t$target = $element;\n\t\t\t\tvar glass = $($element).find('.activity-notification__glass');\n\t\t\t\turl = glass.attr('href');\n\t\t\t\t// dashboard\n\t\t\t} else if ($element.hasClass('notification') && !XKit.browser().mobile) {\n\t\t\t\t$target = $element.find('.notification_sentence');\n\t\t\t\turl = $target.find('.notification_target').attr('href');\n\t\t\t// mobile\n\t\t\t} else if ($element.hasClass('notification') && XKit.browser().mobile) {\n\t\t\t\tretagClass = 'is_retags';\n\t\t\t\t$target = $element.find('.notification-wrapper');\n\t\t\t\turl = $target.find('a').not('.notification-username').attr('href');\n\t\t\t}\n\t\t\tif (url) {\n\t\t\t\turl = url.split('/');\n\t\t\t\thost = url[2];\n\t\t\t\tid = url[4];\n\t\t\t\tXKit.extensions.retags.request(host, id).then(function(tags) {\n\t\t\t\t\tXKit.extensions.retags.append_tag($element, retagClass, $target, tags);\n\t\t\t\t}).fail(function(errorResponse) {\n\t\t\t\t\tvar tagError = 'ERROR: ' + errorResponse.status;\n\t\t\t\t\tXKit.extensions.retags.append_tag($element, retagClass, $target, tagError);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t},\n\n\tappend_tag: function($element, retagClass, $target, data) {\n\t\tvar retags = XKit.extensions.retags.build_tag_collection($element, retagClass, data);\n\t\t$target.append(retags);\n\t},\n\n\trequest: function(host, id) {\n\t\tvar url = 'https://api.tumblr.com/v2/blog/' + host + '/posts/info?id=' + id + '&api_key=' + XKit.extensions.retags.api_key;\n\t\tvar cache_label = 'post_' + id;\n\t\t//if it's already cached, get from cache\n\t\tif (XKit.storage.get('retags', cache_label, null) !== null) {\n\t\t\treturn $.Deferred().resolve(XKit.storage.get('retags', cache_label));\n\t\t}\n\t\t//otherwise make API call\n\t\tvar tags = [];\n\t\tvar deferred = $.Deferred();\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: 'GET',\n\t\t\turl: url,\n\t\t\tonload: function(data) {\n\t\t\t\ttags = JSON.parse(data.responseText).response.posts[0].tags;\n\t\t\t\tif (XKit.extensions.retags.should_clear_posts()) {\n\t\t\t\t\tXKit.extensions.retags.clear_old_posts();\n\t\t\t\t}\n\t\t\t\tXKit.storage.set('retags', cache_label, tags);\n\t\t\t\tdeferred.resolve(tags);\n\t\t\t},\n\t\t\tonerror: function(error) {\n\t\t\t\tdeferred.reject(error);\n\t\t\t}\n\t\t});\n\t\treturn deferred;\n\t},\n\n\tbuild_tag_collection: function($element, retagClass, tags) {\n\t\tif (tags.length) {\n\t\t\tvar $retags = $('
      ');\n\t\t\tif (typeof tags === 'string') {\n\t\t\t\t$retags.append(tags).addClass('error');\n\t\t\t} else {\n\t\t\t\ttags.forEach(function(tag) {\n\t\t\t\t\t$retags.append('#' + tag + '');\n\t\t\t\t});\n\t\t\t}\n\t\t\t$element.addClass(retagClass);\n\t\t\treturn $retags;\n\t\t}\n\t},\n\n\t/******* Cache **********/\n\n\t// The number of old posts that will be kept in the cache when it's cleared.\n\tPOST_CACHE_CLEAR_PRESERVED: 100,\n\t// The number of posts that are allowed to be cached before the cache is cleared.\n\tPOST_CACHE_CLEAR_THRESHOLD: 1000,\n\n\tcount_cached_posts: function() {\n\t\tvar cache = XKit.storage.get_all('retags');\n\t\treturn Object.keys(cache).filter(function(key) {\n\t\t\treturn key.match(/^post_[0-9]+$/);\n\t\t}).length;\n\t},\n\n\tshould_clear_posts: function() {\n\t\treturn XKit.extensions.retags.count_cached_posts() > XKit.extensions.retags.POST_CACHE_CLEAR_THRESHOLD || XKit.storage.quota('retags') < 100;\n\t},\n\n\tclear_old_posts: function() {\n\t\t// There's no API call to delete specific keys from the storage, so we'll\n\t\t// clear all of them and then restore the ones we want to keep.\n\t\tvar cache = XKit.storage.get_all('retags');\n\t\tXKit.storage.clear('retags');\n\n\t\t// We always want to keep every setting key, but we only want to keep\n\t\t// some of the cached posts, so we need to partition the keys like so.\n\t\tvar settingKeys = [], postIds = [];\n\t\tObject.keys(cache).forEach(function(key) {\n\t\t\tvar id_match;\n\t\t\tif ((id_match = key.match(/^post_([0-9]+)$/))) {\n\t\t\t\tpostIds.push(id_match[1]);\n\t\t\t} else {\n\t\t\t\tsettingKeys.push(key);\n\t\t\t}\n\t\t});\n\n\t\tpostIds.map(id => id.padStart(20, '0')).sort();\n\t\tpostIds = postIds.slice(-this.POST_CACHE_CLEAR_PRESERVED);\n\t\tpostIds.forEach(function(id) {\n\t\t\tconst idWithoutPadding = id.match(/^0*(\\d+)/)[1];\n\t\t\tsettingKeys.push('post_' + idWithoutPadding);\n\t\t});\n\n\t\t// And finally write back to storage!\n\t\tsettingKeys.forEach(function(key) {\n\t\t\tXKit.storage.set('retags', key, cache[key].value);\n\t\t});\n\t},\n\n\t//********** Activity Page Toggle ********/\n\n\tadd_toggle: function() {\n\t\tvar toggle = 'toggle_' + this.blog_name;\n\t\tif (XKit.browser().mobile) {\n\t\t\tthis.html_toggle.appendTo('.primary-nav');\n\t\t\tXKit.tools.add_css('label.retags .binary_switch_label {font-size:15px; color:white; padding-bottom:15px; }', 'retags_mobile_label');\n\t\t} else {\n\t\t\tthis.html_toggle.appendTo('.ui_notes_switcher .part-toggle');\n\t\t}\n\t\t$('#retags-toggle').change(function() {\n\t\t\tif ($(this).prop('checked')) {\n\t\t\t\tXKit.storage.set('retags', toggle, 'true');\n\t\t\t\tXKit.extensions.retags.css_toggle.appendTo('head');\n\t\t\t\tif (XKit.browser().mobile) {\n\t\t\t\t\tXKit.extensions.retags.mobile_toggle.appendTo('head');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tXKit.storage.set('retags', toggle, 'false');\n\t\t\t\tXKit.extensions.retags.css_toggle.detach();\n\t\t\t}\n\t\t});\n\t\tif (XKit.storage.get('retags', toggle) === 'true') {\n\t\t\t$('#retags-toggle').click();\n\t\t}\n\t},\n\n\tcss_toggle:\n\t$(''),\n\n\tmobile_toggle:\n\t$(''),\n\n\thtml_toggle:\n\t$(''),\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.tools.remove_css(\"retags\");\n\t\tXKit.tools.remove_css('retags_mobile');\n\t\tthis.css_toggle.detach();\n\t\tthis.html_toggle.detach();\n\t\tthis.mobile_toggle.detach();\n\t\tthis.observer.disconnect();\n\t\t$('.retags').remove();\n\t\t$('body').off('.retags');\n\t}\n};\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDA5QTFGNzNEOEYzMTFFM0ExRkJBMjU3NUY4MjNFRjciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDA5QTFGNzREOEYzMTFFM0ExRkJBMjU3NUY4MjNFRjciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowMDlBMUY3MUQ4RjMxMUUzQTFGQkEyNTc1RjgyM0VGNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowMDlBMUY3MkQ4RjMxMUUzQTFGQkEyNTc1RjgyM0VGNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpAlVCQAAAVxSURBVHja7Fp7bFNVGP/d29LHxgZ7m73kpRKjqP9ojAmwIEYFQYn/zUQji8ZHopigxgQFQggiOBOYomhiovuDDCMxIWqMMZj4py+CL/Zoe1v2hjHZuq5bW8937+2aQe+95z7aroaTk5umPff7ft/7O+dUOONJoZiHG2JR4y92+MwCgoDrLlRYAdzFLkCxu5CA/2kM3BuEq8wiUel9SLsK7UKW0bPR/Dy8DejeXsxZqG4rmGq623JfyFgdyDodkGELbv4YWvSdmrmtA7Vb6Nn9bE5dyJVbE5MMzJeeWxh1YPwXBPZi8mcZ2VNY8RpcizlkeCSHMrgFbguM/4o/ttEH5ZWRzxA9hzu+5LPDZnr2vJiLblRE9nnNCO67es3k7xg+ze1Lm7GqA5rsrE4TFoiexbWLx75H7SZuGTZR3uh5qUAulHWlr8kcv5qHKR56dxTChWpasyyraDHNsuYhrGwvhAstewXRv8mR5kbjDpTfaUVtTAbmS70785tGXaW4vROj3+DSD/A1YOlai+iVUf0gPXtftR8DbtOMFd72B9ER0fd6MW8pqx+gZ98beclCOZUhsKs4LZCRQUDgzbzEQK5k2Eh5KbCnmDf1VffLvrTX7IZGRNY5/FVhZFj+FrQgZZ2aFgi3U+Kv2pB3GTakG0f7MRA6QCJWthRABsY3uN+JLBQ8QM/8y6BwVLjbrQOhdyjHVa43phUfxpWzmPgTi29VI9KuDAJCB50oZNJhWYZ1emv6P8fwifQm4Ttc/BpNL8PfZE+G9cRXOmStnZ4/pXdx6Uc93Q93zVsf7UHkQyd8aR2ad+oBE357zMQVk381vHXZf7p8hp4VG1G2hqSFTLV0DVbtdkCMoS8w2KnlQmZaidh5mtn3awqdGVTch1QckQ55F3oOPbvR2AZfoy0BfMuhhZMqgYMzOavGX8ML6jdsDxQ+bgv9lITwUU2Oeq2EfwVq2Dbcq/qD4Ugl4KlO5/IWIhw5Tu9OncfYT2QZK+jD6NuD5BS0cOoVsrrHUX6XrTwoeBA5JvtStxUBGPrAPiTj0AGpZwH7jaqnStVcfNQ8+ggC+5HQ1r2JdjqVxPQQUtNGt7JJOmmc86LJf+imQ6Ffutoc+lgEwbeRnDZWom47nf5pZgx9zJQxY8bl96D5GRl9N6QOJCaJiHsJKteaQX8BgYNIRMHT6nNVYiWFca2UWUb7EP6ABFZeSc3AXW4CffBQ5l2Ogy0BelMeE3+RFxmslKerhBAw9Ez3Ygn8K+lLFoWsQeJFfzite76pFwOKDlgHMdQlG4Gj5MXCkI4RAtFD9YtFTkxSbcI6PIN3+xFq5/J73krMflLQUxTehPhFzF42IDd9QTarGze0ouw2yoMKfZfPGL30noze5CGDXgyMfoupXrJDyS2ofwKhIxCucBGtfRRL71ZDQqWvCys2AOmInO/Nn/HobWimAsTYvwwNT0L0ITXL++cW9komj4nzElp29EdJ99YOeAyykK8JjU9TaDIGzK3FRVx5IQM3bQEtx5gepIhPWdK9sQW89aR75RZMWITG7dTtcKTSTC3LOI+QHT2LeMu6Nw7ipjY6mJgLaE+NaerKyYem7j+i6i7YOxrUs0B8BP5Se81QUtXuVZmRoWeNqk3dGwvQ30nJx3+j2g6xjE5xzHmSJ2L2X9rjK/QVIhn0nyARd+b/bnpBnJzBwAmSwVdP7cBAl9zbmPUimT6rIb4GGf0QIp8SZadOxQ3OhRIxWYZWeGspC1Fza21Tewqz47SfHjxF+d7BI3G3aKSJZBRDJ1G3jUqBOGGd01j6UEN09EaCa1PPlDdy2oGMkYvBe8GhbqkWoABCsf/tsuB3ZHlyoQVsgesuVNjxnwADACKdjtGZRJ7nAAAAAElFTkSuQmCC","css":".ui_notes .date_header .part_full_date.stuck {\n margin-left: 400px;\n width: 165px;\n}\n\nlabel.retags {\n margin-left: 15px;\n top: -1px;\n}\n\nlabel.retags .binary_switch_label {\n position: absolute;\n top: 0;\n left: 24px;\n padding: 0 8px;\n line-height: 14px;\n white-space: nowrap;\n}\n\n.activity-notification {\n flex-wrap: wrap;\n}\n\n.activity-notification div.retags {\n width: 100%;\n margin: -4px 0 0 0;\n padding-left: 53px;\n padding-right: 60px;\n}\n\n.is_retags .activity-notification__activity_message.conversational {\n margin-bottom: 10px;\n}\n\ndiv.retags {\n white-space: normal;\n overflow-wrap: break-word;\n margin-bottom: 10px;\n font-size: 12px;\n clear: both;\n}\n\ndiv.retags.error {\n color: #c00000;\n}\n\ndiv.retags + div.retags:before {\n color: #c00000;\n content: \"Warning: You are running multiple copies of Retags.\";\n}\n\ndiv.retags + div.retags a {\n display: none;\n}\n\ndiv.retags a {\n color: #a7a7a7 !important;\n position: relative;\n margin-right: 11px;\n text-decoration: none;\n}\n\ndiv.retags a:hover {\n color: #969696 !important;\n}\n\n.note div.retags {\n font-size: 12px;\n line-height: 1.3;\n}\n\n.note div.retags a {\n margin-right: 9px;\n}\n\n.post_notes .notes_outer_container.popover .note.with_commentary span.action {\n min-height: 0;\n}\n\n.notification div.retags a {\n color: rgba(255, 255, 255, 0.3) !important;\n}\n\n.notification div.retags a:hover {\n color: rgba(255, 255, 255, 0.4) !important;\n}\n\n.retags-wrapper { list-style: none; padding-left: 30px;}\n\n.ui_note div.retags {\n margin-top: 0;\n padding-left: 45px;\n}\n\n.ui_note div.retags + div.retags {\n margin-top: -5px;\n padding-top: 0;\n}\n\n.ui_note .part_response + div.retags {\n margin-top: -7px;\n padding-top: 0;\n}\n\ndiv.retags a:after {\n content: \"\\\\00a0 \";\n font-size: 0;\n line-height: 0;\n}\n\n#xkit-retags-info {\n\tpadding: 15px;\n\tfont-size: 12px;\n\tcolor: rgb(80,80,80);\n}\n","title":"Retags","description":"Adds tags to reblog notes","developer":"new-xkit","version":"1.2.9","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/satsukimous.json b/Extensions/dist/satsukimous.json new file mode 100644 index 000000000..bd31a2598 --- /dev/null +++ b/Extensions/dist/satsukimous.json @@ -0,0 +1 @@ +{"id":"satsukimous","script":"//* TITLE Satsukimous **//\n//* VERSION 1.2.4 **//\n//* DESCRIPTION Customize how anons appear **//\n//* DEVELOPER new-xkit **//\n//* DETAILS This extension is a prime example of what happens when you let JavaScript developers stay up past midnight.**//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.satsukimous = new Object({\n\n\trunning: false,\n\n\tpreferences: {\n\t\t\"sep-0\": {\n\t\t\ttext: \"Icon Replacement\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"replacement\": {\n\t\t\ttext: \"Replacement Avatar\",\n\t\t\tdefault: \"https://31.media.tumblr.com/avatar_0bc380bccba7_128.png\",\n\t\t\tvalue: \"https://31.media.tumblr.com/avatar_0bc380bccba7_128.png\",\n\t\t\ttype: \"combo\",\n\t\t\tvalues: [\n\t\t\t\t\"Satsuki Kiryūin\", \"https://31.media.tumblr.com/avatar_0bc380bccba7_128.png\",\n\t\t\t\t\"Ryūko Matoi\", \"http://38.media.tumblr.com/avatar_2e71003ae267_128.png\",\n\t\t\t\t\"Mako Mankanshoku\", \"https://33.media.tumblr.com/avatar_759f9349bfc2_128.png\",\n\t\t\t\t\"Anonymous\", \"https://secure.assets.tumblr.com/images/anonymous_avatar_128.gif\",\n\t\t\t\t\"Custom Image\", \"custom\",\n\t\t\t],\n\t\t},\n\t\t\"custom_replacement\": {\n\t\t\ttext: \"Custom Image URL\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t},\n\t\t\"sep-1\": {\n\t\t\ttext: \"Name Replacement\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"replace_name\": {\n\t\t\ttext: \"Replace Name\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"name_replacement\": {\n\t\t\ttext: \"Replacement Name\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"Anonymous\",\n\t\t\tvalue: \"Anonymous\"\n\t\t},\n\t\t\"sep-2\": {\n\t\t\ttext: \"Other Options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"play_scream\": {\n\t\t\ttext: \"matoi RYUKOOOOOO\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t}\n\t},\n\n\tsatsuki: function() {\n\t\tvar replacement = XKit.extensions.satsukimous.preferences.replacement.value;\n\n\t\tif (replacement === \"custom\") {\n\t\t\treplacement = XKit.extensions.satsukimous.preferences.custom_replacement.value;\n\t\t}\n\n\t\tvar custom_name = XKit.extensions.satsukimous.preferences.replace_name.value &&\n\t\t\tXKit.extensions.satsukimous.preferences.name_replacement.value;\n\n\t\t$(\"img\")\n\t\t\t.filter(function(index) {\n\t\t\t\treturn $(this).attr(\"src\").match(\"anonymous_avatar\");\n\t\t\t})\n\t\t\t.attr(\"src\", replacement)\n\t\t\t.addClass(\"satsukimous_src matoiRYUKOOOOoO\");\n\n\t\t$(\".satsukimous_src\")\n\t\t\t.parent()\n\t\t\t.parent()\n\t\t\t.find(\".asker > .name:not(.xkit_satsukimous_name_handled)\")\n\t\t\t.addClass('xkit_satsukimous_name_handled')\n\t\t\t.text(custom_name || \"anonymous\");\n\n\t\t$(\"div.post_avatar_link\")\n\t\t\t.filter(function(index) {\n\t\t\t\treturn $(this).attr(\"style\").match(\"anonymous_avatar\");\n\t\t\t})\n\t\t\t.attr(\"style\", `background-image: url('${replacement}');`)\n\t\t\t.addClass(\"satsukimous_style matoiRYUKOOOOoO\");\n\n\t\t$(\".satsukimous_style\")\n\t\t\t.parent()\n\t\t\t.parent()\n\t\t\t.find(\".post_wrapper > .post_header > .post_info:not(.xkit_satsukimous_info_handled)\")\n\t\t\t.each(function(index) {\n\t\t\t\tvar $post_info = $(this);\n\t\t\t\t$post_info.addClass(\"xkit_satsukimous_info_handled\");\n\t\t\t\t$post_info.text(\n\t\t\t\t\t$post_info.text().replace(/anonymous/ig, custom_name || \"Anonymous\")\n\t\t\t\t);\n\t\t\t});\n\n\t\tif (XKit.extensions.satsukimous.preferences.play_scream.value) {\n\t\t\t$(\".matoiRYUKOOOOoO\").click(function() {\n\t\t\t\tdocument.getElementById(\"matoi-sound\").play();\n\t\t\t});\n\t\t}\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tXKit.post_listener.add(\"SATSUKI\", XKit.extensions.satsukimous.satsuki);\n\t\tXKit.extensions.satsukimous.satsuki();\n\t\tif (XKit.extensions.satsukimous.preferences.play_scream.value) {\n\t\t\t$(\"head\").append('');\n\t\t}\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\t$(\"#matoi-sound\").remove();\n\n\t\t$(\".satsukimous_src\")\n\t\t\t.attr(\"src\", \"https://secure.assets.tumblr.com/images/anonymous_avatar_128.gif\")\n\t\t\t.removeClass(\"satsukimous_src matoiRYUKOOOOoO\");\n\n\t\t$(\".xkit_satsukimous_name_handled\")\n\t\t\t.text(\"anonymous\")\n\t\t\t.removeClass('xkit_satsukimous_name_handled');\n\n\t\t$(\".xkit_satsukimous_info_handled\").each(function(index) {\n\t\t\tvar $post_info = $(this);\n\t\t\t$post_info.removeClass('xkit_satsukimous_info_handled');\n\t\t\t$post_info.text(\n\t\t\t\t$post_info.text().replace(XKit.extensions.satsukimous.preferences.name_replacement.value, \"Anonymous\")\n\t\t\t);\n\t\t});\n\n\t\t$(\".satsukimous_style\")\n\t\t\t.attr(\"style\", \"background-image: url('https://secure.assets.tumblr.com/images/anonymous_avatar_128.gif');\")\n\t\t\t.removeClass(\"satsukimous_style matoiRYUKOOOOoO\");\n\n\t\tXKit.post_listener.remove(\"SATSUKI\");\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAITElEQVRIx0WWWYxlVRWG/7XOuUNV3Rp7onoG7IZuumkapDtRoHlAgtEYiWiIb7woBqETeDHKg4l2TDTGGCU+qInEJ2IQDYIDIpE0IDYQCNVz9TxUdd2qunXvuWfee/0+nNvyeHZy1r/32uv//i0LCwsk4zh23o2PjRdF+bPnno+ycu+um2++edeLL/0pzWKI3rnthg9n54s0DuoNDUIAMIMIRAAMj7SyuO/NxicmN27c/NCBvdPTawUAoABEJIqi1khLVN898v619nIS9QKgNbq6yAtzZt7t2bu3HqiwdHnmnffOl2VeloU5Z87FvV6Wps65znLn1Mnjp2YvBqr4v4Cqzs3N1+o1Gt88fMQ7885e//dbf3n5pTxLzUyI6el1N26ZXrt6Kk8ietLTFUWRJ97DO7rSu7KkpytdP+rNzMw45wYCJJ33wyMjJM+dOze3sFKUWVlmRV6eOHk0LzLvnaoEoe6785YsjVaNN0vnnPNCXyaRd84575zzrnDeeefSfrfXT+IkJTkQiOP+2PiYiBx5/yOjmTnnvTPnXG7mvVktkNHR4d17dh986vHmyFiedMyXU+MthXO+MCuLPHbOmfki75srqEEv6gMgqRQsdzrjY2Pe+6PHZ7133pt5Z57mvZHOlbCivbB08uiJYzMzDxzYDzBLuuvXr9u6eQPNO++KtA+I864ZmkGTfhLFKQUAVEX7vX5zqLG0uDTfXnbOmRnNBPDO0wgCZL0+keb62r+OvPjHl6WMNWxcnZvfd9eeQCUAQxbUAMbhhtJ8HMdJnAmEgAKs1WoqwanTs855VxSgeO+MoJkRRptcNVHmy1f6nOsPH3jg4YMHn54YCTr9cvee3dtv2viZu3eUvqQr168eClia92mSJUmqIiA1z3NRqMjMxyfpTaA0b54gSIMZidbw8PSGGyYb+VB+7Ojl+e3bN3/vO09unGokcfrM09/QMETY8mU2NDK6Y+fOHbdszYokSXPSCIRRL1qzag2Nl67MlWWhYQMgaIAQNEJJEQHknn177t3/yyRO8zwdq9efePyxoNG8duXKuVOnhuq+GchXvnj/rbft/t3v/3Dy7Hwv6hEQQJeWllqtkTSJl1ci8yVpZkAQkiABGMhABICZebNGs95qjWirNTIxNTwynMfJfQ9+vpu0Hn7k62fOtpN+XBYFyDROABJUkGFYW+p0kqwA5JPtkyBoRpgGlS0JABjgAQIzDI20tm1es31T0CvKe+7bv7jYTpNURJI0BQSQsFarkbx2rW3eiwgJAUmAHoBR1ASouHJd4hMtjq+aYqfzw0M/6HVXVP2mrVuuzs2LBN2VJRU1OB2fmIDgwqVLNJMgFKErC5CAEdVeGQYK2OB8VfWBoohInqZGDo+ONoeGr1y+fP7iFYJZkgAEEY6NjanK3FzbmwvCIXDQIjOKqJmpaq1eAxXwgAxKE967sigW24ubNm8iTSAQeffd9w0KiJmv5MMgCIx2rb0MI0EBzBiIgISICEiphaGQAoA0QkQABEEYDoXrN6zn9SMFKoff+m/1ZWYACCrBoiiWllcgGDQfHrQKVYM7VTEYKKIqsLJIsyQ270REggAQEKBfbLdPnznvvadoJSCQEMDiwlI/iqEKqczlqosOREFCWBYFRJz55Wvter1WHxrSQFdWOkkcrVk73Wg2VQWUw2+/U3oLvQnNGwmQDAG5cPFyUeRBbcgMPk9EBBxcqAAkqu2Equump6sfAdQbzdVr1rTbi/VGg4BQXv3bGyRYYUAC0iDQQPXcuQsiAkGgSOJO2BiBCEARqfptVlUQXj84gGp9anIKMIW88sqr5y/PGYw0UpxHBUoVkdkz50UDUrz3NFMNAb1eBACTfiRV1waWICAEIAIBRI8dO/qb518AAaNQAIuifpHnIqJlUVy9OqdhXUSS3mJjaAS47jUIKEaRPLsw82FZFtWAsqoOASmqp0+d/v6hn+ZFad4LaTQB8qKI44SkdjqdKElJ0BdZHDWGxwfT6L0IRChizfHJzVu2LMyeXGkviApArUCmwX/eevu7zx7qdiNvHgKjVZTxxm7UI6Bnz8yKNgCm0VLYaGpQJyCqWdqHCKEAGsPDMjaxcceuehhcPD5TZlmF2jdf+/uhnzyX5M65QqCDVwwBCCH9KBIgPHr8dFCrlUUWxd1VqzcMEGrmXdUQA+Wd985Pbzxx776bhianNk1MLpw744FkpTupyMtCNZBqtAjQKjuJoNuLRERnz10ipN9bDGvNWn0YYgCLtGug+RIQI6O4fOmN4ke/eq/b6VJ07U3b1q1evXXtlJmBAlSQHICLgAhVg06nB4guLPZcFudpOjo6SQwAkcR9mvdlJgqRYOf2VV+6f2Q5bv7i+eNpkhgtGJs6M9f56+sfVKYhpaIIwWrISERRIgrdMZ10l6/UarVac6RK6bJIS1+AA1iISOn8fZ+99dGHpnpZ84U/zwQadDorv/5H+cGsh4CVY0itIFXlgFgVCfrEI9M/f2bnHdvGaSIIRRB1F40e1duPApj3Xih7bv/UgbtqH58NLly49t5Hlwn98iOfJjFIn4HxBxIuz7IsF4GeOLucJMWTj2567EFtaJJEHedLvW7dKgaKsgRIz8/df/uqsfKfhy9cmk/37W7dccdtoVav2wCsQlYgUnEhzTIAmuZeAhw71p0ckme+Nv6Fu8M1o0IR571W0CGzLK/SRyTcv2fs6Gx2+szCrlvX1OthEARQrWaoylIBSZLIskIANe/n5pMbb2xda+ftxXjb5uaPD+767bO3P/XVTWZV+LAoS5qvDLjrls3eZCUOpyaGx0fHvv2tb9YCVRUgACiq3nw1tHESl2X5P+/r1dtRcy1WAAAAAElFTkSuQmCC\n","title":"Satsukimous","description":"Customize how anons appear","developer":"new-xkit","version":"1.2.4","details":"This extension is a prime example of what happens when you let JavaScript developers stay up past midnight.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/scroll_to_bottom.json b/Extensions/dist/scroll_to_bottom.json new file mode 100644 index 000000000..438a06f0c --- /dev/null +++ b/Extensions/dist/scroll_to_bottom.json @@ -0,0 +1 @@ +{"id":"scroll_to_bottom","script":"//* TITLE Scroll To Bottom **//\n//* VERSION 1.1.1 **//\n//* DESCRIPTION Scroll to the bottom of long lists, like the post queue. **//\n//* DEVELOPER jeratt **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.scroll_to_bottom = new Object({\n\n\trunning: false,\n\tactivated: false,\n\n\tpost_listener: function() {\n\t\tif (XKit.extensions.scroll_to_bottom.activated === true) {\n\t\t\t$(\"body, html\").scrollTop($(\".l-container\").height());\n\t\t}\n\t},\n\n\ttoggle: function() {\n\t\tXKit.extensions.scroll_to_bottom.activated = !XKit.extensions.scroll_to_bottom.activated;\n\t\tif (XKit.extensions.scroll_to_bottom.activated) {\n\t\t\t$(\"body, html\").scrollTop($(\".l-container\").height());\n\t\t\t$('.return_to_bottom').addClass(\"activated\");\n\t\t\t$(\"#return_to_bottom_bar\").show();\n\t\t} else {\n\t\t\t$('.return_to_bottom').removeClass(\"activated\");\n\t\t\t$(\"#return_to_bottom_bar\").hide();\n\t\t}\n\t},\n\n\trun: function() {\n\t\tif ($('.post_container').length < 1) { return; }\n\t\tXKit.post_listener.add(\"scroll_to_bottom\", XKit.extensions.scroll_to_bottom.post_listener);\n\t\tXKit.tools.init_css(\"scroll_to_bottom\");\n\t\tXKit.tools.add_css('.elevator {height: 26px; width: 150px;}', 'scroll_to_bottom_move_elevator');\n\n\t\tvar button = $('
      ').appendTo(\"body\");\n\t\tbutton.click(this.toggle);\n\t\t$('
      ').appendTo(\"body\").hide();\n\n\t\tthis.running = true;\n\t},\n\n\tdestroy: function() {\n\t\tXKit.post_listener.remove(\"scroll_to_bottom\");\n\t\tXKit.tools.remove_css(\"scroll_to_bottom\");\n\t\tXKit.tools.remove_css(\"scroll_to_bottom_move_elevator\");\n\t\t$(\"#return_to_bottom\").remove();\n\t\t$(\"#return_to_bottom_bar\").remove();\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM1RTQzNzlEQjU4MTFFMkE1MTFCRjUyRUI1RjRGQUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM1RTQzN0FEQjU4MTFFMkE1MTFCRjUyRUI1RjRGQUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzVFNDM3N0RCNTgxMUUyQTUxMUJGNTJFQjVGNEZBQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzVFNDM3OERCNTgxMUUyQTUxMUJGNTJFQjVGNEZBQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrjNso8AAASVSURBVHjalFZNaF1FFJ6Z+2pfQk3TanAnmkVbq0YUkaIFUbSoRCxYpdhNUdBaF+I/uHfp0r0uXYorEVy4cqGLimTRVhD8oZimVqqP3HtnzvH8zdx5eUnAYfJyZ+be75zznb/xk18/dr5xNLynP+cSPyM6BOcA+YF2QHY6pE2MNJE2MaGj556XqXdA70eeQM901BEKfRIMjn8dg6LnSQtvMp0LcgYi3oanE4+ynzf5f8rPChv0Yz0cPrYdljS9402gvMzoXr/CjGhotKGSSCc3kn+hrPMwirLuClOg69dctQNT+rEYGNkBsWRa4ECaK78iRh2gkPwC/YGdQipS8qYZNBLocijUsz9VcVCgTz699NW3f0xz6E4cP/D6SwdNFmPFwVyEgSJkY1LlarVa0E198M28mxmhWTDTDavSkvmxHaKIQqrhqPGRFUELBjRyFQLdNgPLywKXxOIoyy1OVjCkGBFaB0TIX+4Ej0wQBb6Aovm2foecTAkSdNdzHhXH4u7q61sxB0VCk5hkMwceeKbIQZD4gyEKGTflYC1Bta0ZSXSPhj4ELT1HOh7leHc517LKaOGLKmkbcC0kUMVzrCzuNZpHCNH7YkGtWoZG2NnJiX3GPigW1w4nztnJUQjwlREldbU0xR1dwCoXVoUlF3NoiDEe/D+X3+LotFJaHOC//ObPL75eV6Ab/8Jmu1XMeG+zL6fHYw81p09IPovuznW8SGRcCihekqrbaSkWLfrVJ44s3Xpg/VpHcxadxmabrv7Fc25u/oVnDoluvaCzEQjKOcUPF/eexMjs7Rmii7+/f/6B/Qtzbtcx3jv68PxKEy+zfrnkEfuAvRjkAvJa0SP7k3oFqKRucfzz2+eO7S7gjbP33bZvzUGXPSfqD5FJ7FMMJG1DEYF6lnJFYgBit7J89dTq3TuhP/Xoncfv2cD+bw1K7WhA9BDtIBUJMRAbrC/oBF7KVK9gv3Hm2YWjh5Zm0ZdvX3z51CK0v2R0zSyGl+ptARnYOiUHc1N11nh5QoubF9999ej+m8dbqP/g3F1N+6NlL7u459RJwBxwwCtLMVi6s74twQlXrSylm/OIi3vW3nnt/lrAm6+sLI1/yo4lnVomnvVP1tW5IXfiA8IV0q3PiCmKK27veQmTe+/47fRzRxR99fHlY4evYLqeEzjyF4mc1jko1dSCapTpw1LghaKqS4vJ0F558cnDaxeXJpP+7Ml5aC/lrzoAb+0TXVXko7Y5f/3C03pjsEzGoQ5MlSCWFW+4B/s+HNzzHStItvpIqQp6cQKcRofccLhIC64v6FjdELAUL1oshAtu7DFt0hKkNYI2AKyLWKzqJjUc9kEhJJSK9Px7OHUpck3F7Dbp/flHG/lUyVEZaZS1C9moIqxx/290lRH5F8kHPzw8eNtrNlBxdTfdcrJuZKWtcDAOHakcYrv+WaV47uTUbK59/4j34KubG/ANwx6cXbIA9QJh/auOxcJ7PXrLXAgjDl676AYpUi6EJqV8k8A03emKyjFftrbcOcEqRxpudjlcLOm5U8zcNevYhUz37I12UtlnF+H/BBgAVcmqJdaUAfQAAAAASUVORK5CYII=","css":"#return_to_bottom {\n position: fixed;\n bottom: 20px;\n right: 20px;\n z-index: 10;\n min-width: 0;\n display: block;\n transform: rotate(180deg);\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n -o-transform: rotate(180deg);\n -ms-transform: rotate(180deg);\n}\n\n#return_to_bottom .return_to_bottom_icon {\n cursor: pointer;\n height: 50px;\n width: 50px;\n background: -600px -190px url('/images/dashboard_master_sprite.png?b6462987fba176c98e09a8b1a76af551') no-repeat transparent;\n opacity: .27;\n}\n\n#return_to_bottom.activated .return_to_bottom_icon {\n background: url(data:image/png;base64,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);\n opacity: 1;\n}\n\n#return_to_bottom:hover .return_to_bottom_icon {\n opacity:.45;\n}\n\n#return_to_bottom_bar {\n position: fixed;\n right: 0;\n left: 0;\n height: 5px;\n bottom: 0;\n background: #EDC707;\n}\n\n.messaging-minimized-conversations {\n margin-bottom: 60px;\n}\n","title":"Scroll To Bottom","description":"Scroll to the bottom of long lists, like the post queue.","developer":"jeratt","version":"1.1.1","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/search_likes.json b/Extensions/dist/search_likes.json new file mode 100644 index 000000000..a31ca7949 --- /dev/null +++ b/Extensions/dist/search_likes.json @@ -0,0 +1 @@ +{"id":"search_likes","script":"//* TITLE Search Likes **//\n//* VERSION 0.3.3 **//\n//* DESCRIPTION Lets you search likes **//\n//* DEVELOPER STUDIOXENIX **//\n//* DETAILS This is a very experimental extension that lets you search the posts you've liked by URL or text. Just go to your likes page, then click on Search button to get started. **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.search_likes = new Object({\n\n\trunning: false,\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (document.location.href.indexOf(\"://www.tumblr.com/likes\") !== -1) {\n\n\n\t\t\tXKit.tools.init_css(\"search_likes\");\n\n\t\t\tvar m_html = '
    17. ' +\n\t\t\t\t'' +\n\t\t\t\t\t'
      Search liked posts
      ' +\n\t\t\t\t'
      ' +\n\t\t\t\t'
    18. ';\n\n\t\t\tvar x_html = \"
      \" +\n\t\t\t\t\t\"\" +\n\t\t\t\t\"
      \";\n\n\t\t\tm_html = '
      • Search Likes
      • ' + m_html + '
      ';\n\n\t\t\t$(\".controls_section:eq(1)\").after(m_html);\n\t\t\t$(\"#xkit-search-likes-ul\").before(x_html);\n\n\t\t\t$(\"#xkit-search-likes-button\").click(function() {\n\n\t\t\t\tXKit.extensions.search_likes.search_start();\n\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\t$(\"#xkit-search-likes-input\").keyup(function() {\n\n\t\t\t\tvar m_value = $(this).val().toLowerCase();\n\t\t\t\tm_value = $.trim(m_value);\n\n\t\t\t\t$(\".xkit-search-likes-done\").removeClass(\"xkit-search-likes-done\");\n\t\t\t\tXKit.extensions.search_likes.term = m_value;\n\t\t\t\tXKit.extensions.search_likes.search_do_posts();\n\n\t\t\t\t$(\".xkit-search-likes-done\").removeClass(\"xkit-search-likes-done\").removeClass(\"xkit-search-likes-found\");\n\n\t\t\t});\n\n\t\t}\n\n\t},\n\n\tterm: \"\",\n\tpage: 0,\n\tscooping: false,\n\n\tupdate_rect: function() {\n\n\t\tXKit.tools.add_function(function() {\n\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t}, true, \"\");\n\n\t},\n\n\tsearch_do_posts: function() {\n\n\t\tvar m_term = XKit.extensions.search_likes.term;\n\n\t\tif (m_term.length <= 2) {\n\n\t\t\t// Show all.\n\n\t\t\t$(\".post\").parent().not(\"#right_column\").addClass(\"xkit-search-likes-force-found\");\n\t\t\t$(\".post\").parent().slideDown('fast');\n\n\t\t\t$(\"#xkit-search-likes-status-bar\").remove();\n\n\t\t\tXKit.extensions.search_likes.update_rect();\n\t\t\t$(\".post:gt(20)\").parent().remove();\n\n\t\t\tXKit.extensions.search_likes.page = 0;\n\t\t\tXKit.extensions.search_likes.scooping = false;\n\n\t\t\treturn;\n\t\t} else {\n\n\t\t\t$(\".xkit-search-likes-force-found\").not(\"#right_column\").removeClass(\"xkit-search-likes-force-found\");\n\n\t\t}\n\n\t\tvar i_html = \"Searching for \\\"\" + m_term + \"\\\"
      0 results found so far, inspected 0 posts.
      Scroll down to load more posts and results.\";\n\n\t\tif ($(\"#xkit-search-likes-status-bar\").length > 0) {\n\t\t\t$(\"#xkit-search-likes-status-bar\").html(i_html);\n\t\t} else {\n\t\t\t$(\"#posts\").before(\"
      \" + i_html + \"
      \");\n\t\t}\n\n\t\t// Remove the unnecessary posts.\n\t\t$(\".post_container.xkit-search-likes-done-container:gt(20)\").not(\".xkit-search-likes-found\").remove();\n\n\t\tvar multi_array = [];\n\n\t\t$(\".post\").not(\"#tumblr_radar\").each(function() {\n\n\t\t\tvar post_id = $(this).attr('data-post-id');\n\n\t\t\tif (multi_array.indexOf(post_id) !== -1) {\n\t\t\t\tconsole.log(\" >>> !! Multiple same posts found, removing this one.\");\n\t\t\t\t$(this).remove(); return;\n\t\t\t} else {\n\t\t\t\tmulti_array.push(post_id);\n\t\t\t}\n\n\t\t});\n\n\t\t$(\".post\").not(\"#tumblr_radar\").not(\"xkit-search-likes-done\").each(function() {\n\n\t\t\tvar username = $(this).attr('data-tumblelog-name');\n\t\t\tvar hide_this = false;\n\n\t\t\t$(this).addClass(\"xkit-search-likes-done\");\n\n\t\t\tvar to_search_in = $(this).find(\".post_content\").text().toLowerCase();\n\n\t\t\tif ($(this).find(\".post_tag\").length > 0) {\n\n\t\t\t\t$(this).find(\".post_tag\").each(function() {\n\n\t\t\t\t\tto_search_in = to_search_in + \" \" + $(this).html().toLowerCase();\n\t\t\t\t\tto_search_in = to_search_in + \" \" + $(this).html().toLowerCase().substring(1);\n\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t\tif (typeof username !== \"undefined\") {\n\t\t\t\tto_search_in = to_search_in + username;\n\t\t\t}\n\n\t\t\tdocument.title = m_term;\n\n\t\t\tif (to_search_in.indexOf(m_term) === -1) {\n\t\t\t\thide_this = true;\n\t\t\t}\n\n\t\t\t$(this).parent().addClass(\"xkit-search-likes-done-container\");\n\n\t\t\tif (!hide_this) {\n\n\t\t\t\t$(this).parent().slideDown('fast');\n\t\t\t\t$(this).parent().addClass(\"xkit-search-likes-found\");\n\n\t\t\t\t$(this).find(\".post_body\").find(\"mark\").contents().unwrap();\n\t\t\t\tvar m_html = XKit.extensions.search_likes.return_highlighted_html($(this).find(\".post_body\").html(), m_term);\n\t\t\t\t$(this).find(\".post_body\").html(m_html);\n\n\t\t\t} else {\n\n\t\t\t\t$(this).parent().slideUp('fast');\n\t\t\t\t$(this).parent().removeClass(\"xkit-search-likes-found\");\n\t\t\t\t$(this).find(\".post_body\").find(\"mark\").contents().unwrap();\n\n\t\t\t}\n\n\t\t});\n\n\t\tif ($(\".xkit-search-likes-found\").length <= 20) {\n\n\t\t\tXKit.extensions.search_likes.scooping = true;\n\t\t\tXKit.extensions.search_likes.scoop();\n\n\t\t}\n\n\t\t$(\"#xkit-search-likes-found-count\").html($(\".xkit-search-likes-found\").length);\n\t\t$(\"#xkit-search-likes-total-count\").html($(\".post\").length);\n\n\t},\n\n\tscoop: function() {\n\n\t\tXKit.extensions.search_likes.page++;\n\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"http://www.tumblr.com/likes/page/\" + XKit.extensions.search_likes.page,\n\t\t\tjson: false,\n\t\t\theaders: {\n\t\t\t\t\"X-Requested-With\": \"XMLHttpRequest\",\n\t\t\t},\n\t\t\tonerror: function(response) {\n\t\t\t\tif (!XKit.extensions.search_likes.scooping) { return; }\n\t\t\t\tsetTimeout(function() { XKit.extensions.search_likes.scoop(); }, 200);\n\t\t\t},\n\t\t\tonload: function(response) {\n\n\t\t\t\tif (!XKit.extensions.search_likes.scooping) { return; }\n\n\t\t\t\tvar m_posts = $(\".post\", response.responseText);\n\n\t\t\t\tvar add_these = true;\n\n\t\t\t\t$(m_posts).each(function() {\n\n\t\t\t\t\tvar m_search = $(this).attr('id');\n\n\t\t\t\t\tif ($(\"#\" + m_search).length > 0) {\n\t\t\t\t\t\t// This set is already present.\n\t\t\t\t\t\tadd_these = false;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t});\n\n\t\t\t\tif (add_these) {\n\n\t\t\t\t\tconsole.log(\"Search Likes Scooping: Found and adding!\");\n\t\t\t\t\t$(\"#posts\").append(response.responseText);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.log(\"Search Likes Scooping: This set already present, skipping.\");\n\n\t\t\t\t}\n\n\t\t\t\tif ($(\".xkit-search-likes-found\").length >= 5) {\n\n\t\t\t\t\tconsole.log(\"Search Likes Scooping: No need to scoop anymore, stopping!\");\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tsetTimeout(function() { XKit.extensions.search_likes.scoop(); }, 200);\n\n\t\t\t}\n\t\t});\n\n\t},\n\n\treturn_highlighted_html: function(src_str, term) {\n\n\t\t/* from http://jsfiddle.net/UPs3V/ */\n\n\t\ttry {\n\n\t\t\tterm = term.replace(/(\\s+)/, \"(<[^>]+>)*$1(<[^>]+>)*\");\n\t\t\tvar pattern = new RegExp(\"(\" + term + \")\", \"i\");\n\n\t\t\tsrc_str = src_str.replace(pattern, \"$1\");\n\t\t\tsrc_str = src_str.replace(/([^<>]*)((<[^>]+>)+)([^<>]*<\\/mark>)/, \"$1$2$4\");\n\n\t\t\treturn src_str;\n\n\t\t} catch (e) {\n\n\t\t\treturn src_str;\n\n\t\t}\n\n\t},\n\n\tsearch_start: function() {\n\n\t\t$(\"#xkit-search-likes-button\").toggleClass(\"xkit-in-search\");\n\n\t\tif ($(\"#xkit-search-likes-button\").hasClass(\"xkit-in-search\")) {\n\n\t\t\t$(\"#xkit-search-likes-li\").addClass(\"selected\");\n\n\t\t\tXKit.extensions.search_likes.term = \"\";\n\t\t\t$(\"#xkit-search-likes-input\").val(\"\");\n\n\t\t\t$(\"#right_column\").children().not(\"#xkit-search-likes-ul\").not(\"#xkit-search-likes-box\").slideUp('fast');\n\t\t\t$(\"#xkit-search-likes-box\").slideDown('slow');\n\n\t\t\tXKit.post_listener.add(\"search_likes\", XKit.extensions.search_likes.search_do_posts);\n\t\t\tXKit.extensions.search_likes.search_do_posts();\n\n\t\t\tXKit.tools.add_css(\" #posts.posts>.post_container { display: none; } \", \"search-likes-in-search\");\n\n\t\t} else {\n\n\t\t\t$(\"#xkit-search-likes-li\").removeClass(\"selected\");\n\n\t\t\tXKit.post_listener.remove(\"search_likes\", XKit.extensions.search_likes.search_do_posts);\n\t\t\tXKit.tools.remove_css(\"search-likes-in-search\");\n\n\t\t\t$(\".post\").not(\"#tumblr_radar\").parent().addClass(\"xkit-search-likes-found\");\n\t\t\t$(\".post\").not(\"#tumblr_radar\").parent().slideDown('fast');\n\n\t\t\t$(\".xkit-search-likes-done\").removeClass(\"xkit-search-likes-done\");\n\n\t\t\t$(\"#xkit-search-likes-status-bar\").slideUp('slow', function() { $(this).remove(); });\n\n\t\t\tXKit.extensions.search_likes.update_rect();\n\n\t\t\t$(\".post:gt(30)\").parent().remove();\n\n\t\t\t$(\"#right_column\").children().not(\"#xkit-search-likes-ul\").not(\"#xkit-search-likes-box\").slideDown('slow');\n\t\t\t$(\"#xkit-search-likes-box\").slideUp('slow');\n\n\t\t}\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxRUEzMUE4MDQ5ODkxMUUzOEY0QUFCOTZENUUwMDJFRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxRUEzMUE3RjQ5ODkxMUUzOEY0QUFCOTZENUUwMDJFRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","css":"#xkit-search-likes-box { display: none; padding-top: 6px; }\n\n#xkit-search-likes-button:after {\n\n\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDRBQkU4RjMzNkU2MTFFM0E0MTFDNDE2OTFDMzA4QzciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDRBQkU4RjQzNkU2MTFFM0E0MTFDNDE2OTFDMzA4QzciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowNEFCRThGMTM2RTYxMUUzQTQxMUM0MTY5MUMzMDhDNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowNEFCRThGMjM2RTYxMUUzQTQxMUM0MTY5MUMzMDhDNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuSNlSQAAAEbSURBVHjaYvz//z8DNQETDvEcIL4PxK+B+D0Q3wJiL2IMZERzoSYQX8Oj/hsQ8wDxf2IM1AbiK0hyZ4B4GRCzQF0sh6wPp5UgA6EYGQgjicOwFZL8OyzyYAxj5CMpFsGlGIhDkNS54DPwIVTRGTyGwfBzqNq52ORhscwFpZcSEZEXoDQPvmTDQjCwMQEzPgPfQulCIgxygtIf8MWyB1JgW+IJvxIkddL4IgU92QRjUVyMJP8Fl6XoOQWZ8xSIrwLxPyC2B2JONM+dBmIzfAkbhJmA+PV/3ABd7hwhF8KAOxAHATEfELMB8XMgboXSJ4DYHKdLiUjI2PAZNJdeR0/YpAITaOEBA/dwFV+kgttQ7EUtA4kusckGAAEGAGOJAD0xp7muAAAAAElFTkSuQmCC');\n\tcontent: \"A\";\n\tfont-size: 0;\n\twidth: 24px;\n\tbackground-repeat: no-repeat;\n\tbackground-position: 3px 7px;\n\topacity: 0.42;\n\n}\n\n#xkit-search-likes-input {\n\twidth: 100%;\n\tborder-radius: 3px;\n\tborder: 0px;\n\tpadding: 5px 10px 5px 30px;\n\tmargin-top: 0px;\n\tmargin-right: 5px;\n\tmargin-bottom: 0;\n\tmargin-left: 0px;\n\tfont-size: 15px;\n\tbox-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\t-o-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tbackground: white 10px 50% no-repeat url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjMxRTZFMEZBODY4MTFFMkFDMDJFMzk3N0RDMDc2NDQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjMxRTZFMTBBODY4MTFFMkFDMDJFMzk3N0RDMDc2NDQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCMzFFNkUwREE4NjgxMUUyQUMwMkUzOTc3REMwNzY0NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCMzFFNkUwRUE4NjgxMUUyQUMwMkUzOTc3REMwNzY0NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pnjwe50AAADhSURBVHjalJExEoIwEEVDvAAdpUeQhhk7OQKeAO2k4wh6AztK4w04AvYUUNp5BDwB/sz8MGsGh/HP/MmyyctulmAcR2VVVdUOSwnHcAg38LUoiofyFFgIQI7YqHkZgEeZWEVRZCvU8ACfcGCfJMmlbVtbKYO3iDvkng7SbMmqBHB3G2wr4+dZVtJ8g5KAB3bujIRC9ac0p+Sm9yXkNqzy8iE3tVqCiNdiz8yN/Ib4wFzHVb7DTjbFG/sJ4s25+LmKLRnmQglO0C/xXY0AY700KbaUErDVh8VK3mAGXPL+CDAAWp9eZGKACQQAAAAASUVORK5CYII=') !important;\n}\n\n#xkit-search-likes-input::-webkit-input-placeholder { color: #999; }\n#xkit-search-likes-input:-moz-placeholder { color: #999; }\n#xkit-search-likes-input:placeholder { color: #999; }\n\n.xkit-search-likes-force-found, .xkit-search-likes-found { display: block !important; }\n\n#xkit-search-likes-status-bar {\n\tbackground: rgba(0,0,0,0.12);\n\tborder: 1px solid rgba(0,0,0,0.22);\n\tcolor: rgba(255,255,255,0.53);\n\tpadding: 10px 14px;\n\tborder-radius: 6px;\n\tmargin-bottom: 15px;\n}","title":"Search Likes","description":"Lets you search likes","developer":"STUDIOXENIX","version":"0.3.3","details":"This is a very experimental extension that lets you search the posts you've liked by URL or text. Just go to your likes page, then click on Search button to get started.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/servant.json b/Extensions/dist/servant.json new file mode 100644 index 000000000..31c28b7f9 --- /dev/null +++ b/Extensions/dist/servant.json @@ -0,0 +1 @@ +{"id":"servant","script":"//* TITLE Servant **//\n//* VERSION 0.6.1 **//\n//* DESCRIPTION XKit Personal Assistant **//\n//* DETAILS Automator for XKit: lets you create little Servants that does tasks for you when the conditions you've set are met. **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* SLOW true **//\n//* BETA false **//\n\nXKit.extensions.servant = new Object({\n\n\trunning: false,\n\tslow: true,\n\n\tservants: [],\n\n\tpreferences: {\n\t\t\"sep2\": {\n\t\t\ttext: \"My Servants\",\n\t\t\ttype: \"separator\"\n\t\t}\n\t},\n\n\tcauses: {\n\n\t\tsep_1: {\n\n\t\t\ttext: \"Posts on Dashboard\",\n\t\t\ttype: \"separator\"\n\n\t\t},\n\n\t\tcontains: {\n\n\t\t\ttext: \"Post Contains\",\n\t\t\ttype: \"text\",\n\t\t\tcompatibility: \"post\",\n\t\t\tplaceholder: \"ie: 'Mitt Romney'\",\n\t\t\treturns: \"the word found\",\n\t\t\truns_on: \"post\",\n\t\t\tdescription: \"Runs if a post containing the word you've entered is found, affects that post.\",\n\n\t\t\trun: function(parameter, obj) {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tvar m_text = $(obj).find(\".post_content\").text();\n\n\t\t\t\tif ($(obj).find(\".post_title\").length > 0) {\n\t\t\t\t\tm_text = m_text + \" \" + $(obj).find(\".post_title\").text();\n\t\t\t\t}\n\n\t\t\t\tm_text = m_text.toLowerCase();\n\t\t\t\tparameter = parameter.toLowerCase();\n\n\t\t\t\tif (m_text.indexOf(parameter) !== -1) {\n\n\t\t\t\t\tm_object.run = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tm_object.run = false;\n\n\t\t\t\t}\n\n\t\t\t\tm_object.return = parameter;\n\t\t\t\tm_object.pass = $(obj);\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\tcontains_not: {\n\n\t\t\ttext: \"Post Doesn't Contain\",\n\t\t\ttype: \"text\",\n\t\t\tcompatibility: \"post\",\n\t\t\tplaceholder: \"ie: 'Mitt Romney'\",\n\t\t\treturns: \"the word not found\",\n\t\t\truns_on: \"post\",\n\t\t\tdescription: \"Runs if a post containing the word you've entered is not found, affects that post.\",\n\n\t\t\trun: function(parameter, obj) {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tvar m_text = $(obj).find(\".post_body\").text();\n\n\t\t\t\tif ($(obj).find(\".post_title\").length > 0) {\n\t\t\t\t\tm_text = m_text + \" \" + $(obj).find(\".post_title\").text();\n\t\t\t\t}\n\n\t\t\t\tm_text = m_text.toLowerCase();\n\t\t\t\tparameter = parameter.toLowerCase();\n\n\t\t\t\tif (m_text.indexOf(parameter) == -1) {\n\n\t\t\t\t\tm_object.run = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tm_object.run = false;\n\n\t\t\t\t}\n\n\t\t\t\tm_object.return = parameter;\n\t\t\t\tm_object.pass = $(obj);\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\tmade_by: {\n\n\t\t\ttext: \"Post is from\",\n\t\t\ttype: \"text\",\n\t\t\tcompatibility: \"post\",\n\t\t\truns_on: \"post\",\n\t\t\treturns: \"the owner's URL\",\n\t\t\tplaceholder: \"ie: 'new-xkit-extension'\",\n\t\t\tdescription: \"Runs if a post is created/reblogged from the URL you've entered is found, affects that post.\",\n\n\t\t\trun: function(parameter, obj) {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tm_object.run = false;\n\n\t\t\t\tif ($(obj).attr('data-tumblelog-name') === parameter) {\n\t\t\t\t\tm_object.run = true;\n\t\t\t\t}\n\n\t\t\t\tm_object.return = parameter;\n\t\t\t\tm_object.pass = $(obj);\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\tsourced: {\n\n\t\t\ttext: \"Post is sourced from\",\n\t\t\ttype: \"text\",\n\t\t\tcompatibility: \"post\",\n\t\t\truns_on: \"post\",\n\t\t\treturns: \"the source URL\",\n\t\t\tplaceholder: \"ie: 'new-xkit-extension'\",\n\t\t\tdescription: \"Runs if a post is sourced to the URL you've entered is found, affects that post.\",\n\n\t\t\trun: function(parameter, obj) {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tm_object.run = false;\n\n\t\t\t\tif ($(obj).find(\".post_source_link\").length > 0) {\n\n\t\t\t\t\tif ($(obj).find(\".post_source_link\").attr('title') === parameter) {\n\t\t\t\t\t\tm_object.run = true;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tm_object.return = parameter;\n\t\t\t\tm_object.pass = $(obj);\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\tis_original: {\n\n\t\t\ttext: \"Post is original\",\n\t\t\ttype: \"\",\n\t\t\tcompatibility: \"post\",\n\t\t\truns_on: \"post\",\n\t\t\tdescription: \"Runs if the post is original, not reblogged.\",\n\n\t\t\trun: function(parameter, obj) {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tvar m_post = XKit.interface.post($(obj));\n\t\t\t\tm_object.run = false;\n\n\t\t\t\tif (typeof m_post === \"undefined\") {\n\t\t\t\t\tm_object.run = false;\n\t\t\t\t} else {\n\t\t\t\t\tif (m_post.is_reblogged === false) {\n\t\t\t\t\t\tm_object.run = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tm_object.pass = $(obj);\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\tis_reblogged: {\n\n\t\t\ttext: \"Post is reblogged\",\n\t\t\ttype: \"\",\n\t\t\tcompatibility: \"post\",\n\t\t\truns_on: \"post\",\n\t\t\tdescription: \"Runs if the post is not original, but reblogged.\",\n\n\t\t\trun: function(parameter, obj) {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tvar m_post = XKit.interface.post($(obj));\n\t\t\t\tm_object.run = false;\n\n\t\t\t\tif (typeof m_post === \"undefined\") {\n\t\t\t\t\tm_object.run = false;\n\t\t\t\t} else {\n\t\t\t\t\tif (m_post.is_reblogged === true) {\n\t\t\t\t\t\tm_object.run = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tm_object.pass = $(obj);\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\tpost_type: {\n\n\t\t\ttext: \"Post type is\",\n\t\t\ttype: \"post_type\",\n\t\t\tcompatibility: \"post\",\n\t\t\truns_on: \"post\",\n\t\t\treturns: \"the post type\",\n\t\t\tdescription: \"Runs if a post is of the type you've selected\",\n\n\t\t\trun: function(parameter, obj) {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tvar search_for = parameter;\n\n\t\t\t\tif (search_for === \"text\") { search_for = \"regular\"; }\n\t\t\t\tif (search_for === \"chat\") { search_for = \"conversation\"; }\n\n\t\t\t\tvar m_post = XKit.interface.post($(obj));\n\t\t\t\tm_object.run = false;\n\n\t\t\t\tif (typeof m_post === \"undefined\") {\n\t\t\t\t\tm_object.run = false;\n\t\t\t\t} else {\n\t\t\t\t\tif (search_for === \"photo\") {\n\t\t\t\t\t\tif (m_post.type === \"photo\" || m_post.type === \"panorama\" || m_post.type === \"photoset\") {\n\t\t\t\t\t\t\tm_object.run = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (m_post.type === search_for) {\n\t\t\t\t\t\t\tm_object.run = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tm_object.pass = $(obj);\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\tpost_is_mine: {\n\n\t\t\ttext: \"Post is mine\",\n\t\t\ttype: \"\",\n\t\t\tcompatibility: \"post\",\n\t\t\truns_on: \"post\",\n\t\t\tdescription: \"Runs if you've reblogged/created this post.\",\n\n\t\t\trun: function(parameter, obj) {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tvar m_post = XKit.interface.post($(obj));\n\t\t\t\tm_object.run = false;\n\n\t\t\t\tif (typeof m_post === \"undefined\") {\n\t\t\t\t\tm_object.run = false;\n\t\t\t\t} else {\n\t\t\t\t\tif (m_post.is_mine === true) {\n\t\t\t\t\t\tm_object.run = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tm_object.pass = $(obj);\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\tpost_liked: {\n\n\t\t\ttext: \"Post is liked by me\",\n\t\t\ttype: \"\",\n\t\t\tcompatibility: \"post\",\n\t\t\truns_on: \"post\",\n\t\t\tdescription: \"Runs if you've already liked a post.\",\n\n\t\t\trun: function(parameter, obj) {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tvar m_post = XKit.interface.post($(obj));\n\t\t\t\tm_object.run = false;\n\n\t\t\t\tif (typeof m_post === \"undefined\") {\n\t\t\t\t\tm_object.run = false;\n\t\t\t\t} else {\n\t\t\t\t\tif (m_post.liked === true) {\n\t\t\t\t\t\tm_object.run = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tm_object.pass = $(obj);\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\tpost_not_done: {\n\n\t\t\ttext: \"There is a post (not recommended)\",\n\t\t\ttype: \"\",\n\t\t\tcompatibility: \"post\",\n\t\t\truns_on: \"post\",\n\t\t\tdescription: \"Runs on all posts. Not recommended.\",\n\n\t\t\trun: function(parameter, obj) {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tif ($(obj).hasClass(\"with_permalink\") && $(obj).hasClass(\"post_full\")) {\n\t\t\t\t\tm_object.run = true;\n\t\t\t\t} else {\n\t\t\t\t\tm_object.run = false;\n\t\t\t\t}\n\n\t\t\t\tm_object.pass = $(obj);\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\tsep_99a: {\n\n\t\t\ttext: \"Content Ratings\",\n\t\t\ttype: \"separator\"\n\n\t\t},\n\n\t\tpost_adult: {\n\n\t\t\ttext: \"The post is made/reblogged by an Adult blog\",\n\t\t\ttype: \"\",\n\t\t\tcompatibility: \"post\",\n\t\t\truns_on: \"post\",\n\t\t\tdescription: \"Runs on all posts reblogged/posted by a blog with Adult rating.
      (ie: a porn blog)\",\n\n\t\t\trun: function(parameter, obj) {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tif ($(obj).attr('data-tumblelog-content-rating') === \"adult\") {\n\t\t\t\t\tm_object.run = true;\n\t\t\t\t} else {\n\t\t\t\t\tm_object.run = false;\n\t\t\t\t}\n\n\t\t\t\tm_object.pass = $(obj);\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\tpost_nsfw: {\n\n\t\t\ttext: \"The post is made/reblogged by a NSFW blog\",\n\t\t\ttype: \"\",\n\t\t\tcompatibility: \"post\",\n\t\t\truns_on: \"post\",\n\t\t\tdescription: \"Runs on all posts reblogged/posted by a blog with NSFW rating.
      (ie: a blog that might post porn/nsfw stuff from time to time)\",\n\n\t\t\trun: function(parameter, obj) {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tif ($(obj).attr('data-tumblelog-content-rating') === \"nsfw\") {\n\t\t\t\t\tm_object.run = true;\n\t\t\t\t} else {\n\t\t\t\t\tm_object.run = false;\n\t\t\t\t}\n\n\t\t\t\tm_object.pass = $(obj);\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\tpost_nsfw_adult: {\n\n\t\t\ttext: \"The post is made/reblogged by a NSFW/adult blog\",\n\t\t\ttype: \"\",\n\t\t\tcompatibility: \"post\",\n\t\t\truns_on: \"post\",\n\t\t\tdescription: \"Runs on all posts reblogged/posted by a blog with an Adult or NSFW rating.\",\n\n\t\t\trun: function(parameter, obj) {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tif ($(obj).attr('data-tumblelog-content-rating') === \"adult\" || $(obj).attr('data-tumblelog-content-rating') === \"nsfw\") {\n\t\t\t\t\tm_object.run = true;\n\t\t\t\t} else {\n\t\t\t\t\tm_object.run = false;\n\t\t\t\t}\n\n\t\t\t\tm_object.pass = $(obj);\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\tsep_99: {\n\n\t\t\ttext: \"Pages\",\n\t\t\ttype: \"separator\"\n\n\t\t},\n\n\t\ton_dashboard: {\n\n\t\t\ttext: \"I'm on the dashboard\",\n\t\t\ttype: \"page\",\n\t\t\tcompatibility: \"\",\n\t\t\tdescription: \"Runs if you are on the dashboard\",\n\n\t\t\trun: function() {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tm_object.run = (XKit.interface.where().dashboard);\n\t\t\t\tm_object.return = \"\";\n\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\ton_inbox: {\n\n\t\t\ttext: \"I'm on the inbox\",\n\t\t\ttype: \"page\",\n\t\t\tcompatibility: \"\",\n\t\t\tdescription: \"Runs if you are on the inbox page\",\n\n\t\t\trun: function() {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tm_object.run = (XKit.interface.where().inbox);\n\t\t\t\tm_object.return = \"\";\n\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\ton_channel: {\n\n\t\t\ttext: \"I'm on a blog posts page (/blog/[url])\",\n\t\t\ttype: \"page\",\n\t\t\tcompatibility: \"\",\n\t\t\tdescription: \"Runs if you are posts page of your blog\",\n\n\t\t\trun: function() {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tm_object.run = (XKit.interface.where().channel && $(\"body\").hasClass(\"dashboard_index\"));\n\t\t\t\tm_object.return = \"\";\n\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\ton_likes: {\n\n\t\t\ttext: \"I'm on my likes page\",\n\t\t\ttype: \"page\",\n\t\t\tcompatibility: \"\",\n\t\t\tdescription: \"Runs if you are on the likes page\",\n\n\t\t\trun: function() {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tm_object.run = (document.location.href.indexOf('www.tumblr.com/likes') !== -1);\n\t\t\t\tm_object.return = \"\";\n\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\ton_queue: {\n\n\t\t\ttext: \"I'm on the queue page\",\n\t\t\ttype: \"page\",\n\t\t\tcompatibility: \"\",\n\t\t\tdescription: \"Runs if you are on the queue page of your blog\",\n\n\t\t\trun: function() {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tm_object.run = (XKit.interface.where().queue);\n\t\t\t\tm_object.return = \"\";\n\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\ton_drafts: {\n\n\t\t\ttext: \"I'm on the drafts page\",\n\t\t\ttype: \"page\",\n\t\t\tcompatibility: \"\",\n\t\t\tdescription: \"Runs if you are on the drafts page of your blog\",\n\n\t\t\trun: function() {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tm_object.run = (XKit.interface.where().drafts);\n\t\t\t\tm_object.return = \"\";\n\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\ton_search: {\n\n\t\t\ttext: \"I'm on a tracked tag or search\",\n\t\t\ttype: \"page\",\n\t\t\tcompatibility: \"\",\n\t\t\tdescription: \"Runs if you are on the a tracked tag page or on search\",\n\n\t\t\trun: function() {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tif (document.location.href.indexOf(\"www.tumblr.com/tagged/\") !== -1 || document.location.href.indexOf(\"www.tumblr.com/search/\") !== -1) {\n\t\t\t\t\tm_object.run = true;\n\t\t\t\t} else {\n\t\t\t\t\tm_object.run = false;\n\t\t\t\t}\n\n\t\t\t\tm_object.return = \"\";\n\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\tsep_50: {\n\n\t\t\ttext: \"Date and Time\",\n\t\t\ttype: \"separator\"\n\n\t\t},\n\n\t\ttime_night: {\n\n\t\t\ttext: \"It's night\",\n\t\t\ttype: \"time\",\n\t\t\tcompatibility: \"\",\n\t\t\treturns: \"the hour, in 24-hour format\",\n\t\t\tdescription: \"Runs each time you refresh the page,
      if the time is between 6 pm and 6 am\",\n\n\t\t\trun: function() {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tvar m_hour = new Date().getHours();\n\n\t\t\t\tif (!(m_hour >= 6 && m_hour < 18)) {\n\t\t\t\t\tm_object.run = true;\n\t\t\t\t} else {\n\t\t\t\t\tm_object.run = false;\n\t\t\t\t}\n\n\t\t\t\tm_object.return = m_hour;\n\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\ttime_weekend: {\n\n\t\t\ttext: \"It's weekend\",\n\t\t\ttype: \"time\",\n\t\t\tcompatibility: \"\",\n\t\t\tdescription: \"Runs each time you refresh the page,
      if the day is saturday or sunday\",\n\n\t\t\trun: function() {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tvar m_today = new Date();\n\n\t\t\t\tif (m_today.getDay() === 6 || m_today.getDay() === 0) {\n\t\t\t\t\tm_object.run = true;\n\t\t\t\t} else {\n\t\t\t\t\tm_object.run = false;\n\t\t\t\t}\n\n\t\t\t\tm_object.return = \"\";\n\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\ttime_weekday: {\n\n\t\t\ttext: \"It's weekday\",\n\t\t\ttype: \"time\",\n\t\t\tcompatibility: \"\",\n\t\t\tdescription: \"Runs each time you refresh the page,
      if the day is not a saturday or a sunday\",\n\n\t\t\trun: function() {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tvar m_today = new Date();\n\n\t\t\t\tif (m_today.getDay() !== 6 && m_today.getDay() !== 0) {\n\t\t\t\t\tm_object.run = true;\n\t\t\t\t} else {\n\t\t\t\t\tm_object.run = false;\n\t\t\t\t}\n\n\t\t\t\tm_object.return = \"\";\n\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\ttime_day: {\n\n\t\t\ttext: \"The day is\",\n\t\t\ttype: \"day\",\n\t\t\treturns: \"the date (0=sunday, 6=saturday)\",\n\t\t\tdescription: \"Runs if the day is the thingy you've selected\",\n\n\t\t\trun: function(parameter, obj) {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tvar m_today = new Date();\n\n\t\t\t\tif (m_today.getDay() == parameter) {\n\t\t\t\t\tm_object.run = true;\n\t\t\t\t} else {\n\t\t\t\t\tm_object.run = false;\n\t\t\t\t}\n\n\t\t\t\tm_object.return = \"\";\n\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t\tsep_100: {\n\n\t\t\ttext: \"Other\",\n\t\t\ttype: \"separator\"\n\n\t\t},\n\n\t\trun_js: {\n\n\t\t\ttext: \"Run Javascript Code\",\n\t\t\tcompatibility: \"\",\n\t\t\ttype: \"textarea\",\n\t\t\tplaceholder: \"ie: 'if (mary.has_lamb == true) {\\n\\treturn true;\\n }'\",\n\t\t\tdescription: \"Lets you run Javascript Code.
      JQuery and XKit API is supported.\",\n\n\t\t\trun: function(parameter, returns) {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tvar m_return = false;\n\n\t\t\t\ttry {\n\t\t\t\t\tm_return = eval(parameter + \"\\n//# sourceURL=xkit/servant/servant\" + (new Date()).getTime() + \".js\");\n\t\t\t\t} catch (e) {\n\t\t\t\t\tm_return = false;\n\t\t\t\t\tconsole.error(\"Unable to run Servant! ---> \" + e.message);\n\t\t\t\t}\n\n\t\t\t\tm_object.run = m_return;\n\t\t\t\tm_object.return = \"\";\n\n\t\t\t\treturn m_object;\n\n\t\t\t}\n\n\t\t},\n\n\t\tcivilization_ends: {\n\n\t\t\ttext: \"Civilization comes to an end\",\n\t\t\ttype: \"zombie_cat_attack\",\n\t\t\tcompatibility: \"\",\n\t\t\treturns: \"the cause (ie: 'zombies')\",\n\t\t\tdescription: \"Runs if a society no longer functions, due to reasons
      such as a Manbearpig being on the loose\",\n\n\t\t\trun: function() {\n\n\t\t\t\tvar m_object = {};\n\n\t\t\t\tm_object.run = false;\n\t\t\t\tm_object.return = \"zombies\";\n\n\t\t\t\treturn m_object;\n\n\t\t\t},\n\n\t\t},\n\n\t},\n\n\tactions: {\n\n\t\tsep_1: {\n\n\t\t\ttext: \"Generic\",\n\t\t\ttype: \"separator\"\n\n\t\t},\n\n\t\tdisplay_notification: {\n\n\t\t\ttext: \"Display notification\",\n\t\t\tcompatibility: \"\",\n\t\t\ttype: \"text\",\n\t\t\tplaceholder: \"ie: 'Wake up!'\",\n\t\t\tdescription: \"Displays an XKit notification on the bottom left of the screen.\",\n\n\t\t\trun: function(parameter, returns) {\n\n\t\t\t\tvar parameter_fixed = parameter;\n\n\t\t\t\tfor (var i = 0; i <= 10; i++) {\n\t\t\t\t\tparameter_fixed = parameter_fixed.replace(\"%\" + (i + 1), returns[i]);\n\t\t\t\t}\n\n\t\t\t\tXKit.notifications.add(parameter_fixed, \"ok\", true);\n\n\t\t\t}\n\n\t\t},\n\n\n\t\tdisplay_window: {\n\n\t\t\ttext: \"Display alert\",\n\t\t\tcompatibility: \"\",\n\t\t\ttype: \"text\",\n\t\t\tplaceholder: \"ie: 'Wake up!'\",\n\t\t\tdescription: \"Displays an alert window.\",\n\n\t\t\trun: function(parameter, returns) {\n\n\t\t\t\tvar parameter_fixed = parameter;\n\n\t\t\t\tfor (var i = 0; i <= 10; i++) {\n\t\t\t\t\tparameter_fixed = parameter_fixed.replace(\"%\" + (i + 1), returns[i]);\n\t\t\t\t}\n\n\t\t\t\tXKit.window.show(\"Servant Alert\", parameter_fixed, \"info\", \"
      OK
      \");\n\n\t\t\t}\n\n\t\t},\n\n\t\tsep_2: {\n\n\t\t\ttext: \"Post Related\",\n\t\t\ttype: \"separator\"\n\n\t\t},\n\n\t\tblock_post: {\n\n\t\t\ttext: \"Hide the post\",\n\t\t\tcompatibility: \"post\",\n\t\t\tdescription: \"Completely hides the post\",\n\n\t\t\trun: function(parameter, returns, to_pass, compatibility) {\n\n\t\t\t\t// Parameter -> \"%1 is happening!\"\n\t\t\t\t// Returns \t -> the list of %1s and stuff.\n\t\t\t\t// To_Pass \t -> passed objects, such as a post\n\t\t\t\t// Compatibility -> \"post\", \"time\", etc.\n\n\t\t\t\tfor (var i = 0; i < to_pass.length; i++) {\n\t\t\t\t\tif (compatibility[i] === \"post\") {\n\t\t\t\t\t\t$(to_pass[i]).remove();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\thighlight_post: {\n\n\t\t\ttext: \"Highlight the post\",\n\t\t\tcompatibility: \"post\",\n\t\t\tdescription: \"Highlight the post with a yellow glowing ring of glow.\",\n\n\t\t\trun: function(parameter, returns, to_pass, compatibility) {\n\n\t\t\t\tfor (var i = 0; i < to_pass.length; i++) {\n\t\t\t\t\tif (compatibility[i] === \"post\") {\n\t\t\t\t\t\t$(to_pass[i]).css(\"box-shadow\", \"0px 0px 10px 4px yellow\");\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\tdim_post: {\n\n\t\t\ttext: \"Dim the post\",\n\t\t\tcompatibility: \"post\",\n\t\t\tdescription: \"Dims the posts a lil bit.\",\n\n\t\t\trun: function(parameter, returns, to_pass, compatibility) {\n\n\t\t\t\t// Parameter -> \"%1 is happening!\"\n\t\t\t\t// Returns \t -> the list of %1s and stuff.\n\t\t\t\t// To_Pass \t -> passed objects, such as a post\n\t\t\t\t// Compatibility -> \"post\", \"time\", etc.\n\n\t\t\t\tvar on_click = function() {\n\t\t\t\t\tif ($(this).hasClass(\"active\")) {\n\t\t\t\t\t\t$(this).closest(\".post.post_full\").removeClass(\"xkit-servant-dimmed-but-active\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t$(this).closest(\".post.post_full\").addClass(\"xkit-servant-dimmed-but-active\");\n\t\t\t\t};\n\n\t\t\t\tfor (var i = 0; i < to_pass.length; i++) {\n\t\t\t\t\tif (compatibility[i] === \"post\") {\n\t\t\t\t\t\t$(to_pass[i]).addClass(\"xkit-servant-dimmed\");\n\t\t\t\t\t\t$(to_pass[i]).find(\".post_control_menu.creator\").click(on_click);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\tlike_post: {\n\n\t\t\ttext: \"Like the post\",\n\t\t\tcompatibility: \"post\",\n\t\t\tdescription: \"Automatically likes the post\",\n\n\t\t\trun: function(parameter, returns, to_pass, compatibility) {\n\n\t\t\t\t// Parameter -> \"%1 is happening!\"\n\t\t\t\t// Returns \t -> the list of %1s and stuff.\n\t\t\t\t// To_Pass \t -> passed objects, such as a post\n\t\t\t\t// Compatibility -> \"post\", \"time\", etc.\n\n\t\t\t\tfor (var i = 0; i < to_pass.length; i++) {\n\t\t\t\t\tif (compatibility[i] === \"post\") {\n\t\t\t\t\t\t$(to_pass[i]).find(\".post_control.like\").not(\".liked\").trigger('click');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\tunlike_post: {\n\n\t\t\ttext: \"Unlike the post\",\n\t\t\tcompatibility: \"post\",\n\t\t\tdescription: \"Automatically unlikes the post\",\n\n\t\t\trun: function(parameter, returns, to_pass, compatibility) {\n\n\t\t\t\t// Parameter -> \"%1 is happening!\"\n\t\t\t\t// Returns \t -> the list of %1s and stuff.\n\t\t\t\t// To_Pass \t -> passed objects, such as a post\n\t\t\t\t// Compatibility -> \"post\", \"time\", etc.\n\n\t\t\t\tfor (var i = 0; i < to_pass.length; i++) {\n\t\t\t\t\tif (compatibility[i] === \"post\") {\n\t\t\t\t\t\t$(to_pass[i]).find(\".post_control.like.liked\").trigger('click');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\tcolor_post: {\n\n\t\t\ttext: \"Colorize the post\",\n\t\t\tcompatibility: \"post\",\n\t\t\tdescription: \"Puts a colored band on top the post\",\n\t\t\ttype: \"color\",\n\n\t\t\trun: function(parameter, returns, to_pass, compatibility) {\n\n\t\t\t\t// Parameter -> \"%1 is happening!\"\n\t\t\t\t// Returns \t -> the list of %1s and stuff.\n\t\t\t\t// To_Pass \t -> passed objects, such as a post\n\t\t\t\t// Compatibility -> \"post\", \"time\", etc.\n\n\t\t\t\tfor (var i = 0; i < to_pass.length; i++) {\n\t\t\t\t\tif (compatibility[i] === \"post\") {\n\t\t\t\t\t\t$(to_pass[i]).addClass(\"servant-post-colorize\");\n\t\t\t\t\t\t$(to_pass[i]).addClass(\"servant-post-color_\" + parameter.replace(\"#\", \"\"));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\tsep_99: {\n\n\t\t\ttext: \"Flow\",\n\t\t\ttype: \"separator\"\n\n\t\t},\n\n\t\task_me: {\n\n\t\t\ttext: \"Ask me before continuing\",\n\t\t\tcompatibility: \"\",\n\t\t\ttype: \"text\",\n\t\t\tstop: true,\n\t\t\tplaceholder: \"ie: 'You really wanna run the code?'\",\n\t\t\tdescription: \"Shows a confirmation window before moving to the next action, stops if you cancel.\",\n\n\t\t\trun: function(parameter) {\n\n\t\t\t\tif (confirm(\"XKit Servant Message\\nPlease confirm the action.\\n\\n\" + parameter)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t},\n\n\t\tdelete: {\n\n\t\t\ttext: \"Delete this servant\",\n\t\t\tcompatibility: \"\",\n\t\t\ttype: \"flow\",\n\t\t\tstop: true,\n\t\t\tdescription: \"Deletes this servant completely.\",\n\n\t\t\trun: function(parameters, returns, to_pass, compatibility, servant_object) {\n\n\t\t\t\tXKit.extensions.servant.delete_servant(servant_object.id);\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t},\n\n\t\tsep_100a: {\n\n\t\t\ttext: \"XKit\",\n\t\t\ttype: \"separator\"\n\n\t\t},\n\n\t\tenable_extension: {\n\n\t\t\ttext: \"Enable Extension\",\n\t\t\tcompatibility: \"\",\n\t\t\ttype: \"extension\",\n\t\t\tdescription: \"Enables and runs an extension, if it's disabled\",\n\n\t\t\trun: function(parameter, returns) {\n\n\t\t\t\tsetTimeout(function() {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\tif (XKit.installed.check(parameter) === true) {\n\t\t\t\t\t\t\tif (XKit.installed.enabled(parameter) === false) {\n\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tif (typeof XKit.extensions[parameter].preferences !== \"undefined\") {\n\t\t\t\t\t\t\t\t\t\tXKit.extensions.xkit_main.load_extension_preferences(parameter);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tXKit.extensions[parameter].run();\n\t\t\t\t\t\t\t\t\tXKit.installed.enable(parameter);\n\t\t\t\t\t\t\t\t\tXKit.notifications.add(\"Enabled '\" + parameter + \"'\", \"ok\");\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\tconsole.error(\"Can not run \" + parameter + \": \" + e.message);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch (e) {\n\n\t\t\t\t\t\tconsole.error(\"Can't disable \" + parameter + \", \" + e.message);\n\n\t\t\t\t\t}\n\n\n\t\t\t\t}, 1000);\n\n\t\t\t}\n\n\t\t},\n\n\t\tdisable_extension: {\n\n\t\t\ttext: \"Disable Extension\",\n\t\t\tcompatibility: \"\",\n\t\t\ttype: \"extension\",\n\t\t\tdescription: \"Disables and stop an extension, if it's enabled and running.
      Please note that some extensions might need you
      to refresh the page to be disabled completely and properly.\",\n\n\t\t\trun: function(parameter, returns) {\n\n\t\t\t\tsetTimeout(function() {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\tif (XKit.installed.check(parameter) === true) {\n\t\t\t\t\t\t\tif (XKit.installed.enabled(parameter) === true) {\n\t\t\t\t\t\t\t\tXKit.installed.disable(parameter);\n\t\t\t\t\t\t\t\tXKit.extensions[parameter].destroy();\n\t\t\t\t\t\t\t\tXKit.notifications.add(\"Disabled '\" + parameter + \"'\", \"ok\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch (e) {\n\n\t\t\t\t\t\tconsole.error(\"Can't disable \" + parameter + \", \" + e.message);\n\n\t\t\t\t\t}\n\n\n\t\t\t\t}, 1000);\n\n\n\t\t\t}\n\n\t\t},\n\n\t\tsep_100: {\n\n\t\t\ttext: \"Miscellaneous\",\n\t\t\ttype: \"separator\"\n\n\t\t},\n\n\t\trun_js: {\n\n\t\t\ttext: \"Run Javascript Code\",\n\t\t\tcompatibility: \"\",\n\t\t\ttype: \"textarea\",\n\t\t\tplaceholder: \"ie: 'alert("%1 happened!");'\",\n\t\t\tdescription: \"Lets you run Javascript Code.
      JQuery and XKit API is supported.\",\n\n\t\t\trun: function(parameter, returns, to_pass, compatibility) {\n\n\t\t\t\tvar parameter_fixed = parameter;\n\n\t\t\t\tfor (var i = 0; i <= 10; i++) {\n\t\t\t\t\tparameter_fixed = parameter_fixed.replace(\"%\" + (i + 1), returns[i]);\n\t\t\t\t}\n\n\t\t\t\tvar m_post = \"\";\n\n\t\t\t\tfor (var j = 0; j < to_pass.length; j++) {\n\t\t\t\t\tif (compatibility[j] === \"post\") {\n\t\t\t\t\t\tm_post = $(to_pass[j]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (m_post !== \"\" && m_post.length > 0) {\n\t\t\t\t\t// eslint-disable-next-line no-unused-vars\n\t\t\t\t\tvar post = m_post[0];\n\t\t\t\t}\n\n\t\t\t\teval(parameter_fixed + \"\\n//# sourceURL=xkit/servant/servant\" + (new Date()).getTime() + \".js\");\n\n\t\t\t}\n\n\t\t},\n\n\t\trefresh: {\n\n\t\t\ttext: \"Refresh the page\",\n\t\t\tcompatibility: \"\",\n\t\t\tdescription: \"Reloads the page.
      Can be useful after disabling/enabling an extension.\",\n\n\t\t\trun: function(parameter, returns) {\n\n\t\t\t\tlocation.reload();\n\n\t\t\t}\n\n\t\t},\n\n\t},\n\n\tload_servants: function() {\n\n\t\tvar servants_load = XKit.storage.get(\"servant\", \"servants\", \"\");\n\n\t\ttry {\n\n\t\t\tXKit.extensions.servant.servants = JSON.parse(servants_load);\n\t\t\tconsole.log(\"Servant loaded \" + XKit.extensions.servant.servants.length + \" servants.\");\n\n\t\t} catch (e) {\n\n\t\t\tXKit.extensions.servant.servants = [];\n\t\t\tXKit.extensions.servant.save_servants();\n\n\t\t}\n\n\t},\n\n\tsave_servants: function() {\n\n\t\tXKit.storage.set(\"servant\", \"servants\", JSON.stringify(XKit.extensions.servant.servants));\n\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif ($(\"body\").hasClass(\"xkit-servant-running\")) { console.log(\"Not going to run Servant again, no I won't.\"); return; }\n\n\t\t$(\"body\").addClass(\"xkit-servant-running\");\n\n\t\tXKit.tools.init_css(\"servant\");\n\n\t\tthis.load_servants();\n\t\tthis.run_servants();\n\n\t\t$(document).on(\"click\", \"#glass_overlay\", function() { $(\".xkit-servant-dimmed-but-active\").removeClass(\"xkit-servant-dimmed-but-active\"); });\n\n\t},\n\n\truns_on_posts: [],\n\n\trun_servants: function() {\n\n\t\tvar m_servants = XKit.extensions.servant.servants;\n\n\t\tif (m_servants.length === 0) { return; }\n\n\t\tvar runs_on_posts = [];\n\n\t\tfor (var i = 0; i < m_servants.length; i++) {\n\n\t\t\tvar m_result = XKit.extensions.servant.run_servant(m_servants[i], false);\n\n\t\t\tif (m_result == \"post\") {\n\t\t\t\t// This thing has a runs_on mode, for posts.\n\t\t\t\truns_on_posts.push(m_servants[i]);\n\t\t\t}\n\n\t\t}\n\n\t\tconsole.log(\"- - -- -- - - - -RUNS ON POSTS - -- - - - - -- - - -\");\n\t\tconsole.log(runs_on_posts);\n\n\t\tXKit.extensions.servant.runs_on_posts = [];\n\n\t\tif (runs_on_posts.length > 0) {\n\n\t\t\tXKit.extensions.servant.runs_on_posts = runs_on_posts;\n\t\t\tXKit.post_listener.add(\"servant\", XKit.extensions.servant.do_posts);\n\t\t\tXKit.extensions.servant.do_posts();\n\t\t}\n\n\t},\n\n\tcolor_by_number: function() {\n\t\tif ($(\".servant-post-colorize\").length > 0) {\n\t\t\t$(\".servant-post-colorize\").each(function() {\n\t\t\t\tvar colorArray = [];\n\t\t\t\tvar classList = $(this).attr('class').split(/\\s+/);\n\t\t\t\t$.each(classList, function(index, value) {\n\t\t\t\t\tif (value.search(\"servant-post-color_\") > -1) {\n\t\t\t\t\t\t$.each(value.match(/_([a-zA-Z0-9]){6}/g), function(iIndex, iValue) {\n\t\t\t\t\t\t\tcolorArray.push(iValue);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tfor (var i = 0; i < colorArray.length; i++) {\n\t\t\t\t\tcolorArray[i] = colorArray[i].replace(\"_\", \"\");\n\t\t\t\t}\n\t\t\t\tvar uniques = [...new Set(colorArray)]; //eslint-disable-line no-undef\n\t\t\t\tvar backgroundString = \"\";\n\t\t\t\tfor (var j = 0; j < uniques.length; j++) {\n\t\t\t\t\tbackgroundString += `, #${uniques[j]} ${(100 / uniques.length) * j}%, #${uniques[j]} ${(100 / uniques.length) * (j + 1)}%`;\n\t\t\t\t}\n\t\t\t\t$(this).append(\"
       
      \");\n\t\t\t});\n\t\t}\n\t},\n\n\tdo_posts: function() {\n\n\t\tvar posts = XKit.interface.get_posts(\"xkit-servants-all-done\");\n\n\t\t$(posts).each(function() {\n\n\t\t\tfor (var i = 0; i < XKit.extensions.servant.runs_on_posts.length; i++) {\n\t\t\t\tXKit.extensions.servant.run_servant(XKit.extensions.servant.runs_on_posts[i], true);\n\t\t\t}\n\n\t\t\t$(this).addClass(\"xkit-servant-all-done\");\n\n\t\t});\n\n\t\tXKit.extensions.servant.color_by_number();\n\t},\n\n\trun_servant: function(obj, post_mode) {\n\n\t\tconsole.log(\"Running servant with id \" + obj.id);\n\t\tconsole.log(obj);\n\n\t\t// to-do: check last run time.\n\n\t\tvar causes = obj.causes;\n\t\tvar actions = obj.actions;\n\n\t\tvar returns = [];\n\t\tvar to_pass = [];\n\t\tvar compatibility = [];\n\n\t\tvar do_run = -1;\n\t\tvar has_runs_on = false;\n\t\tvar does_run_on = \"\";\n\n\t\tfor (var i = 0; i < causes.length; i++) {\n\n\t\t\tif (XKit.extensions.servant.causes[causes[i].id].runs_on === \"post\") {\n\t\t\t\thas_runs_on = true;\n\t\t\t\tdoes_run_on = \"post\";\n\t\t\t}\n\n\t\t}\n\n\t\tvar m_object;\n\n\t\tif (has_runs_on === true && does_run_on === \"post\") {\n\n\t\t\tif (!post_mode) {\n\n\t\t\t\t// We will go through these later.\n\t\t\t\tconsole.log(\"Skipping because not in post_mode, and has class post mode.\");\n\t\t\t\treturn \"post\";\n\n\t\t\t} else {\n\n\t\t\t\tm_object = $(\".posts .post\").not(\".xkit-servant-\" + obj.id).not(\"#new_post\").first();\n\t\t\t\tif (m_object.length === 0) { return false; }\n\n\t\t\t}\n\n\t\t}\n\n\t\tcauses.forEach(function(cause) {\n\t\t\tvar to_run = XKit.extensions.servant.causes[cause.id].run;\n\n\t\t\tvar m_result = false;\n\n\t\t\tif (XKit.extensions.servant.causes[cause.id].runs_on === \"post\") {\n\n\t\t\t\tm_result = to_run(cause.value, $(m_object));\n\n\t\t\t} else {\n\n\t\t\t\tm_result = to_run(cause.value);\n\n\t\t\t}\n\n\t\t\t// Save the \"return\", ie: %1, %2..\n\t\t\treturns.push(m_result.return);\n\n\t\t\t// Save the pass, which can be a post object, etc.\n\t\t\tto_pass.push(m_result.pass);\n\n\t\t\t// We should save this too, so we wouldn't, for example,\n\t\t\t// push a post object to a function that doesn't take post objects.\n\t\t\tcompatibility.push(XKit.extensions.servant.causes[cause.id].compatibility);\n\n\t\t\tif (m_result.run === false || do_run === 0) {\n\t\t\t\tdo_run = 0;\n\t\t\t} else {\n\t\t\t\tdo_run = 1;\n\t\t\t}\n\t\t});\n\n\t\t$(m_object).addClass(\"xkit-servant-\" + obj.id);\n\n\t\tif (do_run !== 1) { return; }\n\n\t\tactions.forEach(function(action) {\n\n\t\t\tvar m_result = XKit.extensions.servant.actions[action.id].run(action.value, returns, to_pass, compatibility, obj);\n\n\t\t\tif (XKit.extensions.servant.actions[action.id].stop === true) {\n\n\t\t\t\t// This is a flow thingy, where we must wait for it to return a value\n\t\t\t\t// so we can go on.\n\n\t\t\t\tif (m_result === false) {\n\t\t\t\t\t// We should stop.\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t});\n\n\t\treturn \"\";\n\n\t},\n\n\tadd_cause_count: 0,\n\n\tshow_add: function(m_div) {\n\n\t\tvar m_html = \"\";\n\n\t\tXKit.extensions.servant.add_cause_count = 0;\n\t\tXKit.extensions.servant.add_action_count = 0;\n\n\t\t// ---- Causes\n\n\t\tm_html = m_html + \"
      \" +\n\t\t\t\t\t\"
      When
      \" +\n\t\t\t\t\t\tXKit.extensions.servant.add_field_cause();\n\n\t\tm_html = m_html + \"
      Add another
      \";\n\t\tm_html = m_html + \"
      \";\n\n\t\t// ---- Actions\n\n\t\tm_html = m_html + \"
      \" +\n\t\t\t\t\t\"
      Do
      \" +\n\t\t\t\t\t\tXKit.extensions.servant.add_field_action();\n\n\t\tm_html = m_html + \"
      Add another
      \";\n\t\tm_html = m_html + \"
      \";\n\n\t\t// ---- Additional\n\n\t\t// m_html = m_html + \"
       
        Run this servant even when only one of the requirements is met. (OR mode)
      \";\n\n\n\t\tm_html = m_html + \"
      There is an incompatibility here.
      For example, you can't create a servant with the job \\\"When the time is 7 PM, block the post\\\": please check the combination and try again. Click Help on bottom right for more information.
      \";\n\n\t\tm_html = m_html + \"
      Be very careful! The \\\"Run Javascript Code\\\" option is for experts. Do not copy/paste and run code from people you don't know and trust, very bad things can happen.
      \";\n\n\t\tXKit.window.show(\"Add Servant\",\n\t\t\tm_html,\n\t\t\t\"question\",\n\t\t\t'
      Add Servant
      ' +\n\t\t\t'
      Cancel
      ' +\n\t\t\t'
      Help →
      ',\n\t\ttrue);\n\n\t\tXKit.extensions.servant.bind_actions_on_add_window();\n\t\tXKit.extensions.servant.react_to_selection_change();\n\t\t$(\"#tiptip_holder\").css(\"z-index\", \"99000000\");\n\n\t\t$(\".xkit-servant-add-more-actions\").click(function() {\n\n\t\t\t$(\".xkit-servant-do\")\n\t\t\t\t.find(\".xkit-servant-add-more\")\n\t\t\t\t.before(XKit.extensions.servant.add_field_action());\n\n\t\t\tif ($(\".xkit-servant-option-line-action\").length === 5) {\n\t\t\t\t$(\".xkit-servant-add-more-actions\").css(\"display\", \"none\");\n\t\t\t}\n\n\t\t\tcenterIt($(\"#xkit-window\"));\n\n\t\t\tXKit.extensions.servant.readjust_lines($(\".xkit-servant-option-action-line-0\"));\n\n\t\t\tXKit.extensions.servant.bind_actions_on_add_window();\n\t\t\tXKit.extensions.servant.react_to_selection_change();\n\n\t\t});\n\n\t\t$(\".xkit-servant-add-more-causes\").click(function() {\n\n\t\t\t$(\".xkit-servant-when\")\n\t\t\t\t.find(\".xkit-servant-add-more\")\n\t\t\t\t.before(XKit.extensions.servant.add_field_cause());\n\n\t\t\tif ($(\".xkit-servant-option-line-cause\").length === 3) {\n\t\t\t\t$(\".xkit-servant-add-more-causes\").css(\"display\", \"none\");\n\t\t\t}\n\n\t\t\tcenterIt($(\"#xkit-window\"));\n\n\t\t\tXKit.extensions.servant.readjust_lines($(\".xkit-servant-option-cause-line-0\"));\n\n\t\t\tXKit.extensions.servant.bind_actions_on_add_window();\n\t\t\tXKit.extensions.servant.react_to_selection_change();\n\n\n\t\t});\n\n\t\t$(\"#xkit-servant-add\").click(function() {\n\n\t\t\tXKit.extensions.servant.process_add(m_div);\n\n\t\t});\n\n\t},\n\n\tcheck_if_empty_value: function() {\n\n\t\tvar found = false;\n\n\t\t$(\".xkit-servant-option-textbox\").each(function() {\n\n\t\t\tvar $this = $(this);\n\t\t\tif ($.trim($this.val()) === \"\") {\n\t\t\t\tfound = true;\n\t\t\t\tif ($this.attr(\"data-old-placeholder\")) { return; }\n\t\t\t\t$this\n\t\t\t\t\t.css(\"border-color\", \"red\")\n\t\t\t\t\t.attr(\"data-old-placeholder\", $this.attr(\"placeholder\"))\n\t\t\t\t\t.attr(\"placeholder\", \"You can't leave this empty!\")\n\t\t\t\t\t.val(\"\")\n\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t$this\n\t\t\t\t\t\t\t.removeAttr(\"style\")\n\t\t\t\t\t\t\t.attr(\"placeholder\", $this.attr(\"data-old-placeholder\"))\n\t\t\t\t\t\t\t.removeAttr(\"data-old-placeholder\")\n\t\t\t\t\t\t\t.off(\"click\");\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t});\n\n\t\t$(\".xkit-servant-option-listbox\").each(function() {\n\n\t\t\tvar $this = $(this);\n\t\t\tif ($.trim($this.val()) === \"\") {\n\t\t\t\tfound = true;\n\t\t\t\tif ($this.attr(\"data-old-placeholder\")) { return; }\n\t\t\t\t$this\n\t\t\t\t\t.css(\"border-color\", \"red\")\n\t\t\t\t\t.attr(\"data-old-placeholder\", $this.attr(\"placeholder\"))\n\t\t\t\t\t.attr(\"placeholder\", \"You can't leave this empty!\")\n\t\t\t\t\t.val(\"\")\n\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t$this\n\t\t\t\t\t\t\t.removeAttr(\"style\")\n\t\t\t\t\t\t\t.attr(\"placeholder\", $this.attr(\"data-old-placeholder\"))\n\t\t\t\t\t\t\t.removeAttr(\"data-old-placeholder\")\n\t\t\t\t\t\t\t.off(\"click\");\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t});\n\n\t\treturn found;\n\n\t},\n\n\tget_add_value: function(obj) {\n\n\t\tif ($(obj).find(\".xkit-servant-option-textbox\").length > 0) {\n\n\t\t\treturn $(obj).find(\".xkit-servant-option-textbox\").val();\n\n\t\t}\n\n\t\tif ($(obj).find(\".xkit-servant-option-listbox\").length > 0) {\n\n\t\t\treturn $(obj).find(\".xkit-servant-option-listbox\").val();\n\n\t\t}\n\n\t\tif ($(obj).find(\".xkit-servant-option-textareabox\").length > 0) {\n\n\t\t\treturn $(obj).find(\".xkit-servant-option-textareabox\").val();\n\n\t\t}\n\n\t\treturn \"\";\n\n\t},\n\n\tprocess_add: function(m_div) {\n\n\t\t// Get the WHENs and DOs.\n\n\t\tif ($(\"#xkit-servant-add\").hasClass(\"disabled\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar when = [];\n\t\tvar action = [];\n\n\t\tif (XKit.extensions.servant.check_if_empty_value()) { return; }\n\n\t\t$(\".xkit-servant-option-line-cause\").each(function() {\n\n\t\t\tvar m_object = {};\n\n\t\t\tm_object.id = $(this).find(\".xkit-servant-add-option\").val();\n\t\t\tm_object.value = XKit.extensions.servant.get_add_value($(this));\n\n\t\t\twhen.push(m_object);\n\n\t\t});\n\n\t\t$(\".xkit-servant-option-line-action\").each(function() {\n\n\t\t\tvar m_object = {};\n\n\t\t\tm_object.id = $(this).find(\".xkit-servant-add-option\").val();\n\t\t\tm_object.value = XKit.extensions.servant.get_add_value($(this));\n\n\t\t\taction.push(m_object);\n\n\t\t});\n\n\t\tvar m_servant = {};\n\n\t\tm_servant.id = XKit.tools.random_string() + Math.round(new Date().getTime() / 1000);\n\t\tm_servant.causes = when;\n\t\tm_servant.actions = action;\n\t\tm_servant.create_time = Math.round(new Date().getTime() / 1000);\n\t\tm_servant.last_run = -1;\n\n\t\tm_servant.title = $.trim($(\"#xkit-servant-add-title\").val());\n\n\t\tXKit.extensions.servant.load_servants();\n\n\t\tXKit.extensions.servant.servants.push(m_servant);\n\n\t\tXKit.extensions.servant.save_servants();\n\n\t\tXKit.window.close();\n\n\t\tXKit.extensions.xkit_preferences.restart_extension(\"servant\");\n\n\t\tif (typeof m_div !== \"undefined\") {\n\t\t\tXKit.extensions.servant.cpanel(m_div);\n\t\t}\n\n\t},\n\n\tadd_window_option_get_real_value: function(obj) {\n\n\t\tvar m_val = $(obj).val();\n\n\t\tvar to_return = \"\";\n\n\t\t$(obj).find(\"option\").each(function() {\n\n\t\t\tif ($(this).attr('value') === m_val) {\n\n\t\t\t\tto_return = $(this);\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t});\n\n\t\treturn to_return;\n\n\t},\n\n\tsettings_box_text: function(obj, parent, real_val) {\n\n\t\tvar m_placeholder = \"ie: 'xkit'\";\n\n\t\tif (typeof $(real_val).attr('data-placeholder') !== \"undefined\" && $(real_val).attr('data-placeholder') !== \"undefined\") { m_placeholder = $(real_val).attr('data-placeholder'); }\n\n\t\tm_placeholder = XKit.tools.replace_all(m_placeholder, \"\\\"\", \""\");\n\n\t\t$(obj).html(\"\");\n\n\t},\n\n\tsettings_box_textarea: function(obj, parent, real_val) {\n\n\t\tvar m_placeholder = \"ie: 'xkit'\";\n\n\t\tif (typeof $(real_val).attr('data-placeholder') !== \"undefined\" && $(real_val).attr('data-placeholder') !== \"undefined\") { m_placeholder = $(real_val).attr('data-placeholder'); }\n\n\t\tm_placeholder = XKit.tools.replace_all(m_placeholder, \"\\\"\", \""\");\n\n\t\t$(parent).parent().addClass(\"servant-contains-textarea\");\n\n\t\t$(obj).html(\"\");\n\n\t\t$(\".xkit-servant-option-textareabox\").bind(\"keydown\", function(event) {\n\n\t\t\tevent.stopPropagation();\n\t\t\tevent.stopImmediatePropagation();\n\n\t\t});\n\n\t},\n\n\tsettings_box_extension: function(obj, parent, real_val) {\n\n\t\tvar m_array = XKit.installed.list();\n\n\t\tvar m_html = \"\";\n\n\t\t$(obj).html(m_html);\n\n\t},\n\n\tsettings_box_color: function(obj, parent, real_val) {\n\n\t\tvar m_html = \"\";\n\n\t\t$(obj).html(m_html);\n\n\t},\n\n\tsettings_box_post_type: function(obj, parent, real_val) {\n\n\t\tvar m_html = \"\";\n\n\t\t$(obj).html(m_html);\n\n\t},\n\n\tsettings_box_day: function(obj, parent, real_val) {\n\n\t\tvar m_html = \"\";\n\n\t\t$(obj).html(m_html);\n\n\t},\n\n\tcheck_js: function() {\n\n\t\tvar to_return = false;\n\n\t\t$(\".xkit-servant-cause-selector\").each(function() {\n\t\t\tif ($(this).val() === \"run_js\") {\n\t\t\t\tto_return = true;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t\t$(\".xkit-servant-action-selector\").each(function() {\n\t\t\tif ($(this).val() === \"run_js\") {\n\t\t\t\tto_return = true;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t\treturn to_return;\n\n\t},\n\n\tcheck_compatibility: function() {\n\n\t\t// show xkit-servant-compatibility-error?\n\t\tvar m_compatibility_cause = \"\";\n\t\tvar m_compatibility_action = \"\";\n\n\t\t$(\".xkit-servant-cause-selector\").each(function() {\n\n\t\t\tif (typeof XKit.extensions.servant.add_window_option_get_real_value($(this)).attr('data-compatibility') !== \"undefined\") {\n\n\t\t\t\tif (m_compatibility_cause === \"\") {\n\t\t\t\t\tif (typeof XKit.extensions.servant.add_window_option_get_real_value($(this)).attr('data-compatibility') !== \"undefined\") {\n\t\t\t\t\t\tm_compatibility_cause = XKit.extensions.servant.add_window_option_get_real_value($(this)).attr('data-compatibility');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t});\n\n\t\t$(\".xkit-servant-action-selector\").each(function() {\n\n\t\t\tif (typeof XKit.extensions.servant.add_window_option_get_real_value($(this)).attr('data-compatibility') !== \"undefined\") {\n\n\t\t\t\tif (m_compatibility_action === \"\") {\n\t\t\t\t\tif (typeof XKit.extensions.servant.add_window_option_get_real_value($(this)).attr('data-compatibility') !== \"undefined\") {\n\t\t\t\t\t\tm_compatibility_action = XKit.extensions.servant.add_window_option_get_real_value($(this)).attr('data-compatibility');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t});\n\n\t\tif (m_compatibility_action === \"\" && m_compatibility_cause === \"\") { return false; }\n\t\tif (m_compatibility_action !== m_compatibility_cause && m_compatibility_action !== \"\") { return true; }\n\n\t\treturn false;\n\n\t},\n\n\treact_to_selection_change: function(obj) {\n\n\t\tvar selector = \".xkit-servant-add-option\";\n\n\t\tif (typeof obj !== \"undefined\") { selector = obj; }\n\n\t\t$(selector).each(function() {\n\n\t\t\tvar settings_box = $(this).parent().find(\".xkit-servant-add-option-settings\");\n\t\t\tif ($(settings_box).parent().attr('data-last-id') === $(this).val()) { return; }\n\n\t\t\t$(settings_box).html(\"\");\n\n\t\t\t$(this).removeClass(\"xkit-servant-half-option\");\n\t\t\t$(this).removeClass(\"servant-contains-textarea\");\n\n\t\t\t$(settings_box).removeClass(\"xkit-servant-options-shown\");\n\n\t\t\t$(settings_box).parent().attr('data-last-id', $(this).val());\n\n\t\t\t$(settings_box).parent().find(\".xkit-servant-help-for-line\").attr('title', XKit.extensions.servant.add_window_option_get_real_value($(settings_box).parent().find(\".xkit-servant-add-option\")).attr('data-description')).tipTip({ delay: 0, defaultPosition: \"right\", maxWidth: \"300px\" });\n\n\t\t\tif (XKit.extensions.servant.add_window_option_get_real_value($(this)).attr('data-type') === \"text\") {\n\n\t\t\t\t$(this).addClass(\"xkit-servant-half-option\");\n\t\t\t\t$(settings_box).addClass(\"xkit-servant-options-shown\");\n\n\t\t\t\tXKit.extensions.servant.settings_box_text(settings_box, this, XKit.extensions.servant.add_window_option_get_real_value($(this)));\n\n\t\t\t}\n\n\t\t\tif (XKit.extensions.servant.add_window_option_get_real_value($(this)).attr('data-type') === \"textarea\") {\n\n\t\t\t\t$(this).addClass(\"xkit-servant-half-option\");\n\t\t\t\t$(settings_box).addClass(\"xkit-servant-options-shown\");\n\n\t\t\t\tXKit.extensions.servant.settings_box_textarea(settings_box, this, XKit.extensions.servant.add_window_option_get_real_value($(this)));\n\n\t\t\t}\n\n\t\t\tif (XKit.extensions.servant.add_window_option_get_real_value($(this)).attr('data-type') === \"color\") {\n\n\t\t\t\t$(this).addClass(\"xkit-servant-half-option\");\n\t\t\t\t$(settings_box).addClass(\"xkit-servant-options-shown\");\n\n\t\t\t\tXKit.extensions.servant.settings_box_color(settings_box, this, XKit.extensions.servant.add_window_option_get_real_value($(this)));\n\n\t\t\t}\n\n\t\t\tif (XKit.extensions.servant.add_window_option_get_real_value($(this)).attr('data-type') === \"post_type\") {\n\n\t\t\t\t$(this).addClass(\"xkit-servant-half-option\");\n\t\t\t\t$(settings_box).addClass(\"xkit-servant-options-shown\");\n\n\t\t\t\tXKit.extensions.servant.settings_box_post_type(settings_box, this, XKit.extensions.servant.add_window_option_get_real_value($(this)));\n\n\t\t\t}\n\n\t\t\tif (XKit.extensions.servant.add_window_option_get_real_value($(this)).attr('data-type') === \"day\") {\n\n\t\t\t\t$(this).addClass(\"xkit-servant-half-option\");\n\t\t\t\t$(settings_box).addClass(\"xkit-servant-options-shown\");\n\n\t\t\t\tXKit.extensions.servant.settings_box_day(settings_box, this, XKit.extensions.servant.add_window_option_get_real_value($(this)));\n\n\t\t\t}\n\n\t\t\tif (XKit.extensions.servant.add_window_option_get_real_value($(this)).attr('data-type') === \"extension\") {\n\n\t\t\t\t$(this).addClass(\"xkit-servant-half-option\");\n\t\t\t\t$(settings_box).addClass(\"xkit-servant-options-shown\");\n\n\t\t\t\tXKit.extensions.servant.settings_box_extension(settings_box, this, XKit.extensions.servant.add_window_option_get_real_value($(this)));\n\n\t\t\t}\n\n\t\t\tif (typeof XKit.extensions.servant.add_window_option_get_real_value($(this)).attr('data-returns') !== \"undefined\" && XKit.extensions.servant.add_window_option_get_real_value($(this)).attr('data-returns') !== \"undefined\") {\n\n\t\t\t\tvar m_id = $(settings_box).parent().attr('data-id');\n\n\t\t\t\t$(settings_box).parent().find(\".xkit-servant-add-option-returns\").attr('title', \"Returns:
      %\" + (parseInt(m_id) + 1) + \": \" + XKit.extensions.servant.add_window_option_get_real_value($(this)).attr('data-returns')).tipTip({ delay: 0, defaultPosition: \"left\" });\n\n\t\t\t\t$(settings_box).parent().find(\".xkit-servant-help-for-line\").attr('title', XKit.extensions.servant.add_window_option_get_real_value($(this)).attr('data-description')).tipTip({ delay: 0, defaultPosition: \"right\", maxWidth: \"300px\" });\n\n\t\t\t\t$(settings_box).parent().addClass(\"xkit-servant-return-values-shown\");\n\n\t\t\t} else {\n\n\t\t\t\t$(settings_box).parent().removeClass(\"xkit-servant-return-values-shown\");\n\n\t\t\t}\n\n\t\t});\n\n\t\tif (XKit.extensions.servant.check_js() === true) {\n\t\t\t$(\".xkit-servant-javascript-warning\").css(\"display\", \"block\");\n\t\t} else {\n\t\t\t$(\".xkit-servant-javascript-warning\").css(\"display\", \"none\");\n\t\t}\n\n\t\tif (XKit.extensions.servant.check_compatibility() === true) {\n\t\t\t$(\".xkit-servant-compatibility-error\").css(\"display\", \"block\");\n\t\t\t$(\"#xkit-servant-add\").addClass(\"disabled\");\n\t\t} else {\n\t\t\t$(\".xkit-servant-compatibility-error\").css(\"display\", \"none\");\n\t\t\t$(\"#xkit-servant-add\").removeClass(\"disabled\");\n\t\t}\n\n\t\tcenterIt($(\"#xkit-window\"));\n\n\t},\n\n\tbind_actions_on_add_window: function() {\n\n\t\t$(\".xkit-servant-add-delete-line\").unbind(\"click\");\n\t\t$(\".xkit-servant-add-delete-line\").bind(\"click\", function() {\n\n\t\t\tvar id = $(this).attr('data-id');\n\n\t\t\tif (id === \"0\") { return; }\n\n\t\t\t$(this).parent().fadeOut('fast', function() {\n\t\t\t\tvar $obj = $(this);\n\t\t\t\t$obj.remove();\n\t\t\t\tif ($obj.hasClass(\"xkit-servant-option-line-cause\")) {\n\t\t\t\t\t$(\".xkit-servant-add-more-causes\").removeAttr(\"style\");\n\t\t\t\t} else {\n\t\t\t\t\t$(\".xkit-servant-add-more-actions\").removeAttr(\"style\");\n\t\t\t\t}\n\t\t\t\tXKit.extensions.servant.readjust_lines($obj);\n\t\t\t\tcenterIt($(\"#xkit-window\"));\n\t\t\t\tXKit.extensions.servant.react_to_selection_change();\n\t\t\t});\n\n\t\t});\n\n\t\t$(\".xkit-servant-add-option\").unbind(\"change\");\n\t\t$(\".xkit-servant-add-option\").bind(\"change\", function() {\n\n\t\t\tXKit.extensions.servant.react_to_selection_change();\n\n\t\t});\n\n\t\t$(\"#xkit-servant-help\")\n\t\t\t.unbind(\"click\")\n\t\t\t.bind(\"click\", XKit.extensions.servant.show_help);\n\n\t},\n\n\treadjust_lines: function(obj) {\n\n\t\tvar line_obj = $(obj);\n\n\t\tvar selector = \"\";\n\n\t\tvar is_action = false;\n\n\t\tif ($(line_obj).hasClass(\"xkit-servant-option-line-cause\")) {\n\t\t\tselector = \".xkit-servant-option-line-cause\";\n\t\t} else {\n\t\t\tselector = \".xkit-servant-option-line-action\";\n\t\t\tis_action = true;\n\t\t}\n\n\t\tvar index = 0;\n\n\t\t$(selector).each(function() {\n\n\t\t\t$(this).attr('data-id', index);\n\n\t\t\tfor (var i = 0; i < 10; i++) {\n\t\t\t\t$(this).removeClass(\"xkit-servant-option-action-line-\" + i);\n\t\t\t\t$(this).removeClass(\"xkit-servant-option-cause-line-\" + i);\n\t\t\t}\n\n\t\t\t$(this).find(\".xkit-servant-add-delete-line\").attr('data-id', index);\n\n\t\t\t$(this).find(\".xkit-servant-help-for-line\").attr('data-id', index);\n\n\t\t\tif (is_action) {\n\t\t\t\t$(this).addClass(\"xkit-servant-option-action-line-\" + index);\n\t\t\t\t$(this).find(\".xkit-servant-add-option-settings\").attr('id', \"servant-action-\" + index + \"-settings\");\n\t\t\t} else {\n\t\t\t\t$(this).addClass(\"xkit-servant-option-cause-line-\" + index);\n\t\t\t\t$(this).find(\".xkit-servant-add-option-settings\").attr('id', \"servant-cause-\" + index + \"-settings\");\n\t\t\t}\n\n\t\t\t$(this).find(\".xkit-servant-add-option\").attr(\"id\", \"servant-cause-\" + index);\n\n\t\t\t$(this).find(\".xkit-servant-add-option-returns\").attr('title', \"Returns:
      %\" + (index + 1) + \": \" + XKit.extensions.servant.add_window_option_get_real_value($(this).find(\".xkit-servant-add-option\")).attr('data-returns')).tipTip({ delay: 0, defaultPosition: \"left\" });\n\n\t\t\t$(this).find(\".xkit-servant-help-for-line\").attr('title', XKit.extensions.servant.add_window_option_get_real_value($(this).find(\".xkit-servant-add-option\")).attr('data-description')).tipTip({ delay: 0, defaultPosition: \"right\", maxWidth: \"300px\" });\n\n\t\t\tindex++;\n\n\t\t});\n\n\t},\n\n\tadd_field_cause: function() {\n\n\t\tvar m_html = \"
       
      \";\n\n\t\tm_html = m_html + \"
       
      \";\n\n\t\tvar causes_html = \"\";\n\n\t\tfor (var obj in XKit.extensions.servant.causes) {\n\n\t\t\tvar dis_class = \"\";\n\t\t\tvar m_text = XKit.extensions.servant.causes[obj].text;\n\t\t\tif (XKit.extensions.servant.causes[obj].type === \"separator\") {\n\t\t\t\tdis_class = \"disabled\";\n\t\t\t\tm_text = \" --- \" + m_text + \" --- \";\n\t\t\t}\n\t\t\tcauses_html = causes_html + \"\";\n\n\t\t}\n\n\t\tm_html = m_html + \"\";\n\n\t\tm_html = m_html + \"
       
      \";\n\n\n\t\tm_html = m_html + \"
       
      \";\n\t\tm_html = m_html + \"
      \";\n\n\t\tXKit.extensions.servant.add_cause_count++;\n\t\treturn m_html;\n\n\t},\n\n\tadd_field_action: function() {\n\n\t\tvar m_html = \"
       
      \";\n\t\tvar causes_html = \"\";\n\n\t\tm_html = m_html + \"
       
      \";\n\n\t\tfor (var obj in XKit.extensions.servant.actions) {\n\n\t\t\tvar dis_class = \"\";\n\t\t\tvar m_text = XKit.extensions.servant.actions[obj].text;\n\t\t\tif (XKit.extensions.servant.actions[obj].type === \"separator\") {\n\t\t\t\tdis_class = \"disabled\";\n\t\t\t\tm_text = \" --- \" + m_text + \" --- \";\n\t\t\t}\n\t\t\tcauses_html = causes_html + \"\";\n\n\t\t}\n\n\t\tm_html = m_html + \"\";\n\n\t\tm_html = m_html + \"
       
      \";\n\n\t\tm_html = m_html + \"
      \";\n\n\n\t\tXKit.extensions.servant.add_action_count++;\n\t\treturn m_html;\n\n\t},\n\n\tcontrol_panel_div: \"\",\n\tservant_count_for_list: 1,\n\n\tcreate_cpanel_div: function(obj) {\n\n\t\tvar m_title = obj.title;\n\n\t\tif (!obj.title) {\n\t\t\tm_title = \"Servant #\" + XKit.extensions.servant.servant_count_for_list;\n\t\t}\n\n\t\tvar m_description = \"When \";\n\n\t\tvar m_action = \"\";\n\t\tvar m_val;\n\n\t\tif (obj.actions.length > 1) {\n\t\t\tfor (var i = 0; i < obj.actions.length; i++) {\n\t\t\t\tm_val = \"\";\n\t\t\t\tm_action = m_action + XKit.extensions.servant.actions[obj.actions[i].id].text.toLowerCase();\n\t\t\t\tif (i < obj.actions.length - 1) {\n\t\t\t\t\tm_action = m_action + \" and \";\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tm_action = XKit.extensions.servant.actions[obj.actions[0].id].text.toLowerCase();\n\t\t}\n\n\t\tif (obj.causes.length > 1) {\n\t\t\tfor (var cause_i = 0; cause_i < obj.causes.length; cause_i++) {\n\t\t\t\tvar cause = obj.causes[cause_i];\n\t\t\t\tm_val = \"\";\n\t\t\t\tif (typeof cause.value !== \"undefined\" && cause.value !== \"\") {\n\t\t\t\t\tm_val = \" \" + cause.value;\n\t\t\t\t}\n\t\t\t\tm_description = m_description + XKit.extensions.servant.causes[cause.id].text + m_val;\n\t\t\t\tif (cause_i < obj.causes.length - 1) {\n\t\t\t\t\tm_description = m_description + \" and \";\n\t\t\t\t}\n\t\t\t}\n\t\t\tm_description = m_description + \", \" + m_action;\n\t\t} else {\n\t\t\tm_val = \"\";\n\t\t\tif (typeof obj.causes[0].value !== \"undefined\" && obj.causes[0].value !== \"\") {\n\t\t\t\tm_val = \" \" + obj.causes[0].value;\n\t\t\t}\n\t\t\tm_description = m_description + XKit.extensions.servant.causes[obj.causes[0].id].text + m_val + \", \" + m_action;\n\t\t}\n\n\t\tm_description = m_description + \". \";\n\n\t\treturn\t\"
      \" +\n\t\t\t\t\"
      \" + m_title + \"
      \" +\n\t\t\t\t\"
      \" + m_description + \"
      \" +\n\t\t\t\t\"
       
      \" +\n\t\t\t\"
      \";\n\t},\n\n\tcpanel: function(m_div) {\n\n\t\tXKit.extensions.servant.control_panel_div = m_div;\n\n\t\t$(\"#xkit-servant-cp\").remove();\n\n\t\tXKit.extensions.servant.load_servants();\n\n\t\tvar servant_html = \"\";\n\n\t\tif (XKit.extensions.servant.servants.length === 0) {\n\n\t\t\tservant_html = \"
      You have no servants.
      You can add one by clicking the button above.
      \";\n\n\t\t} else {\n\n\t\t\tXKit.extensions.servant.servant_count_for_list = 1;\n\n\t\t\tfor (var i = 0; i < XKit.extensions.servant.servants.length; i++) {\n\n\t\t\t\tservant_html = servant_html + XKit.extensions.servant.create_cpanel_div(XKit.extensions.servant.servants[i]);\n\t\t\t\tXKit.extensions.servant.servant_count_for_list++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar m_html = \"
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      Add new servant..
      \" +\n\t\t\t\t\t\t\"
      You need to refresh the page for changes to take affect
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\tservant_html +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\"
      \";\n\n\n\t\t$(m_div).append(m_html);\n\n\t\t$(\"#servant-add-button\").click(function() {\n\n\t\t\tXKit.extensions.servant.show_add(m_div);\n\n\t\t});\n\n\t\t$(\".xkit-servant-item-delete\").click(function() {\n\n\t\t\tvar m_id = $(this).attr('data-servant-id');\n\t\t\tXKit.extensions.servant.delete_servant(m_id);\n\t\t\t$(this).parent().slideUp('fast', function() {\n\n\t\t\t\t$(this).remove();\n\n\t\t\t\t$(\"#xkit-extensions-panel-right\").nanoScroller();\n\n\t\t\t\tif (XKit.extensions.servant.servants.length === 0) {\n\t\t\t\t\tXKit.extensions.servant.cpanel(XKit.extensions.servant.control_panel_div);\n\t\t\t\t}\n\n\t\t\t\tXKit.extensions.xkit_preferences.restart_extension(\"servant\");\n\n\t\t\t});\n\n\t\t});\n\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller();\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller({ scroll: 'top' });\n\n\t},\n\n\tdelete_servant: function(id) {\n\n\t\tXKit.extensions.servant.load_servants();\n\n\t\tfor (var i = 0; i < XKit.extensions.servant.servants.length; i++) {\n\n\t\t\tif (XKit.extensions.servant.servants[i].id === id) {\n\n\t\t\t\tXKit.extensions.servant.servants.splice(i, 1);\n\n\t\t\t}\n\n\t\t}\n\n\t\tXKit.extensions.servant.save_servants();\n\n\t},\n\n\tshow_help: function() {\n\n\t\tXKit.window.show(\"Servant: Introduction\",\n\t\t\t\"This extension allows you to create servants, little code snippets which run when you want them to.
      \" +\n\t\t\t\"You can also write your own Javascript code!

      \" +\n\t\t\t\"Each cause and action has a small "i" icon next to them. Select a cause or action, then hover over the icon to see what they do.\",\n\t\t\t\"info\",\n\t\t\t'
      Next →
      ' +\n\t\t\t'
      Back
      ' +\n\t\t\t'
      Close
      ');\n\n\t\t$(\"#xkit-servant-cancel-tour\").click(function() {\n\t\t\tXKit.extensions.servant.show_add(XKit.extensions.servant.control_panel_div);\n\t\t});\n\n\t\t$(\"#xkit-servant-returns\").click(function() {\n\t\t\tXKit.window.show(\"Servant: What are returns?\",\n\t\t\t\t\"Some causes "return" data. Here's how to use them.

      \" +\n\t\t\t\t\"Some servant causes have a symbol, a box with an arrow pointing out. \" +\n\t\t\t\t\"Hovering over them shows what they return. Here's an example:
      \" +\n\t\t\t\t'
      ' +\n\t\t\t\t\"This basically means that if you type "%1" on the actions panel, that %1 will get replaced with the time.\",\n\t\t\t\t\"info\",\n\t\t\t\t'
      Next →
      ' +\n\t\t\t\t'
      Close
      ',\n\t\t\ttrue);\n\t\t\t$(\"#xkit-servant-intro\").click(XKit.extensions.servant.show_help);\n\t\t\t$(\"#xkit-servant-js-intro\").click(function() {\n\t\t\t\tXKit.window.show(\"Servant: How to use JavaScript code?\",\n\t\t\t\t\t\"If you are a poweruser, you can also use JavaScript code. This allows you to do things that Servant does not support. \" +\n\t\t\t\t\t'You have access to the XKit API and to jQuery.

      ' +\n\t\t\t\t\t\"Be careful though, and never copy/paste code from untrustworthy sources!
      \" +\n\t\t\t\t\t\"You should never use code you didn't review. Do not use obfuscated code.\",\n\t\t\t\t\t\"info\",\n\t\t\t\t\t'
      Next →
      ' +\n\t\t\t\t\t'
      Close
      ',\n\t\t\t\ttrue);\n\t\t\t\t$(\"#xkit-servant-js-causes\").click(function() {\n\t\t\t\t\tXKit.window.show(\"Servant: JavaScript on causes\",\n\t\t\t\t\t\t\"When writing a cause Javascript code, simply return true or false and Servant will do the rest.

      \" +\n\t\t\t\t\t\t\"// Check if we should run.
      \" +\n\t\t\t\t\t\t\"if (XKit.interface.where().inbox === true) {
      \" +\n\t\t\t\t\t\t\"‌  return true;
      \" +\n\t\t\t\t\t\t\"} else {
      \" +\n\t\t\t\t\t\t\"‌  return false;
      \" +\n\t\t\t\t\t\t\"}

      \" +\n\t\t\t\t\t\t'You can also use this to initialise your code, for example to add a control button.',\n\t\t\t\t\t\t\"info\",\n\t\t\t\t\t\t'
      Next →
      ' +\n\t\t\t\t\t\t'
      Close
      ',\n\t\t\t\t\ttrue);\n\t\t\t\t\t$(\"#xkit-servant-js-actions\").click(function() {\n\t\t\t\t\t\tXKit.window.show(\"Servant: JavaScript on actions\",\n\t\t\t\t\t\t\t\"If your servant runs on a post, you can access the post using the variable post.

      \" +\n\t\t\t\t\t\t\t\"// Make the said post's background red!
      \" +\n\t\t\t\t\t\t\t'$(post).css(\"background\",\"red\");

      ' +\n\t\t\t\t\t\t\t\"You can also use any cause returns:

      \" +\n\t\t\t\t\t\t\t'$(post).append(\"I made this red because it contained \\\"%1\\\"!\");

      ',\n\t\t\t\t\t\t\t\"info\",\n\t\t\t\t\t\t\t'
      Got it - add a new servant!
      ' +\n\t\t\t\t\t\t\t'
      Close
      ',\n\t\t\t\t\t\ttrue);\n\n\t\t\t\t\t\t$(\"#xkit-servant-done\").click(function() {\n\t\t\t\t\t\t\tXKit.extensions.servant.show_add(XKit.extensions.servant.control_panel_div);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NTkwODBENDRFNDgxMUUzQTZERkRFMDgxOTFGQ0Q4MSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NTkwODBEMzRFNDgxMUUzQTZERkRFMDgxOTFGQ0Q4MSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+mn9SrQAABKhJREFUeNrsWk2IHEUUfq+qu2d2w6zubIKSgwRj0AUPIiSCZyXoyVMOelDwFs8iqHc9ePEQEE+elJBDSAKBRfDi1V+MgSAYWF3zY0hmnd3Nzkx3PWtmZ2Znuqtrqqqr2WlIMzRD9+tX79X7+97rxhM/dKHKR4BQ7YNVXP7qWyAAIAAcnLPH5HUcUYKWWMMKZnGYXFFPNmkB1NBR5r+Go56AVDydyR7FwDwpcHAaNEJ4ucHX7idVTaOxgA+OsteavKALHZgJaBCpnz7Fb/folza5McHnf/YPJRoBfX4sXOCzrX+8jjWEf2N664/erQ7OiwLNCL5bDbmNPD9t09mb8XbsEsTkXQFE7BAs2ijw4iF8Y4V9fTdxiIG5ONY7sNYS6BLEJeShFMu7PdroKnIFY/BcHSOEhODjjfhBTA7CBGXk0VRtudIS524rfCNkcPFEdDSCr+4l17aFmyTShWgaaZEW0oEBCCOcQn59g6AKosksdYjTrzvw5Z0YjRChQpiA4UwIZRLlUxzY9CNyBYYKVjXE9S58+FdPpAnIYKEyoYSUZpHt840YKleRHv/JP7EsAkVkwFPXdr0rUGPw6hLnA7mkIjd2xfUdUVL6wpd+3zV08zlFoxyqfcg0WjQIQuxDGpskS/djuOMJwXgI4ici/OKYHfK53BKf3Yo9WcBHFhKDpG6bqeZFAYYuCcCbAmhdetOzFqeWiHD2iAVMhjdKLEQ5NRAHq6ZnLQ4K4BDwkXKJ0UJGwxsLOJ3HlGWuS3S53qVktFHLHFam10FQK43DHbGwScALw1GW4dAW9P7fvR0xlONMM3hnhafgKme+gtg3+p/c5jyPRH/jEJmFsLAClGUhy8KYM1cq4AlFemgplQmxS/sWiElnn4N3oawoi4jvHeG9UcI4XmclupCHIM5oEDF4ZYnrdZ6jIEZ7b5ZPeAzioiy4k9d5hBJilAyFXe7p0/fPDrs5KGRCz9Zg9WFDw2YldH0BYHIPQsvtlFHNc5djZsKwcT9QtJfcFnD+QWzlSDe74GukGfDCvviQ4Op/1jNN7i8GKt4T8xI0kO50eNCr7iF36WNtUdbQo1AdaHBsJ6S8/tGTYX1UH9baycVWPHcWOLkQPB7Qt+1EaYEIccw59Ofxahzg8GsGeKbJGKrvsn6Sp8m077aKyS/g6NIQvt0MGwx3BSgf79BUD9BHPqW9zXXJQq8v8Wdr/edeWGDLKueoMQgmQCoWAM8zZ57SAmRDD09H7PQIaa7W2WrdSAg+HOLvTTGA3Iex2fcDinu6aceby4ED5GBT0wR0miQppcI8NEqZIczw/GeXDlv6HQ7bS1KOlYw3O7W5e3cpFcSY82f/fGkzbvLwmdrQJ8jMvwcuhKoeDi27vbRU1v4gUeyFzfjsSvAYx++3kh8fipmDrR0hyvskw6USbyX0TSt5t8m3BN2LySQcy1TAKcNt9MSlTaijt8bqAFrK3zoCYB4UqDqcrrwCXJ2hDWuz5llUlRS3iqv7lFM29dnX9Jh5d4/Gn0uOiSmHAC1f/UP+xwc0DmKNupgjn1JK0GAQV03y7IwjBRTq6qUhAynBco8NKRVyBgyr3db/L8AA9YdwpolZBTYAAAAASUVORK5CYII=","css":"#servant-toolbar {\n\tbackground: rgb(245,245,245);\n\tpadding: 3px 15px;\n\tborder-bottom: 1px solid rgb(190,190,190);\n\tposition: relative;\n}\n\n.xkit-servant-dimmed { opacity: 0.33; }\n.xkit-servant-dimmed.xkit-servant-dimmed-but-active { opacity: 1; }\n\n.xkit-servant-rubber-band {\n\n\tposition: absolute;\n\ttop: 0; left: 0;\n\twidth: 100%; height: 6px;\n\tz-index: 9;\n\tborder-radius: 3px 3px 0px 0px;\n\n}\n\n.post_full .post_permalink { z-index: 10; }\n\n#servant-refresh-warning {\n\tfont-size: 12px;\n\tposition: absolute;\n\ttop: 11px;\n\tright: 20px;\n\tline-height: 20px;\n\theight: 20px;\n\tcolor: rgb(120,120,120);\n\tbackground: no-repeat 0px 50% url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAXUlEQVQYV3XQwQ0AIQgEQGjhquXh0wfV2oIXLlkDi+dPMi6ICh0z2+6uXC+FQGM+MscSxgcCIYlxgwFuqR/MaYBRz6kN5k8UeJstWvOsypDXgtTTmgHuWFNb7N+DF+nsQgtDvJ+YAAAAAElFTkSuQmCC');\n\tpadding-left: 15px;\n}\n\n.xkit-servant-list-item .m-title { font-weight: bold; }\n.xkit-servant-list-item .m-description {\n\n\tcolor: rgb(120,120,120); font-size: 12px;\n\tmax-width: 490px;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\n}\n\n#servant-list-no-servants {\n\n\ttext-align: center;\n\tpadding-top: 42px;\n\tfont-size: 13px;\n\tcolor: rgb(130,130,130);\n\n}\n\n.xkit-servant-list-item:last-child { border-bottom: 0; }\n\n.xkit-servant-list-item {\n\n\theight: 35px;\n\tline-height: 18px;\n\tpadding-left: 27px;\n\tborder-bottom: 1px solid rgb(220,220,220);\n\tfont-size: 13px;\n\tcolor: rgb(80,80,80);\n\tposition: relative;\n\tpadding-top: 10px;\n\tpadding-bottom: 10px;\n\n}\n\n.xkit-servant-item-delete {\n\n\tposition: absolute;\n\tleft: 7px;\n\ttop: 15px;\n\tbackground: no-repeat 50% 50% url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAALElEQVQIW2NkwAMYQXIXOTj+g2j9Hz9Q+GAOsgIYH6QQLonNBMI6CdqJzdEAOZQXyGBIAx8AAAAASUVORK5CYII=');\n\theight: 25px;\n\twidth: 13px;\n\topacity: 0.45;\n\tcursor: pointer;\n\tz-index: 100;\n\n}\n\n.xkit-servant-item-delete:hover { opacity: 0.8; }\n\n.xkit-servant-add-division {\n\n\tposition: relative;\n\tborder-top: 1px solid rgb(200,200,200);\n\tpadding: 5px;\n\tpadding-left: 100px;\n\tmargin-top: 5px;\n\n}\n\n.xkit-servant-silent-division {\n\n\tmargin-top: 5px;\n\tmargin-bottom: 10px;\n\tborder-top: 1px solid rgb(200,200,200);\n\theight: 0;\n\n}\n\n.xkit-servant-help-for-line {\n\n\tposition: absolute;\n\tleft: -25px;\n\tbackground: no-repeat 50% 50% url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAOElEQVQYV2NkwAT/oUKMyFIoHKgE0QqxWMLAgG4izDSQYrxWE60QZBLRbqSeQmT3YQQhss/wKgQA9VMJCzEArKMAAAAASUVORK5CYII=');\n\twidth: 20px;\n\theight: 23px;\n\ttop: 2px;\n\tborder-radius: 3px;\n\topacity: 0.40;\n\tcursor: pointer;\n\n}\n\n.xkit-servant-help-for-line:hover {\n\n\topacity: 0.55;\n\n}\n\n.xkit-servant-add-delete-line {\n\n\tposition: absolute;\n\tleft: -43px;\n\tbackground: red no-repeat 50% 50% url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAG0lEQVQIW2NkwAMYKZP8DwToJjCCAGXG4tINALm2BAjkSSkMAAAAAElFTkSuQmCC');\n\twidth: 15px;\n\theight: 15px;\n\ttop: 6px;\n\tborder-radius: 60px;\n\topacity: 0.40;\n\tcursor: pointer;\n\n}\n\n.xkit-servant-option-listbox {\n\n\tmargin-top: 0px !important;\n\tmargin-bottom: 0px;\n\theight: 25px;\n\tfont-size: 13px;\n\twidth: 100%;\n\n}\n\n.xkit-servant-add-delete-line:hover {\n\n\topacity: 0.55;\n\n}\n\n.xkit-servant-option-action-line-0 .xkit-servant-add-delete-line,\n.xkit-servant-option-cause-line-0 .xkit-servant-add-delete-line { display: none; }\n\n.xkit-servant-javascript-warning {\n\tbackground: rgb(250,190,190);\n\tpadding: 5px 10px;\n\tborder: 1px solid rgba(0,0,0,0.22);\n\tfont-size: 12px;\n\tborder-radius: 4px;\n\tmargin-top: 11px;\n\tline-height: 17px;\n\tdisplay: none;\n}\n.xkit-servant-compatibility-error {\n\tbackground: rgb(250,190,190);\n\tpadding: 5px 10px;\n\tborder: 1px solid rgba(0,0,0,0.22);\n\tfont-size: 12px;\n\tborder-radius: 4px;\n\tmargin-top: 11px;\n\tline-height: 17px;\n\tdisplay: none;\n}\n\n.xkit-servant-option-textareabox {\n\n\theight: 57px;\n\twidth: 288px;\n\tresize: none;\n\tfont: normal 11px courier, monospace;\n\n}\n\n.xkit-servant-option-line {\n\n\tposition: relative;\n\tmargin-top: 5px;\n\tmin-height: 25px;\n\n}\n\n.xkit-servant-option-line.servant-contains-textarea {\n\n\theight: 74px;\n\n}\n\n.xkit-servant-division-title {\n\n\tposition: absolute;\n\ttop: 12px;\n\tcolor: rgb(100,100,100);\n\tfont-weight: bold;\n\tleft: 0px;\n\n}\n\n.xkit-servant-add-option-settings {\n\n\tposition: absolute;\n\tleft: 161px;\n\ttop: 1px;\n\twidth: 303px;\n\tdisplay: none;\n\theight: 26px;\n\n}\n\n.xkit-servant-add-option-settings.xkit-servant-return-values-shown .xkit-servant-option-textbox {\n\n\tpadding-right: 30px !important;\n\n}\n\n.xkit-servant-add-option-returns {\n\n\ttop: 2px; right: 0px;\n\theight: 23px;\n\twidth: 23px;\n\tbackground: white no-repeat 50% 50% url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVQYV2NkQAXGQO4ZIGZEE0cRgClCV2MCFDiLrhPdRDgfwwp044D8/yCnkKQQpAOf2+EmghlIKpH5KG7EptAXqDEdiH2AGO5rfCbCLQJZSciNYMUAyEgTC/zM8RoAAAAASUVORK5CYII=);\n\t/*width: 20px; height: 19px;*/\n\tposition: absolute;\n\t/*top: 4px; right: 1px;*/\n\topacity: 0.45;\n\tcursor: pointer;\n\tdisplay: none;\n\n}\n\n.xkit-servant-option-line.xkit-servant-return-values-shown .xkit-servant-add-option-returns {\n\tdisplay: block;\n}\n\n.xkit-servant-option-line.xkit-servant-return-values-shown .xkit-servant-add-option-settings {\n\twidth: 269px;\n}\n\n.xkit-servant-option-line.xkit-servant-return-values-shown .xkit-servant-add-option {\n\n\twidth: 428px;\n\n}\n\n.xkit-servant-add-option-returns:hover {\n\n\topacity: 0.7;\n\n}\n\n.xkit-servant-add-option-returns:active {\n\n\topacity: 1;\n\ttop: 3px;\n\theight: 22px;\n\n}\n\n.xkit-servant-option-textbox {\n\n\tmargin-top: 0px !important;\n\tmargin-bottom: 0px;\n\theight: 25px;\n\tfont-size: 13px;\n\twidth: 153px;\n\n}\n\n.xkit-servant-add-option-settings.xkit-servant-options-shown {\n\n\tdisplay: block;\n\n}\n\n.xkit-servant-add-option {\n\n\tposition: absolute;\n\ttop: 1px;\n\tleft: 1px;\n\twidth: 464px;\n\theight: 25px;\n\n}\n\n.xkit-servant-add-option.xkit-servant-half-option {\n\n\twidth: 153px !important;\n\n}\n\n.xkit-servant-add-more {\n\n\tbackground: no-repeat 5px 50% url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAJElEQVQIW2NkQID/QCYjjAtnAAUwJEAC6IARrw6Yapx2oBgHAMKOBQfOt/0mAAAAAElFTkSuQmCC');\n\tpadding: 1px 10px 1px 14px;\n\tcolor: black;\n\tfont-size: 12px;\n\tcursor: pointer;\n\topacity: 0.54;\n\tdisplay: inline-block;\n\tmargin-top: 6px;\n\n}\n\n.xkit-servant-add-more:hover {\n\n\topacity: 0.77;\n\n}\n","title":"Servant","description":"XKit Personal Assistant","developer":"new-xkit","version":"0.6.1","details":"Automator for XKit: lets you create little Servants that does tasks for you when the conditions you've set are met.","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/shorten_posts.json b/Extensions/dist/shorten_posts.json new file mode 100644 index 000000000..39ed1c3c8 --- /dev/null +++ b/Extensions/dist/shorten_posts.json @@ -0,0 +1 @@ +{"id":"shorten_posts","script":"//* TITLE Shorten Posts **//\n//* VERSION 0.2.4 **//\n//* DESCRIPTION Makes scrolling easier **//\n//* DETAILS This extension shortens long posts, so if you are interested, you can just click on Show Full Post button to see it all, or scroll down if you are not interested. Useful for screens where long posts take a lot of space, and making it hard to scroll down.

      By default, this extension shortens text posts. You can toggle settings to choose which types of posts to shorten. (This will 'cut off' long, vertical posts.) **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n//* SLOW true **//\n\nXKit.extensions.shorten_posts = new Object({\n\n\trunning: false,\n\tslow: true,\n\n\theight_min: 200,\n\theight_max: 1500,\n\theight_default: 350,\n\n\tpreferences: {\n\t\tsep0: {\n\t\t\ttext: \"When to shorten posts\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\ttext_too: {\n\t\t\ttext: \"Check and shorten text posts\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\tphotos_too: {\n\t\t\ttext: \"Check and shorten photo posts and photosets\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\taudio_too: {\n\t\t\ttext: \"Check and shorten audio posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\tasks_too: {\n\t\t\ttext: \"Check and shorten replies to asks\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\tvideos_too: {\n\t\t\ttext: \"Check and shorten video posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\tchat_too: {\n\t\t\ttext: \"Check and shorten chat posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\tlinks_too: {\n\t\t\ttext: \"Check and shorten link posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\tquotes_too: {\n\t\t\ttext: \"Check and shorten quote posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\theight: {\n\t\t\ttext: \"Maximum post height (what is this?)\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"350\",\n\t\t\tvalue: \"350\"\n\t\t},\n\t\tsep1: {\n\t\t\ttext: \"Appearance and behaviour options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\tdisplay_tags: {\n\t\t\ttext: \"Display the tags on shortened posts\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\tembiggen_on_click: {\n\t\t\ttext: \"Embiggen photo posts when I click on the thumbnail\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t}\n\t},\n\n\trun: function() {\n\n\t\tthis.running = true;\n\t\tXKit.extensions.shorten_posts.cpanel_check_height();\n\n\t\tif ($(\".posts .post\").length > 0) {\n\t\t\tXKit.tools.init_css(\"shorten_posts\");\n\t\t\t$(document).on(\"click\", \".xkit-shorten-posts-embiggen\", XKit.extensions.shorten_posts.embiggen);\n\t\t\tXKit.post_listener.add(\"shorten_posts\", XKit.extensions.shorten_posts.check);\n\t\t\tXKit.extensions.shorten_posts.check();\n\t\t}\n\n\t},\n\n\tcheck: function() {\n\n\t\tvar shortened_count = 0;\n\n\t\t$(\".posts .post\").not(\".xkit-shorten-posts-done\").not(\".xkit-shorten-posts-embiggened\").each(function() {\n\n\t\t\tvar m_height = $(this).height();\n\t\t\t$(this).addClass(\"xkit-shorten-posts-done\");\n\n\t\t\tif ($(this).hasClass(\"xblacklist_blacklisted_post\")) { return; }\n\n\t\t\tvar dont_return = false;\n\t\t\tif (XKit.extensions.shorten_posts.preferences.text_too.value\n\t\t\t\t&& $(this).hasClass(\"is_regular\")) {\n\t\t\t\tdont_return = true;\n\t\t\t}\n\t\t\tif (XKit.extensions.shorten_posts.preferences.photos_too.value\n\t\t\t\t&& ($(this).hasClass(\"is_photo\") || $(this).hasClass(\"is_photoset\"))) {\n\t\t\t\tdont_return = true;\n\t\t\t}\n\t\t\tif (XKit.extensions.shorten_posts.preferences.audio_too.value\n\t\t\t\t&& $(this).hasClass(\"is_audio\")) {\n\t\t\t\tdont_return = true;\n\t\t\t}\n\t\t\tif (XKit.extensions.shorten_posts.preferences.links_too.value\n\t\t\t\t&& $(this).hasClass(\"is_link\")) {\n\t\t\t\tdont_return = true;\n\t\t\t}\n\t\t\tif (XKit.extensions.shorten_posts.preferences.chat_too.value\n\t\t\t\t&& $(this).hasClass(\"is_conversation\")) {\n\t\t\t\tdont_return = true;\n\t\t\t}\n\t\t\tif (XKit.extensions.shorten_posts.preferences.quotes_too.value\n\t\t\t\t&& $(this).hasClass(\"is_quote\")) {\n\t\t\t\tdont_return = true;\n\t\t\t}\n\t\t\tif (XKit.extensions.shorten_posts.preferences.asks_too.value\n\t\t\t\t&& $(this).hasClass(\"is_note\")) {\n\t\t\t\tdont_return = true;\n\t\t\t}\n\t\t\tif (XKit.extensions.shorten_posts.preferences.videos_too.value\n\t\t\t\t&& $(this).hasClass(\"is_video\")) {\n\t\t\t\tdont_return = true;\n\t\t\t}\n\n\t\t\tif (!dont_return) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (m_height >= XKit.extensions.shorten_posts.preferences.height.value) {\n\t\t\t\tXKit.extensions.shorten_posts.short($(this), m_height);\n\t\t\t\tshortened_count++;\n\t\t\t}\n\n\t\t});\n\n\t\tif (shortened_count > 0) {\n\n\t\t\t// Call Tumblr scroll helper update thingy.\n\t\t\tXKit.tools.add_function(function() {\n\t\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t\t}, true, \"\");\n\n\t\t}\n\n\t},\n\n\tembiggen: function(e) {\n\n\t\tvar obj = e.target;\n\n\t\tif ($(obj).hasClass(\"image_thumbnail\") === true) {\n\t\t\tobj = $(obj).parentsUntil(\".post\").parent().find(\".xkit-shorten-posts-embiggen\");\n\t\t}\n\n\t\tvar m_height = $(obj).attr('data-old-height');\n\t\tvar post_div = $(obj).parent();\n\n\t\tvar m_speed = 200 + (m_height / 2);\n\n\t\tif (m_height < 320) {\n\t\t\tm_speed = 120;\n\t\t}\n\n\t\t$(post_div).animate({\n\t\t\theight: m_height\n\t\t}, m_speed, function() {\n\t\t\t$(this).find(\".xkit-shorten-posts-embiggen\").slideUp('fast');\n\t\t\t$(this).removeClass(\"xkit-shorten-posts-shortened\");\n\t\t\t$(this).removeClass(\"xkit-shorten-posts-shortened-show-tags\");\n\t\t\t$(this).addClass(\"xkit-shorten-posts-embiggened\");\n\t\t\t$(this).css('height', 'auto');\n\t\t});\n\n\t},\n\n\tshort: function(obj, m_height) {\n\n\t\tif ($(obj).hasClass(\"xblacklist_blacklisted_post\")) { $(obj).removeClass(\"xkit-shorten-posts-shortened-show-tags\"); return; }\n\n\t\tvar post_id = $(obj).attr('data-post-id');\n\t\t$(obj).attr('data-old-height', m_height);\n\t\t$(obj).css('height', XKit.extensions.shorten_posts.preferences.height.value + \"px\");\n\t\t$(obj).addClass(\"xkit-shorten-posts-shortened\");\n\n\t\t$(obj).append(\"
      This post has been shortened. Click here to show the full post
      \");\n\n\t\tif (XKit.extensions.shorten_posts.preferences.display_tags.value === true) {\n\t\t\t$(obj).addClass(\"xkit-shorten-posts-shortened-show-tags\");\n\t\t}\n\n\t\tif (XKit.extensions.shorten_posts.preferences.embiggen_on_click.value === true) {\n\t\t\t$(obj).find(\".image_thumbnail\").on(\"click\", XKit.extensions.shorten_posts.embiggen);\n\t\t}\n\n\t},\n\n\tdestroy: function() {\n\n\t\tthis.running = false;\n\n\t\t// Remove all the stuff we've added.\n\t\t$(\".xkit-shorten-posts-embiggen\").remove();\n\n\t\t$(\".post.xkit-shorten-posts-shortened\").each(function() {\n\t\t\t$(this).css('height', 'auto');\n\t\t});\n\n\t\t$(\".xkit-shorten-posts-embiggen\").off(\"click\", XKit.extensions.shorten_posts.embiggen);\n\n\t\t$(\".post\").removeClass(\"xkit-shorten-posts-shortened\");\n\t\t$(\".post\").removeClass(\"xkit-shorten-posts-embiggened\");\n\t\t$(\".post\").removeClass(\"xkit-shorten-posts-shortened-show-tags\");\n\t\t$(\".post\").removeClass(\"xkit-shorten-posts-done\");\n\n\t\tXKit.tools.remove_css(\"shorten_posts\");\n\n\t\t// Call Tumblr scroll helper update thingy.\n\t\tXKit.tools.add_function(function() {\n\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t}, true, \"\");\n\n\t},\n\n\tcpanel_check_height: function() {\n\n\t\tif (isNaN(XKit.extensions.shorten_posts.preferences.height.value) === true) {\n\t\t\tconsole.log(\"Invalid post height check interval, reverting to default: not a number.\");\n\t\t\tXKit.extensions.shorten_posts.preferences.height.value = XKit.extensions.shorten_posts.height_default;\n\t\t} else {\n\t\t\tvar m_height = XKit.extensions.shorten_posts.preferences.height.value;\n\t\t\tif (m_height > XKit.extensions.shorten_posts.height_max || m_height < XKit.extensions.shorten_posts.height_min) {\n\t\t\t\tXKit.extensions.shorten_posts.preferences.height.value = XKit.extensions.shorten_posts.height_default;\n\t\t\t\tconsole.log(\"Invalid post height check interval, reverting to default: too small or big.\");\n\t\t\t}\n\t\t}\n\n\t},\n\n\tcpanel: function(div) {\n\n\t\t$(\"#xkit-shorten-posts-height-help\").click(function() {\n\n\t\t\tXKit.window.show(\"Maximum post height\", \"XKit will shorten posts longer than the height entered here.

      The minimum value you can enter is 200, and the maximum is \" + XKit.extensions.shorten_posts.height_max + \". If you enter a value bigger or smaller than these, XKit will return to it's default value, which is 350 pixels.\", \"info\", \"
      OK
      \");\n\n\t\t});\n\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NENCNERBRkJEMTQ1MTFFMkIzMzlFNEI5QzIwNDI2MDAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NENCNERBRkNEMTQ1MTFFMkIzMzlFNEI5QzIwNDI2MDAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0Q0I0REFGOUQxNDUxMUUyQjMzOUU0QjlDMjA0MjYwMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0Q0I0REFGQUQxNDUxMUUyQjMzOUU0QjlDMjA0MjYwMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgyxgMQAAAaESURBVHjafFZbbJRF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","css":".xkit-shorten-posts-shortened .post_wrapper {\n\toverflow: hidden;\n\theight: 100%;\n}\n\n.xkit-shorten-posts-embiggen {\n\tposition: absolute;\n\tbottom: 0; left: 0;\n\twidth: 100%;\n\theight: 30px;\n\tline-height: 30px;\n\tbackground: rgb(230,230,230);\n\tbox-shadow: inset 0px 1px 2px rgba(0,0,0,0.22);\n\ttext-align: center;\n\tfont-size: 11px;\n\tfont-weight: bold;\n\ttext-shadow: 0px 1px 0px white;\n\tcolor: rgb(120,120,120);\n\tcursor: pointer;\n\tborder-radius: 0px 0px 5px 5px;\n\tborder-top: 1px solid rgba(0,0,0,0.33);\n\tz-index: 79;\n}\n\n.xkit-shorten-posts-embiggen:hover {\n\tbackground: rgb(245,245,245);\n\tcolor: rgb(100,100,100);\n}\n\n.xkit-shorten-posts-shortened-show-tags .post_tags {\n\tposition: absolute;\n\tbottom: 30px;\n\tleft: 0px;\n\twidth: 100%;\n\tpadding: 10px 20px;\n\tbackground: rgba(255,255,255,0.95);\n\tborder-top: 1px solid rgba(0,0,0,0.22);\n\tmargin-left: 0;\n}\n","title":"Shorten Posts","description":"Makes scrolling easier","developer":"STUDIOXENIX","version":"0.2.4","details":"This extension shortens long posts, so if you are interested, you can just click on Show Full Post button to see it all, or scroll down if you are not interested. Useful for screens where long posts take a lot of space, and making it hard to scroll down.

      By default, this extension shortens text posts. You can toggle settings to choose which types of posts to shorten. (This will 'cut off' long, vertical posts.)","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/show_more.json b/Extensions/dist/show_more.json new file mode 100644 index 000000000..5c3f80dcb --- /dev/null +++ b/Extensions/dist/show_more.json @@ -0,0 +1 @@ +{"id":"show_more","script":"//* TITLE User Menus+ **//\n//* VERSION 2.5.8 **//\n//* DESCRIPTION More options on the user menu **//\n//* DEVELOPER new-xkit **//\n//* DETAILS This extension adds additional options to the user menu (the one that appears under user avatars on your dashboard), such as Avatar Magnifier, links to their Liked Posts page if they have them enabled. Note that this extension, especially the Show Likes and Show Submit options use a lot of network and might slow your computer down. **//\n//* FRAME false **//\n//* BETA false **//\n//* SLOW true **//\n\nXKit.extensions.show_more = new Object({\n\n\trunning: false,\n\tslow: true,\n\n\tlikes_available: {},\n\tsubmit_available: {},\n\tanon_available: {},\n\n\tpreferences: {\n\t\t\"sep0\": {\n\t\t\ttext: \"XKit Classic User Menu\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"use_classic_menu\": {\n\t\t\ttext: \"Enable XKit's Classic User Menu\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\texperimental: true\n\t\t},\n\t\t\"sep1\": {\n\t\t\ttext: \"User Menu Options\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"show_magnetizer\": {\n\t\t\ttext: \"Show Magnifier button to see a bigger version of their avatars\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"show_archive\": {\n\t\t\ttext: \"Show a link to the user's archive\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"show_likes\": {\n\t\t\ttext: \"Show Likes button if user is sharing their liked posts\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"show_submits\": {\n\t\t\ttext: \"Show Submit button if user has their submit box enabled\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\n\tinit_inbox_asks: function() {\n\n\t\tvar askbox_template = XKit.storage.get(\"show_more\", \"inbox_ask_template\", \"\");\n\t\tif (askbox_template === \"\") {\n\t\t\treturn;\n\t\t}\n\n\t\t$(\"body\").append(askbox_template);\n\t},\n\n\trun: function() {\n\n\t\tthis.running = true;\n\t\tXKit.tools.init_css(\"show_more\");\n\t\tXKit.post_listener.add(\"show_more\", XKit.extensions.show_more.do_posts);\n\t\tXKit.extensions.show_more.do_posts();\n\n\t\tif (document.location.href.indexOf('www.tumblr.com/follow/') != -1)\n\t\t\treturn;\n\n\t\tif (XKit.interface.where().inbox) {\n\t\t\tXKit.extensions.show_more.init_inbox_asks();\n\t\t} else {\n\t\t\tif ($(\"#dashboard_ask_template\").length > 0) {\n\t\t\t\tXKit.storage.set(\"show_more\", \"inbox_ask_template\", $(\"#dashboard_ask_template\")[0].outerHTML);\n\t\t\t}\n\t\t}\n\n\t\tif (this.preferences.use_classic_menu.value) {\n\n\t\t\tXKit.tools.add_css(\".tumblelog_popover_v1, .tumblelog_popover_v2, .tumblelog_popover { display: none !important; }\", \"show_more_classic_menu\");\n\t\t\t$(document).on('mouseover', '.post_avatar .post_avatar_link', XKit.extensions.show_more.enable_classic_menu);\n\n\t\t\t$(document).scroll(function() {\n\n\t\t\t\tif ($(\".xkit-classic-menu-opener.opened\").length > 0) {\n\n\t\t\t\t\tvar m_parent = XKit.extensions.show_more.classic_popup_last_object;\n\t\t\t\t\tvar m_top = $(m_parent).find(\".xkit-classic-menu-opener\").offset().top + 30;\n\n\t\t\t\t\tif ($(\"#xkit-classic-user-menu\").css(\"top\") !== m_top + \"px\") {\n\t\t\t\t\t\t$(\"#xkit-classic-user-menu\").css(\"top\", m_top + \"px\");\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t}\n\n\t\t$(document).on('mouseover', 'a', XKit.extensions.show_more.store_data_username_if_userlink);\n\t\t$(document).on('mouseover', '.post_info_fence a, .post_info a, a.username', XKit.extensions.show_more.store_data_username);\n\t\t$(document).on('mouseover', '.post_avatar_link', XKit.extensions.show_more.store_data_avatar);\n\t\t$(document).on('click mouseover', '.tumblelog_popover .info_popover_button', XKit.extensions.show_more.add_links_new);\n\t\t$(document).on('click', '#xkit-classic-user-menu .xkit-ask', XKit.extensions.show_more.intercept_classic_menu_ask);\n\n\t},\n\n\tpopup_data: \"\",\n\tpopup_data_req_id: 0,\n\tclassic_popup_last_object: \"\",\n\n\thide_classic_menu: function() {\n\n\t\t$(\"#xkit-classic-user-menu-glass\").remove();\n\t\t$(\".xkit-classic-menu-opener\").removeClass(\"opened\");\n\t\t$(\"#xkit-classic-user-menu\").fadeOut('fast', function() { $(this).remove(); });\n\n\t},\n\n\tshow_classic_menu: function(event) {\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tvar m_obj = $(event.target);\n\n\t\tif (typeof XKit.extensions.show_more.popup_data.avatar_url === \"undefined\") {\n\t\t\treturn;\n\t\t}\n\n\t\tvar avatar_url = XKit.extensions.show_more.popup_data.avatar_url;\n\t\tvar user_url = XKit.extensions.show_more.popup_data.name;\n\n\t\tvar m_parent = $(m_obj).parentsUntil('.post').parent();\n\t\tXKit.extensions.show_more.classic_popup_last_object = m_parent;\n\n\t\t$(\"#xkit-classic-user-menu\").remove();\n\t\t$(\"#xkit-classic-user-menu-glass\").remove();\n\n\t\tvar m_html = \"
      \";\n\n\t\tm_html = m_html + \"Open in New Tab\";\n\n\t\tif (XKit.extensions.show_more.popup_data.show_ask == 1 || XKit.extensions.show_more.popup_data.asks == 1) {\n\t\t\tvar anon_status = \"0\";\n\t\t\tif (XKit.extensions.show_more.popup_data.ask_allows_anonymous || XKit.extensions.show_more.popup_data.anonymous_asks || XKit.extensions.show_more.popup_data.ask_allows_anonymous === 1 || XKit.extensions.show_more.popup_data.anonymous_asks === 1) {\n\t\t\t\tanon_status = \"1\";\n\t\t\t}\n\t\t\tif (user_url === \"new-xkit-extension\") {\n\t\t\t\tm_html = m_html + \"XKit Support\";\n\t\t\t} else {\n\t\t\t\tm_html = m_html + \"Ask\";\n\t\t\t}\n\t\t}\n\n\t\tif (XKit.extensions.show_more.popup_data.following || XKit.extensions.show_more.popup_data.is_following) {\n\t\t\tm_html = m_html + \"Fan Mail\";\n\t\t}\n\n\t\tif (XKit.extensions.show_more.popup_data.following || XKit.extensions.show_more.popup_data.is_following) {\n\t\t\tm_html = m_html + \"Unfollow\";\n\t\t} else {\n\t\t\tm_html = m_html + \"Follow\";\n\t\t}\n\n\t\tif (XKit.extensions.show_more.preferences.show_magnetizer.value) {\n\n\t\t\tif (avatar_url !== \"\" && typeof avatar_url !== \"undefined\") {\n\t\t\t\tm_html = m_html + \"
      \" +\n\t\t\t\t\t\t\"Avatar Magnifier\" +\n\t\t\t\t\t\"
      \";\n\t\t\t}\n\n\t\t}\n\n\t\tif (XKit.extensions.show_more.preferences.show_archive.value) {\n\n\t\t\tm_html = m_html + \"Archive\";\n\n\t\t}\n\n\t\tif (XKit.extensions.show_more.preferences.show_submits.value && XKit.extensions.show_more.submit_available[user_url]) {\n\n\t\t\tvar m_submit_url = \"http://\" + user_url + \".tumblr.com/submit\";\n\n\t\t\tm_html = m_html + \"Submit\";\n\n\t\t}\n\n\t\tif (XKit.extensions.show_more.preferences.show_likes.value && XKit.extensions.show_more.likes_available[user_url]) {\n\n\t\t\tvar m_likes_url = \"https://www.tumblr.com/liked/by/\" + user_url;\n\n\t\t\tm_html = m_html + \"Likes\";\n\n\t\t}\n\n\t\tif (XKit.extensions.show_more.custom_menu_extension.length >= 0) {\n\n\t\t\tvar m_data = XKit.extensions.show_more.popup_data;\n\n\t\t\tfor (var i = 0; i < XKit.extensions.show_more.custom_menu_extension.length; i++) {\n\n\t\t\t\tvar returned_menu = \"\";\n\n\t\t\t\ttry {\n\t\t\t\t\treturned_menu = XKit.extensions.show_more.custom_menu_function[i](m_data);\n\t\t\t\t} catch (err) {\n\t\t\t\t\treturned_menu = \"\";\n\t\t\t\t}\n\n\t\t\t\tm_html = m_html + returned_menu;\n\t\t\t}\n\n\t\t}\n\n\t\tm_html = m_html + \"
       
      \";\n\n\t\t$(\"body\").append(m_html);\n\n\t\t$(\".xkit-classic-menu-opener\").removeClass(\"opened\");\n\t\t$(m_parent).find(\".xkit-classic-menu-opener\").addClass(\"opened\");\n\n\t\tvar m_top = $(m_parent).find(\".xkit-classic-menu-opener\").offset().top + 30;\n\t\tvar m_left = $(m_parent).find(\".xkit-classic-menu-opener\").offset().left - 20;\n\n\t\t$(\"#xkit-classic-user-menu\").css(\"top\", m_top + \"px\");\n\t\t$(\"#xkit-classic-user-menu\").css(\"left\", m_left + \"px\");\n\n\n\t\tsetTimeout(function() {\n\n\t\t\t$(\"#xkit-classic-user-menu .xkit-unfollow-\" + user_url).unbind('click');\n\t\t\t$(\"#xkit-classic-user-menu .xkit-unfollow-\" + user_url).bind('click', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tXKit.extensions.show_more.hide_classic_menu();\n\t\t\t\tXKit.extensions.show_more.unfollow_person($(this).attr('data-tumblelog-name'), m_parent);\n\t\t\t\t$(\".tumblelog_popover_glass\").trigger('click');\n\t\t\t\tsetTimeout(function() { $(\".tumblelog_popover_glass\").trigger('click'); }, 10);\n\t\t\t\t$(\".popover\").hide();\n\t\t\t});\n\n\t\t\t$(\"#xkit-classic-user-menu .xkit-follow-\" + user_url).unbind('click');\n\t\t\t$(\"#xkit-classic-user-menu .xkit-follow-\" + user_url).bind('click', function(e) {\n\t\t\t\ttry {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tXKit.extensions.show_more.hide_classic_menu();\n\t\t\t\t\tXKit.extensions.show_more.follow_person($(this).attr('data-tumblelog-name'), m_parent);\n\t\t\t\t\t$(\".tumblelog_popover_glass\").trigger('click');\n\t\t\t\t\tsetTimeout(function() { $(\".tumblelog_popover_glass\").trigger('click'); }, 10);\n\t\t\t\t\t$(\".popover\").hide();\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconsole.error(err.message);\n\t\t\t\t}\n\t\t\t});\n\n\t\t}, 300);\n\n\n\t\t$(\"#xkit-classic-user-menu-glass\").unbind(\"click\");\n\t\t$(\"#xkit-classic-user-menu-glass\").bind(\"click\", function() {\n\t\t\tXKit.extensions.show_more.hide_classic_menu();\n\t\t});\n\n\t\t$(\"#xkit-classic-user-menu a, #xkit-classic-user-menu div\").unbind(\"click\");\n\t\t$(\"#xkit-classic-user-menu a, #xkit-classic-user-menu div\").bind(\"click\", function() {\n\t\t\tXKit.extensions.show_more.hide_classic_menu();\n\t\t});\n\n\t\t$(\"#xkit-classic-user-menu a.xkit-fan-mail\").unbind(\"click\");\n\t\t$(\"#xkit-classic-user-menu a.xkit-fan-mail\").bind(\"click\", function(e) {\n\t\t\te.preventDefault();\n\t\t\tXKit.extensions.show_more.hide_classic_menu();\n\t\t\tXKit.tools.add_function(function() {\n\t\t\t\tTumblr.FanMail.show({\n\t\t\t\t\thref: \"/send/\" + jQuery(\".xkit-fan-mail\").attr('data-tumblelog-name')\n\t\t\t\t});\n\t\t\t}, true, \"\");\n\n\t\t});\n\n\t\t$(\".xkit-avatar-magnetizer-button-\" + user_url).unbind('click');\n\t\t$(\".xkit-avatar-magnetizer-button-\" + user_url).bind('click', function() {\n\n\t\t\tXKit.extensions.show_more.hide_classic_menu();\n\t\t\tXKit.extensions.show_more.show_avatar(user_url);\n\t\t\t$(\".tumblelog_popover_glass\").trigger('click');\n\t\t\tsetTimeout(function() { $(\".tumblelog_popover_glass\").trigger('click'); }, 10);\n\t\t\t$(\".popover\").hide();\n\n\t\t});\n\n\t},\n\n\tcustom_menu_extension: [],\n\tcustom_menu_function: [],\n\tcustom_menu_callback: [],\n\n\tfollow_person: function(user_url, m_parent) {\n\n\t\tvar m_data = \"form_key=\" + XKit.interface.form_key() + \"&data%5Btumblelog%5D=\" + user_url + \"&data%5Bsource%5D=FOLLOW_SOURCE_IFRAME\";\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"http://www.tumblr.com/svc/follow\",\n\t\t\tdata: m_data,\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/x-www-form-urlencoded\"\n\t\t\t},\n\t\t\tjson: false,\n\t\t\tonerror: function(response) {\n\t\t\t\tXKit.window.show(\"User Menus+ Error \" + response.status,\n\t\t\t\t\t\"Unable to follow user:\" +\n\t\t\t\t\t\"

      \" + response.responseText + \"

      \" +\n\t\t\t\t\t\"Please try again later or file a bug report.\",\n\t\t\t\t\t\"error\",\n\t\t\t\t\t'
      OK
      ' +\n\t\t\t\t\t'Send an ask'\n\t\t\t\t);\n\t\t\t},\n\t\t\tonload: function(response) {\n\t\t\t\tXKit.notifications.add(\"User \" + user_url + \" followed.\");\n\t\t\t\tif (m_parent) {\n\t\t\t\t\tvar json_data = $(m_parent).find(\".post_avatar_link\").attr('data-tumblelog-popover');\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar json_obj = JSON.parse(json_data);\n\t\t\t\t\t\tjson_obj.following = true;\n\t\t\t\t\t\t$(m_parent).find(\".post_avatar_link\").attr('data-tumblelog-popover', JSON.stringify(json_obj));\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// console.log(\"Unable to set popover obj data\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t},\n\n\tunfollow_person: function(user_url, m_parent) {\n\n\t\tvar m_data = \"form_key=\" + XKit.interface.form_key() + \"&data%5Btumblelog%5D=\" + user_url + \"&data%5Bsource%5D=FOLLOW_SOURCE_IFRAME\";\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"POST\",\n\t\t\turl: \"http://www.tumblr.com/svc/unfollow\",\n\t\t\tdata: m_data,\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/x-www-form-urlencoded\"\n\t\t\t},\n\t\t\tjson: false,\n\t\t\tonerror: function(response) {\n\t\t\t\tXKit.window.show(\"User Menus+ Error \" + response.status,\n\t\t\t\t\t\"Unable to unfollow user:\" +\n\t\t\t\t\t\"

      \" + response.responseText + \"

      \" +\n\t\t\t\t\t\"Please try again later or file a bug report.\",\n\t\t\t\t\t\"error\",\n\t\t\t\t\t'
      OK
      ' +\n\t\t\t\t\t'Send an ask'\n\t\t\t\t);\n\t\t\t},\n\t\t\tonload: function(response) {\n\t\t\t\tXKit.notifications.add(\"User \" + user_url + \" unfollowed.\");\n\t\t\t\tif (m_parent) {\n\t\t\t\t\tvar json_data = $(m_parent).find(\".post_avatar_link\").attr('data-tumblelog-popover');\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar json_obj = JSON.parse(json_data);\n\t\t\t\t\t\tjson_obj.following = false;\n\t\t\t\t\t\t$(m_parent).find(\".post_avatar_link\").attr('data-tumblelog-popover', JSON.stringify(json_obj));\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// console.error(\"Unable to set popover obj data\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t},\n\n\tadd_custom_menu: function(extension_name, func, callback) {\n\n\t\tvar m_index = XKit.extensions.show_more.custom_menu_extension.indexOf(extension_name);\n\t\tif (m_index !== -1) { return; }\n\n\t\tXKit.extensions.show_more.custom_menu_extension.push(extension_name);\n\t\tXKit.extensions.show_more.custom_menu_function.push(func);\n\t\tXKit.extensions.show_more.custom_menu_callback.push(callback);\n\n\t},\n\n\tremove_custom_menu: function(extension_name) {\n\n\t\tvar m_index = XKit.extensions.show_more.custom_menu_extension.indexOf(extension_name);\n\t\tif (m_index === -1) { return; }\n\n\t\tXKit.extensions.show_more.custom_menu_extension.splice(m_index, 1);\n\t\tXKit.extensions.show_more.custom_menu_function.splice(m_index, 1);\n\t\tXKit.extensions.show_more.custom_menu_callback.splice(m_index, 1);\n\n\t},\n\n\tenable_classic_menu: function(e) {\n\n\t\tvar m_obj = $(e.target);\n\n\t\tif (!m_obj.hasClass(\"post_avatar_link\")) {\n\t\t\twhile (!m_obj.hasClass(\"post_avatar_link\")) {\n\t\t\t\tm_obj = m_obj.parent();\n\t\t\t}\n\t\t}\n\n\t\tif (m_obj.find(\".xkit-classic-menu-opener\").length <= 0) {\n\t\t\t$(m_obj).append(\"
       
      \");\n\t\t}\n\n\t\t$(\".xkit-classic-menu-opener\").unbind(\"click\", XKit.extensions.show_more.show_classic_menu);\n\t\t$(\".xkit-classic-menu-opener\").bind(\"click\", XKit.extensions.show_more.show_classic_menu);\n\n\t},\n\n\tstore_data_username_if_userlink: function(e) {\n\n\t\tvar m_obj = $(e.target);\n\n\t\tif (typeof $(m_obj).attr('href') === \"undefined\") { return; }\n\n\t\tvar m_url = $(m_obj).attr('href');\n\n\t\t/*Test for a link to a tumblr blog in a form that will have a popover\n\t\tThe regex has two capture groups, respectively the username and the path of the linked blog page.\n\t\thttps://xyz.tumblr.com links alway have a popover, while https://xyz.tumblr.com/foo/bar links do not have\n\t\ta popover unless they're in a reblog header, in which case they have the post_info_link class.*/\n\t\tvar m_test, m_identifier, m_path;\n\n\t\tm_test = /https?:\\/\\/(?!www\\.)([a-z0-9-]+)\\.tumblr\\.com([a-z0-9/-]*)/.exec(m_url);\n\t\tif (m_test) {\n\t\t\tm_path = m_test[2];\n\t\t\tif (m_path == \"\" || m_path == \"/\" || $(m_obj).hasClass(\"post_info_link\")) {\n\t\t\t\tm_identifier = m_test[1];\n\t\t\t\tXKit.extensions.show_more.store_data_username(e, true, m_identifier);\n\t\t\t}\n\t\t} else {\n\t\t\t/* handle tmblr.co links, which appear in mentions*/\n\t\t\tm_test = /https?:\\/\\/tmblr\\.co\\/([A-Za-z0-9_-]+)/.exec(m_url);\n\t\t\tif (m_test) {\n\t\t\t\tm_identifier = m_test[1];\n\t\t\t\tXKit.extensions.show_more.store_data_username(e, true, m_identifier, true);\n\t\t\t}\n\t\t}\n\t},\n\n\tstore_data_username: function(e, userlink_mode, blog_identifier, is_mention) {\n\n\t\tvar m_obj = $(e.target);\n\n\t\tXKit.extensions.show_more.popup_data.popup_data_req_id = XKit.tools.random_string() + XKit.tools.random_string();\n\n\t\tXKit.extensions.show_more.popup_data = {};\n\n\t\tif (typeof $(m_obj).attr('data-tumblelog-popover') !== \"undefined\") {\n\n\t\t\ttry {\n\t\t\t\tXKit.extensions.show_more.popup_data = JSON.parse($(m_obj).attr('data-tumblelog-popover'));\n\t\t\t} catch (err) {\n\t\t\t\tXKit.extensions.show_more.popup_data = {};\n\t\t\t\tXKit.extensions.show_more.popup_data.error = true;\n\t\t\t\tconsole.error(\"show_more: Can't parse popup_data:\" + e.message);\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar m_req_id = XKit.extensions.show_more.popup_data.popup_data_req_id;\n\n\t\t\tif (!userlink_mode) { return; }\n\n\t\t\tGM_xmlhttpRequest({\n\t\t\t\tmethod: \"GET\",\n\t\t\t\turl: \"http://www.tumblr.com/svc/tumblelog_popover/\" + blog_identifier + \"?is_user_mention=\" + (is_mention || false),\n\t\t\t\tjson: false,\n\t\t\t\theaders: {\n\t\t\t\t\t\"X-tumblr-form-key\": XKit.interface.form_key(),\n\t\t\t\t},\n\t\t\t\tonerror: function(response) {\n\t\t\t\t\tif (m_req_id !== XKit.extensions.show_more.popup_data.popup_data_req_id) { console.error(\"show_more: Could not fetch data, also ID mismatch.\"); return; }\n\t\t\t\t\tconsole.error(\"show_more: Could not fetch data.\");\n\t\t\t\t\tXKit.extensions.show_more.popup_data = {};\n\t\t\t\t\tXKit.extensions.show_more.popup_data.error = true;\n\t\t\t\t},\n\t\t\t\tonload: function(response) {\n\n\t\t\t\t\tif (m_req_id !== XKit.extensions.show_more.popup_data.popup_data_req_id) { console.log(\"show_more: Fetched data but ID mismatch.\"); return; }\n\t\t\t\t\tconsole.log(\"show_more: Successfully fetched popup_data.\");\n\t\t\t\t\ttry {\n\t\t\t\t\t\tXKit.extensions.show_more.popup_data = JSON.parse(response.responseText);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconsole.log(\"show_more: Could not store popup_data.\");\n\t\t\t\t\t\tXKit.extensions.show_more.popup_data = {};\n\t\t\t\t\t\tXKit.extensions.show_more.popup_data.error = true;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t});\n\n\t\t}\n\n\t},\n\n\tstore_data_avatar: function(e) {\n\n\t\tvar m_obj = $(e.target);\n\n\t\tif (!m_obj.hasClass(\"post_avatar_link\")) {\n\t\t\twhile (!m_obj.hasClass(\"post_avatar_link\")) {\n\t\t\t\tm_obj = m_obj.parent();\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tXKit.extensions.show_more.popup_data = JSON.parse($(m_obj).attr('data-tumblelog-popover'));\n\t\t} catch (err) {\n\t\t\tconsole.log(\"show_more -> Can't parse popup_data\");\n\t\t\tXKit.extensions.show_more.popup_data = {};\n\t\t\tXKit.extensions.show_more.popup_data.error = true;\n\t\t}\n\n\t},\n\n\tadd_links_new: function() {\n\n\t\tconsole.log(XKit.extensions.show_more.popup_data);\n\n\t\tvar m_parent;\n\t\tif ($(\".tumblelog_popover_v1\").length > 0) {\n\t\t\tm_parent = $(\".tumblelog_popover_v1\").find(\".tumblelog_menu_popover\").find(\"ul\");\n\t\t} else {\n\t\t\tm_parent = $(\".tumblelog_popover\").find(\".tumblelog_menu_popover\").find(\"ul\");\n\t\t}\n\n\t\tif ($(\".info_popover\").length > 0)\n\t\t\tm_parent = $(\".info_popover\").find(\"ul\");\n\n\t\t$(m_parent).find(\".xkit-avatar-magnetizer-new\").parent().remove();\n\n\t\tif ($(m_parent).hasClass(\"show-more-done\")) {return; }\n\n\t\t$(m_parent).addClass(\"show-more-done\");\n\n\t\tvar m_html = \"\";\n\t\tvar avatar_url = XKit.extensions.show_more.popup_data.avatar_url;\n\t\tvar user_url = XKit.extensions.show_more.popup_data.name;\n\n\t\tif (user_url === \"xkit-extension\" || user_url === \"new-xkit-extension\") {\n\n\t\t\t$(m_parent).find(\".ask\").html(\"XKit Support\");\n\t\t\t$(m_parent).find(\".ask\").addClass(\"xkit-support-ask\");\n\t\t\t$(m_parent).find(\".ask\").removeClass(\"ask\");\n\n\t\t}\n\n\t\tif (XKit.extensions.show_more.preferences.show_magnetizer.value) {\n\n\t\t\tif (avatar_url !== \"\" && typeof avatar_url !== \"undefined\") {\n\t\t\t\tm_html = m_html + \"
    19. \" +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\t\"Magnifier\" +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\"
    20. \";\n\t\t\t}\n\n\t\t}\n\n\n\t\tif (XKit.extensions.show_more.preferences.show_submits.value && XKit.extensions.show_more.submit_available[user_url]) {\n\n\t\t\tvar m_likes_url = \"http://\" + user_url + \".tumblr.com/submit\";\n\n\t\t\tm_html = m_html + \"
    21. \" +\n\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\"Submit\" +\n\t\t\t\t\t\"\" +\n\t\t\t\t\t\"
    22. \";\n\n\t\t}\n\n\t\tif (XKit.extensions.show_more.custom_menu_extension.length >= 0) {\n\n\t\t\tvar m_data = XKit.extensions.show_more.popup_data;\n\n\t\t\tfor (var i = 0; i < XKit.extensions.show_more.custom_menu_extension.length; i++) {\n\n\t\t\t\tvar returned_menu = \"\";\n\n\t\t\t\ttry {\n\t\t\t\t\treturned_menu = XKit.extensions.show_more.custom_menu_function[i](m_data);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturned_menu = \"\";\n\t\t\t\t}\n\n\t\t\t\tm_html = m_html + returned_menu;\n\t\t\t}\n\n\t\t}\n\n\t\t$(m_parent).append(m_html);\n\n\t\t$(\".xkit-avatar-magnetizer-button-\" + user_url).unbind('click');\n\t\t$(\".xkit-avatar-magnetizer-button-\" + user_url).bind('click', function() {\n\n\t\t\tXKit.extensions.show_more.show_avatar(user_url);\n\t\t\t$(\".tumblelog_popover_glass\").trigger('click');\n\t\t\tsetTimeout(function() { $(\".tumblelog_popover_glass\").trigger('click'); }, 10);\n\t\t\t$(\".popover\").hide();\n\n\t\t});\n\n\t},\n\n\tdo_posts: function() {\n\n\t\t$('.tumblelog_menu_button').unbind('click', XKit.extensions.show_more.add_links);\n\t\t$('.tumblelog_menu_button').bind('click', XKit.extensions.show_more.add_links);\n\n\t\tif (XKit.extensions.show_more.preferences.show_submits.value) {\n\n\t\t\tvar submit_delay_count = 0;\n\n\t\t\t$(\".post_avatar\").not(\".xkit-show-more-submits-done\").each(function() {\n\n\t\t\t\t$(this).addClass(\"xkit-show-more-submits-done\");\n\n\t\t\t\tvar username = $(this).parent().attr('data-tumblelog-name');\n\n\t\t\t\tif (typeof XKit.extensions.show_more.submit_available[username] === \"boolean\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar m_url = \"https://www.tumblr.com/submit_form/\" + username + \".tumblr.com\";\n\n\t\t\t\tif (typeof username === \"undefined\" || username === \"\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Temporarily set it to false while we fetch pages.\n\t\t\t\tXKit.extensions.show_more.submit_available[username] = false;\n\n\t\t\t\tsetTimeout(function() {\n\n\t\t\t\t\tGM_xmlhttpRequest({\n\t\t\t\t\t\turl: m_url,\n\t\t\t\t\t\tonload: function() {\n\t\t\t\t\t\t\tXKit.extensions.show_more.submit_available[username] = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t}, 100 + (submit_delay_count * 100));\n\n\t\t\t\tsubmit_delay_count++;\n\n\t\t\t});\n\n\t\t}\n\n\t\tif (XKit.extensions.show_more.preferences.show_likes.value) {\n\n\t\t\tvar m_delay_count = 0;\n\n\t\t\t$(\".post_avatar\").not(\".xkit-show-more-likes-done\").each(function() {\n\n\t\t\t\t$(this).addClass(\"xkit-show-more-likes-done\");\n\t\t\t\tif ($(this).find(\".xkit-likes\").length > 0) { return;}\n\n\t\t\t\tvar username = $(this).parent().attr('data-tumblelog-name');\n\n\t\t\t\tif (typeof XKit.extensions.show_more.likes_available[username] === \"boolean\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar m_url = \"https://www.tumblr.com/liked/by/\" + username;\n\n\t\t\t\tif (typeof username === \"undefined\" || username === \"\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Temporarily set it to false while we fetch pages.\n\t\t\t\tXKit.extensions.show_more.likes_available[username] = false;\n\n\t\t\t\tsetTimeout(function() {\n\n\t\t\t\t\tGM_xmlhttpRequest({\n\t\t\t\t\t\turl: m_url,\n\t\t\t\t\t\tonload: function() {\n\t\t\t\t\t\t\tXKit.extensions.show_more.likes_available[username] = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t}, 100 + (m_delay_count * 100));\n\n\t\t\t\tm_delay_count++;\n\n\t\t\t});\n\n\t\t}\n\n\t},\n\n\tadd_links: function(e) {\n\n\t\tvar menu_box = $(e.target).parent().find(\".tumblelog_menu_popover\");\n\t\tvar user_url = $(menu_box).parent().find(\".tumblelog_menu_link\").attr('data-tumblelog-name');\n\n\t\tvar m_html = \"\";\n\n\t\t$(menu_box).find(\".xkit-submit\").parent().remove();\n\t\t$(menu_box).find(\".xkit-likes\").parent().remove();\n\n\t\tif (XKit.extensions.show_more.anon_available[user_url]) {\n\n\t\t\t$(menu_box).find(\".tumblelog_menu_link.ask\").attr('data-anonymous-ask', '1');\n\n\t\t}\n\n\t\tif (XKit.extensions.show_more.preferences.show_likes.value && XKit.extensions.show_more.likes_available[user_url]) {\n\n\t\t\tvar m_likes_url = \"https://www.tumblr.com/liked/by/\" + user_url;\n\n\t\t\tm_html = m_html + \"
      \" +\n\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\"Likes\" +\n\t\t\t\t\t\"\" +\n\t\t\t\t\t\"
      \";\n\n\t\t}\n\n\t\tif (XKit.extensions.show_more.preferences.show_submits.value && XKit.extensions.show_more.submit_available[user_url]) {\n\n\t\t\tvar m_submit_url = \"http://\" + user_url + \".tumblr.com/submit\";\n\n\t\t\tm_html = m_html + \"
      \" +\n\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\"Submit\" +\n\t\t\t\t\t\"\" +\n\t\t\t\t\t\"
      \";\n\n\t\t}\n\n\t\t$(menu_box).find(\".xkit-avatar-magnetizer\").parent().remove();\n\n\t\tif (XKit.extensions.show_more.preferences.show_magnetizer.value) {\n\n\t\t\tvar avatar_url = $(menu_box).parentsUntil(\".post_avatar\").parent().find(\".post_avatar_image\").attr('src');\n\n\t\t\tif (avatar_url !== \"\" && typeof avatar_url !== \"undefined\") {\n\t\t\t\tm_html = m_html + \"
      \" +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\t\"Magnifier\" +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\"
      \";\n\t\t\t}\n\n\t\t}\n\n\n\t\t$(menu_box).find(\".tumblelog_menu_popover\").append(m_html);\n\n\t\tvar m_target = e.target;\n\n\t\t$(\".xkit-avatar-magnetizer-button-\" + user_url).unbind('click');\n\t\t$(\".xkit-avatar-magnetizer-button-\" + user_url).bind('click', function() {\n\n\t\t\tXKit.extensions.show_more.show_avatar(user_url);\n\t\t\tsetTimeout(function() { $(\"#glass_overlay\").trigger('click'); }, 10);\n\n\t\t\t$(m_target).trigger('click');\n\n\t\t});\n\n\t},\n\n\tshow_avatar: function(user_url) {\n\n\t\tif ($(\"#xkit-avatar-magnetizer-shadow\").length > 0) {\n\t\t\t$(\"#xkit-avatar-magnetizer-shadow\").remove();\n\t\t\t$(\"#xkit-avatar-magnetizer-window\").remove();\n\t\t}\n\n\t\tvar avatar_url = \"https://api.tumblr.com/v2/blog/\" + user_url + \".tumblr.com/avatar/512\";\n\n\t\tvar m_html = \"
       
      \" +\n\t\t\t\t\"
      \" +\n\t\t\t\t\t\"\" +\n\t\t\t\t\t\"

      Click on the picture or the page to close

      \" +\n\t\t\t\t\"
      \";\n\n\t\t$(\"body\").append(m_html);\n\n\t\t$(\"#xkit-avatar-magnetizer-shadow\").fadeIn('fast');\n\t\t$(\"#xkit-avatar-magnetizer-window\").fadeIn('slow');\n\n\t\t$(\"#xkit-avatar-magnetizer-window, #xkit-avatar-magnetizer-shadow\").click(function() {\n\n\t\t\t$(\"#xkit-avatar-magnetizer-shadow\").fadeOut('slow');\n\t\t\t$(\"#xkit-avatar-magnetizer-window\").fadeOut('fast');\n\n\t\t});\n\n\t},\n\n\tintercept_classic_menu_ask: function(event) {\n\t\tevent.preventDefault();\n\n\t\tXKit.tools.add_function(function() {\n\t\t\tvar args = JSON.parse(add_tag);\n\t\t\tvar config = jQuery(\"
      \");\n\t\t\tconfig.data(\"anonymous_ask\", args.anonymous_asks);\n\t\t\tTumblr.Events.trigger(\"ask:form:open\", {\n\t\t\t\trecipient: args.recipient,\n\t\t\t\tallow_anonymous: args.anonymous_asks === \"1\" ? true : false\n\t\t\t});\n\t\t}, true, JSON.stringify({\n\t\t\trecipient: this.getAttribute(\"data-tumblelog-name\"),\n\t\t\tanonymous_asks: this.getAttribute(\"data-anonymous-ask\")\n\t\t}));\n\t},\n\n\tdestroy: function() {\n\t\t$(\".xkit-likes\").parent().remove();\n\t\t$(\".xkit-submit\").parent().remove();\n\t\t$(\".xkit-avatar-magnetizer\").parent().remove();\n\t\tXKit.tools.remove_css(\"show_more_hide_follows\");\n\t\tXKit.tools.remove_css(\"show_more_hide_previews\");\n\t\t$(document).off('mouseover', '.post_info_fence a, .post_info a, a.username', XKit.extensions.show_more.store_data_username);\n\t\t$(document).off('mouseover', '.post_avatar_link', XKit.extensions.show_more.store_data_avatar);\n\t\t$(document).off('mouseover', '.post_avatar .post_avatar_link', XKit.extensions.show_more.enable_classic_menu);\n\t\t$(document).off('click', '.tumblelog_menu_btn', XKit.extensions.show_more.add_links_new);\n\t\t$(document).off('click', '#xkit-classic-user-menu .xkit-ask', XKit.extensions.show_more.intercept_classic_menu_ask);\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRTFGMjQxNDZDRjIxMUUzOUM1NkIzMjQ0OERGQUU5RCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRTFGMjQxMzZDRjIxMUUzOUM1NkIzMjQ0OERGQUU5RCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTE4QkRBRjU5ODYxRUUyRjREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","css":".tumblelog_menu .tumblelog_menu_link.xkit-avatar-magnetizer:before {\n\tbackground: no-repeat 50% 50% url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NEEzQzJBRkRDNkRGMTFFMkE3NjNBNENCNkJFQzQ1OTQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NEEzQzJBRkVDNkRGMTFFMkE3NjNBNENCNkJFQzQ1OTQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0QTNDMkFGQkM2REYxMUUyQTc2M0E0Q0I2QkVDNDU5NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0QTNDMkFGQ0M2REYxMUUyQTc2M0E0Q0I2QkVDNDU5NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgjoEbgAAAFESURBVHjapJM/LwRBGMZ3uC00gsgRNMR9AgkJChLlXaMSFY2ORnwInU5ziUSh8AForiMiUYhO4hKVREIkrvHnzq3fmzwre5OxBZP89p3ZmTzzzPvOuCRJov+0gn2cc+nYOtMwC0WNX+AKLuDDF3DmQAI9sAEzmjNrbejW+A724TEkENPfgil4gxO4gS8oQRkG4R52ofGjoBzYrkdQhcnAUUdhT2sq2YkuxTnFU6gHBB7gWP15iH2Bouxe5yT8VtbHQgJpLds5Ak1oZdZ2CLwq26UcAZvrhycJdQhcKlaUML/1wbLuxRl8hgTqKtWOkmr9XpV2Gya09v23izQMmzCuuYasDnhu7N8h1HyBSDsu6CqPyPIznOuCrcq1JfLARHyBtMWZUrUyZ16CtYxItZBTsmbgf01xXe6Goj8+50VYsdf8LcAAYNxVh8XCiIIAAAAASUVORK5CYII=');\n}\n\n.xkit-new-menu-fix {\n\tbackground-image: none !important;\n}\n\n.xkit-magnetizer {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0NDQjdDNTkwMjZFMTFFM0IwRTREQUE2OUI0ODg5QzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0NDQjdDNUEwMjZFMTFFM0IwRTREQUE2OUI0ODg5QzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3Q0NCN0M1NzAyNkUxMUUzQjBFNERBQTY5QjQ4ODlDMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3Q0NCN0M1ODAyNkUxMUUzQjBFNERBQTY5QjQ4ODlDMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PudeUxgAAADdSURBVHjapFOhDsIwEN0RzCR2ll8AWSyfAHKWn8HOYpF8A3KVIGcnN7m58po8yNGsY2GXXK5t7r27vmvFOZfMsUUy05bhgYisEQw8g6fwCn5Hp9UQgegrALxBOEaKlci9RjtgZQ/u4DckW3Wew7dYP3D+jGlgGD9gb2z9wu1+TMSMABsmkaR+58QI0rljrNSdw8lkrN6MEZSMuSbBeqUmY3+N8eDV5rbW2tD8hApg6kEC9RZ2CtiwsqFOXyQy9S9Qh5MiOQPbTv4LrFgQ3DJO7yAQtQOu/4sgtJcAAwAM9WOixKs6SQAAAABJRU5ErkJggg==);\n}\n\n.xkit-follow {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OURCOURCRTUyMTQ5MTFFM0IyMThFNEQ0NkQ3REQ0QzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OURCOURCRTYyMTQ5MTFFM0IyMThFNEQ0NkQ3REQ0QzMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5REI5REJFMzIxNDkxMUUzQjIxOEU0RDQ2RDdERDRDMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5REI5REJFNDIxNDkxMUUzQjIxOEU0RDQ2RDdERDRDMyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgNIZCQAAACxSURBVHjaYvz//z8DJYCJgULAgk2QkZHRBEiZArEgEHMC8TMgPg107RkMtcheAGrkAFJZQCyFw0KQQdOAen7g8gKKZqDCEhBGkpeCqsEMA6izpYjwthRULYYLTEkIOx1sgSgFcza6amQxoO09yC5FdsF3ElzAic0F74FYCGoDis3IYkixgeGC0yS44DSGAdBE8owIzc+QExTFCYkRW2ZCSspS0MAFabxCMCkPSG4ECDAA8TNLD+oNI7wAAAAASUVORK5CYII=);\n}\n\n.xkit-unfollow {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OURCOURCRTEyMTQ5MTFFM0IyMThFNEQ0NkQ3REQ0QzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OURCOURCRTIyMTQ5MTFFM0IyMThFNEQ0NkQ3REQ0QzMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5REI5REJERjIxNDkxMUUzQjIxOEU0RDQ2RDdERDRDMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5REI5REJFMDIxNDkxMUUzQjIxOEU0RDQ2RDdERDRDMyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjIwJbYAAACtSURBVHjaYvz//z8DJYCJgULAgk2QkZHRBEiZArEgEHMC8TMgPg107RkMtcheAGrkAFJZQCyFw0KQQdOAen7g8gI+zQxQuSysYQB1thQR3paCqsVwgSkJYaeDLRDBtgP9V4JPJ9D2HmSXIrvgOwku4MTmgvdALAS1gRB4hs0Fp0lwwWkMA6CJ5BkxtiMnKPR0MI2AIc+garCnRCxJWQoauCCNVwgm5QHJjQABBgCO4Ta4CneTZQAAAABJRU5ErkJggg==);\n}\n\n.xkit-archive {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjMwRjI0NTIxQTI4MTFFM0JERjc5QzRFNkUyNTdBQUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjMwRjI0NTMxQTI4MTFFM0JERjc5QzRFNkUyNTdBQUUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCMzBGMjQ1MDFBMjgxMUUzQkRGNzlDNEU2RTI1N0FBRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCMzBGMjQ1MTFBMjgxMUUzQkRGNzlDNEU2RTI1N0FBRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnH4B/MAAACRSURBVHjaYvz//z8DJYCJgULAAmMwMjJyAKlqIOZEkv8OdGEtPgMYQV4Aau4hxVagnhLqewEI3gFNbqPEgF1Ar5gA6QgS9H9nQrL9DJB2I9EBh5mQbFcG0kIkGnCaCRqqINttSdUM1PeeCZoGBIGUDokGnEGORjsSNT8D2n4X2QATEg04hJISBzQzUWwAQIABAIO/MAZCWlnsAAAAAElFTkSuQmCC);\n}\n\n.xkit-ask {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0NDQjdDNTUwMjZFMTFFM0IwRTREQUE2OUI0ODg5QzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0NDQjdDNTYwMjZFMTFFM0IwRTREQUE2OUI0ODg5QzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBOTVBNzExNjAyMDYxMUUzQjBFNERBQTY5QjQ4ODlDMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3Q0NCN0M1NDAyNkUxMUUzQjBFNERBQTY5QjQ4ODlDMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ppx5oBIAAADcSURBVHjaYvz//z8DJYCJgULAgk2QkZHRBEiZArEgEHMC8TMgPg107RkMtcheAGrkAFJZQCyFw0KQQdOAen7g8gK6ZpCGu0h8KagaTC9AnY2seT7QpqtQOZB4EcwQkFqYd5BdYIpsM0gzUKEtSDOQ/QzqGhjQwRaIyLaDbOkB0u9AGqFhI4VNLbILvmMJtI1A20Fh4I8mzonNBe+BWAhNYSLQdlyxgeGC0+iqgLaXgDAWA07jSgdFeNIAcgD34UoH09BCG2tCwpkSsSRlKWjggjReIZiUByQ3AgQYAG+5U/XzABqeAAAAAElFTkSuQmCC);\n}\n\n.xkit-submit {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTI3MkJDQzQwMjZGMTFFM0IwRTREQUE2OUI0ODg5QzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTI3MkJDQzUwMjZGMTFFM0IwRTREQUE2OUI0ODg5QzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBMjcyQkNDMjAyNkYxMUUzQjBFNERBQTY5QjQ4ODlDMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBMjcyQkNDMzAyNkYxMUUzQjBFNERBQTY5QjQ4ODlDMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PicQbM0AAACxSURBVHjaYvz//z8DJYCJgULAgk2QkZHRBEiZArEUVOgZEJ8GuvYMhlpkLwA1cgCpLCSN6ABk0DSgnh+4vICu+RkUw4AUVA1mGECdjaz5OxCvgOLvyIZA1WK4wBTNNRuBTn0GwiA2mpwpNgOQbUcJMCj7Cja1uKLRFOjMHiTvgdg6hNLBMxKi/xk2A06TYMBpXOmgCE8agNsO1NOHKwymEfDKM6ga7CmR4qQ8ILkRIMAAKoFHk1C7wnUAAAAASUVORK5CYII=);\n}\n\n.xkit-open {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0NDQjdDNUQwMjZFMTFFM0IwRTREQUE2OUI0ODg5QzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0NDQjdDNUUwMjZFMTFFM0IwRTREQUE2OUI0ODg5QzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3Q0NCN0M1QjAyNkUxMUUzQjBFNERBQTY5QjQ4ODlDMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3Q0NCN0M1QzAyNkUxMUUzQjBFNERBQTY5QjQ4ODlDMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhPdQSAAAACzSURBVHjaYvz//z8DJYCJgUJAewMYGRmLgFiQEhdIATHIEG2sFuAKRKAGZahmfyThw0D1G/EaANToBqRsgZgTh4ueAfF8oL73GAYANYcDKVMivPUOqK8NxGBBczIxmkEuWAHjsCBJ2MJMB+KrQHwFys9EUnMaiDcCbf+BzQAdIN4FlNyFFiYg6jtU4xkM94DCABoObjA2MgZFISg2sMmBMCOhvAB0AQeyk4lOB0MnMwEEGADVjWOjJXI1rAAAAABJRU5ErkJggg==);\n}\n\n.xkit-likes {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTI3MkJDQzAwMjZGMTFFM0IwRTREQUE2OUI0ODg5QzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTI3MkJDQzEwMjZGMTFFM0IwRTREQUE2OUI0ODg5QzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBMjcyQkNCRTAyNkYxMUUzQjBFNERBQTY5QjQ4ODlDMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBMjcyQkNCRjAyNkYxMUUzQjBFNERBQTY5QjQ4ODlDMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoKIqTgAAAC3SURBVHjaYvz//z8DJYCJgUJAsQEsMAYjI6MgkPIHYh0g/g7EZ4De2wgUdwOybYGYE4ivAPFGoPh7uD5QGAAVcQDZRUAshGbBOyxiIMNbgfp+IHvBFItCBhxinFD1KGHASaLXOdENeEeiAe9QDAD65wyQukuk5rtQ9RjROB+InxHQ/AyqDjMdQEN1Gh5DQOLTYKGPNSHhMQSrZqwpEYshODXDNGDFQABKmVUgGpcacCIc8NwIEGAA091zC0CjODQAAAAASUVORK5CYII=);\n}\n\n.xkit-fan-mail {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTI3MkJDQzgwMjZGMTFFM0IwRTREQUE2OUI0ODg5QzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODJBQzQ2QkMwMjczMTFFM0IwRTREQUE2OUI0ODg5QzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBMjcyQkNDNjAyNkYxMUUzQjBFNERBQTY5QjQ4ODlDMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBMjcyQkNDNzAyNkYxMUUzQjBFNERBQTY5QjQ4ODlDMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnaS04AAAACUSURBVHjaYvz//z8DJYCJgUJAsQEsMAYjI2MekJIkUt9zoNcnobtgFkiCGM1QtRhe8CHCEJhmH2wGGBMwBFmzMa5AxGUIVs04YwEYQD+QDAFrhorhjgUoOAtUuAYYIyFIAQsOH6AYA1SOAdkVLDg0G2PxGgOaIZDoR07KODQzYHMlRhgQqRnsGiQvorpgaGYmgAADAPo6QC7GUV/YAAAAAElFTkSuQmCC);\n}\n\n#xkit-classic-user-menu-glass {\n\n\tposition: fixed; top: 0; left: 0;\n\twidth: 100%; height: 100%;\n\tz-index: 9000;\n\tbackground: rgba(0,0,0,0);\n\n}\n\n#xkit-classic-user-menu {\n\n\tposition: absolute;\n\twidth: 144px;\n\tbackground: rgb(247,247,247);\n\tz-index: 10000;\n\tborder-radius: 8px;\n\tbox-shadow: 0px 1px 2px rgba(0,0,0,0.34);\n\n}\n\n#xkit-classic-user-menu:before {\n\n\tcontent: \" \";\n\tz-index: 20000;\n\tdisplay: block;\n\tposition: absolute;\n\ttop: -9px; left: 23px;\n\twidth: 16px; height: 10px;\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAKCAYAAAC9vt6cAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTk1QTcxMTQwMjA2MTFFM0IwRTREQUE2OUI0ODg5QzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTk1QTcxMTUwMjA2MTFFM0IwRTREQUE2OUI0ODg5QzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBOTVBNzExMjAyMDYxMUUzQjBFNERBQTY5QjQ4ODlDMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBOTVBNzExMzAyMDYxMUUzQjBFNERBQTY5QjQ4ODlDMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlNQdhwAAADhSURBVHjaYmTADYKA2AqIfwPxMSDejCz5//9/BnzAISUlZfX379//f/r06beJiclsoJgOugG4DBEBgolPnz79ADIAhM+ePfsAKJ5GrAGBq1atOgPTDMNNTU3bgXJehAyw8vX1Xfz169d/6Aa8f//+h7Ky8lSgGhVcBnCwsrL23r179zW6Zhg+fPjwTaC6OFwG+M6cOfMQLs0wnJeXtx6o1gXdAANLS8s5oBAnZMCLFy8+S0pKTgbqkUQ2IPPixYuPCWmG4U2bNl0ApROYAWYtLS07idUMw7GxsSuAepUBAgwAIVZHffJnBQAAAAAASUVORK5CYII=);\n\n}\n\n#xkit-classic-user-menu a:hover,\n#xkit-classic-user-menu div:hover {\n\n\tbackground-color: rgb(249,249,249);\n\tcolor: rgb(80,80,80);\n\n}\n\n#xkit-classic-user-menu a:active,\n#xkit-classic-user-menu div:active {\n\n\tbackground-color: rgb(219,219,219);\n\tcolor: rgb(40,40,40);\n\tbox-shadow: inset 0px 1px 2px rgba(0,0,0,0.22) !important;\n\n}\n\n#xkit-classic-user-menu a,\n#xkit-classic-user-menu div {\n\n\tdisplay: block;\n\ttext-decoration: none;\n\tpadding: 7px 10px 7px 28px;\n\tborder: 1px solid rgba(0,0,0,0.42);\n\tborder-bottom: 0;\n\tbox-shadow: inset 0px 1px 0px rgba(255,255,255,1);\n\tfont-size: 12px;\n\tfont-weight: bold;\n\tcolor: rgb(110,110,110);\n\ttext-shadow: 0px 1px 0px white;\n\tbackground-color: rgb(243,243,243);\n\tbackground-repeat: no-repeat;\n\tbackground-position: 7px 50%;\n\tcursor: pointer;\n\n}\n#xkit-classic-user-menu a:last-child,\n#xkit-classic-user-menu div:last-child {\n\n\tborder-bottom: 1px solid rgba(0,0,0,0.42) !important;\n\tborder-radius: 0px 0px 5px 5px;\n\n}\n\n#xkit-classic-user-menu a:first-child,\n#xkit-classic-user-menu div:first-child {\n\n\tbox-shadow: none;\n\tborder-radius: 5px 5px 0px 0px;\n\n}\n\n.post.is_mine .xkit-classic-menu-opener,\n#post_controls_avatar .xkit-classic-menu-opener { display: none !important; }\n\n.xkit-classic-menu-opener {\n\n\tposition: absolute;\n\tleft: 5px; bottom: 5px;\n\twidth: 20px; height: 20px;\n\tborder-radius: 4px;\n\topacity: 0;\n\tbackground: rgba(0,0,0,0.60) no-repeat 50% 50% url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAICAYAAAArzdW1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTk1QTcxMTAwMjA2MTFFM0IwRTREQUE2OUI0ODg5QzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTk1QTcxMTEwMjA2MTFFM0IwRTREQUE2OUI0ODg5QzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBOTVBNzEwRTAyMDYxMUUzQjBFNERBQTY5QjQ4ODlDMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBOTVBNzEwRjAyMDYxMUUzQjBFNERBQTY5QjQ4ODlDMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvbIs+kAAAAdSURBVHjaYvwPBAwEABMDEYAFiBmJUTQkrQMIMACcBwYUd1EbrAAAAABJRU5ErkJggg==');\n\tz-index: 10000;\n}\n\n.post_avatar_link:hover .xkit-classic-menu-opener {\n\n\topacity: 0.65;\n\n}\n\n.xkit-classic-menu-opener:hover {\n\n\tbackground-color: rgba(0,0,0,0.90);\n\topacity: 0.8;\n\n}\n\n.xkit-classic-menu-opener:active {\n\n\tbackground-color: rgba(0,0,0,0.90);\n\topacity: 1;\n\tbottom: 4px;\n\n}\n\n.xkit-classic-menu-opener.opened {\n\n\topacity: 1 !important;\n\n}\n\n.tumblelog_menu .tumblelog_menu_link.xkit-submit:before {\n\tbackground: no-repeat 50% 50% url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjU4ODQ1RjlDRThCMTFFMjlGRjNBNzgwQUUxNTkwRDkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjU4ODQ1RkFDRThCMTFFMjlGRjNBNzgwQUUxNTkwRDkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyNTg4NDVGN0NFOEIxMUUyOUZGM0E3ODBBRTE1OTBEOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyNTg4NDVGOENFOEIxMUUyOUZGM0E3ODBBRTE1OTBEOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp05grkAAAETSURBVHja1NO/SwJxGMdx79AkqylBhGhw8V9wCfoHqqXAqUXI0fbS2dHFwUEHsf+gvcGlta0fS4QQUU6VBlnn+5HPwXWDCTf5wIuv3Jfne5/n7nQ8z4tFKTcWsSIfEPd/OI5jSwpnSC/Q+4u7cIIRevhaoLmPht22pYtlFPCtZMfBhIGaoKs14fIWykabO9jDA67wE2oeo44VnODT1fx+igyyKOLSZlRcqzdUlbKoa4+zA5RgQ2yEFz0Hex6vuMW59tIa7d3EA3dvarWme5yqsYYcKrjBhZJ+zNL7XyIHFTSjbZSwiYHGyGMLQ7SxjlVcBw+wZRf7WJvzCp/QwXP4SzzE0T/NVts4QPLPCMv7Z5oKMAClu0reGBhHuQAAAABJRU5ErkJggg==');\n}\n#xkit-avatar-magnetizer-shadow {\n\tz-index: 600000;\n\tposition: fixed;\n\ttop: 0; left: 0;\n\twidth: 100%; height: 100%;\n\tbackground: rgba(0,0,0,0.59);\n}\n\n#xkit-avatar-magnetizer-window {\n\tz-index: 600001;\n\tposition: fixed;\n\ttop: 50%; left: 50%;\n\twidth: 400px; height: 400px;\n\tmargin-top: -200px; margin-left: -200px;\n\tbackground: white;\n\tbox-shadow: 0px 1px 3px rgba(0,0,0,0.55);\n\tborder-radius: 6px;\n\tborder: 4px solid white;\n}\n\n#xkit-avatar-magnetizer-window img {\n\twidth: 100%; height: 100%;\n\tborder-radius: 4px;\n}\n\n#xkit-avatar-magnetizer-window p {\n\tmargin: 0; padding: 0;\n\tposition: absolute;\n\ttop: 100%;\n\twidth: 100%;\n\tmargin-top: 15px;\n\tcolor: white;\n\ttext-shadow: 0px 1px 3px rgba(0,0,0,0.55);\n\ttext-align: center;\n}","title":"User Menus+","description":"More options on the user menu","developer":"new-xkit","version":"2.5.8","details":"This extension adds additional options to the user menu (the one that appears under user avatars on your dashboard), such as Avatar Magnifier, links to their Liked Posts page if they have them enabled. Note that this extension, especially the Show Likes and Show Submit options use a lot of network and might slow your computer down.","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/show_originals.json b/Extensions/dist/show_originals.json new file mode 100644 index 000000000..2f75cca3b --- /dev/null +++ b/Extensions/dist/show_originals.json @@ -0,0 +1 @@ +{"id":"show_originals","script":"//* TITLE Show Originals **//\n//* VERSION 1.2.5 **//\n//* DESCRIPTION Only shows non-reblogged posts **//\n//* DETAILS This is a really experimental extension allows you see original (non-reblogged) posts made by users on your dashboard. Please keep in mind that if you don't have enough people creating new posts on your dashboard, it might slow down your computer. **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n//* SLOW true **//\n\nXKit.extensions.show_originals = new Object({\n\n\trunning: false,\n\tslow: true,\n\n\tstatus: \"false\",\n\tlbl_on: \"on\",\n\tlbl_off: \"off\",\n\tdont_show_mine: false,\n\n\tpreferences: {\n\t\tonly_on_dashboard: {\n\t\t\ttext: \"Only run when I'm on the dashboard\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (this.preferences.only_on_dashboard.value && !XKit.interface.where().dashboard) { return; }\n\t\tif (!XKit.interface.where().dashboard && !XKit.interface.where().channel) { return; }\n\n\t\ttry {\n\t\t\tif (XKit.installed.is_running(\"tweaks\")) {\n\t\t\t\tif (XKit.extensions.tweaks.preferences.dont_show_mine_on_dashboard.value) {\n\t\t\t\t\tXKit.extensions.show_originals.dont_show_mine = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.log(\"show_originals -> can't read tweaks property: \" + e.message);\n\t\t\tXKit.extensions.show_originals.dont_show_mine = false;\n\t\t}\n\n\t\tif (!$(\"body\").hasClass(\"with_auto_paginate\")) {\n\t\t\tif (XKit.storage.get(\"show_originals\", \"shown_warning_about_scrolling\", \"\") !== \"yass\") {\n\t\t\t\tXKit.notifications.add(\"Show Originals only works when Endless Scrolling is turned on. Click here to learn more and disable this warning.\", \"warning\", false, function() {\n\t\t\t\t\tXKit.window.show(\"Endless Scrolling required.\", \"Show Originals require Endless Scrolling to be enabled on your dashboard. Click on the Tumblr Settings button (gear icon) on top-right of the page and then Dashboard > Enable endless scrolling.\", \"error\", \"
      OK
      \");\n\t\t\t\t\tXKit.storage.set(\"show_originals\", \"shown_warning_about_scrolling\", \"yass\");\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.extensions.show_originals.status = XKit.storage.get(\"show_originals\", \"status\", \"false\");\n\n\t\tXKit.interface.sidebar.add({\n\t\t\tid: \"xshow_originals_sidebar\",\n\t\t\ttitle: \"Show Originals\",\n\t\t\titems: [{\n\t\t\t\tid: \"xshoworiginals_button\",\n\t\t\t\ttext: \"Originals Only\",\n\t\t\t\tcount: XKit.extensions.show_originals.lbl_off\n\t\t\t}]\n\t\t});\n\n\t\tXKit.extensions.show_originals.update_button();\n\n\t\t$(\"#xshoworiginals_button\").click(function() {\n\t\t\tXKit.extensions.show_originals.toggle();\n\n\t\t\treturn false;\n\t\t});\n\n\t\tXKit.tools.init_css(\"show_originals\");\n\t\tXKit.post_listener.add(\"show_originals\", XKit.extensions.show_originals.do);\n\t\tXKit.extensions.show_originals.do();\n\t},\n\n\tupdate_button: function() {\n\n\t\tif (XKit.extensions.show_originals.status == \"true\") {\n\t\t\t$(\"#xshoworiginals_button .count\").html(XKit.extensions.show_originals.lbl_on);\n\t\t} else {\n\t\t\t$(\"#xshoworiginals_button .count\").html(XKit.extensions.show_originals.lbl_off);\n\t\t}\n\n\t},\n\n\ttoggle: function() {\n\n\t\tif (XKit.extensions.show_originals.status == \"true\") {\n\t\t\tXKit.extensions.show_originals.status = \"false\";\n\t\t\tXKit.extensions.show_originals.do(true);\n\t\t} else {\n\t\t\tXKit.extensions.show_originals.status = \"true\";\n\t\t\tXKit.extensions.show_originals.do(false);\n\t\t}\n\n\t\tXKit.extensions.show_originals.update_button();\n\t\tXKit.storage.set(\"show_originals\", \"status\", XKit.extensions.show_originals.status);\n\n\t},\n\n\tadded_css: false,\n\n\tdo: function(force_shutdown) {\n\n\t\tif (XKit.extensions.show_originals.status == \"false\" || force_shutdown) {\n\t\t\tXKit.tools.remove_css(\"show_originals_on\");\n\t\t\tXKit.extensions.show_originals.added_css = false;\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.extensions.show_originals.added_css = true;\n\t\tXKit.tools.add_css(\" .post.is_reblog { display: none; }\", \"show_originals_on\");\n\n\t\tXKit.extensions.show_originals.call_tumblr_resize();\n\n\t},\n\n\tcall_tumblr_resize: function() {\n\n\t\tXKit.tools.add_function(function() {\n\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t}, true, \"\");\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.tools.remove_css(\"show_originals\");\n\t\tXKit.tools.remove_css(\"show_originals_on\");\n\t\tXKit.interface.sidebar.remove(\"xshow_originals_sidebar\");\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTlBN0RBRkQyOTQyMTFFM0E1NkY5OEM5REU2MzAwMzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTlBN0RBRkUyOTQyMTFFM0E1NkY5OEM5REU2MzAwMzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1OUE3REFGQjI5NDIxMUUzQTU2Rjk4QzlERTYzMDAzOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1OUE3REFGQzI5NDIxMUUzQTU2Rjk4QzlERTYzMDAzOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsjNHvgAAAbzSURBVHjaZFZLb5VV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","css":"#new_post_buttons,\n.new_post_buttons {\n\tdisplay: block !important;\n\tvisibility: visible !important;\n}\n\n#container {\n\tmin-height: 100%;\n}\n","title":"Show Originals","description":"Only shows non-reblogged posts","developer":"STUDIOXENIX","version":"1.2.5","details":"This is a really experimental extension allows you see original (non-reblogged) posts made by users on your dashboard. Please keep in mind that if you don't have enough people creating new posts on your dashboard, it might slow down your computer.","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/show_picture_size.json b/Extensions/dist/show_picture_size.json new file mode 100644 index 000000000..ebbf502d0 --- /dev/null +++ b/Extensions/dist/show_picture_size.json @@ -0,0 +1 @@ +{"id":"show_picture_size","script":"//* TITLE Show Picture Size **//\n//* VERSION 1.0.3 **//\n//* DESCRIPTION Shows the resolution of media post pictures in the upper right corner of the picture **//\n//* DEVELOPER TiMESPLiNTER **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.show_picture_size = new Object({\n\n\trunning: false,\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (XKit.interface.where().dashboard !== true) { return; }\n\n\t\tXKit.tools.init_css('show_picture_size');\n\n\t\tXKit.extensions.show_picture_size.post_listener();\n\n\t\tXKit.post_listener.add('show_picture_size', XKit.extensions.show_picture_size.post_listener);\n\t},\n\n\tdestroy: function() {\n\t\t$('.post.xkit-show-picture-size .show-picture-size').remove();\n\t\t$('.post.xkit-show-picture-size').removeClass('xkit-show-picture-size');\n\t\tXKit.tools.remove_css('show_picture_size');\n\t\tXKit.post_listener.remove('show_picture_size');\n\n\t\tthis.running = false;\n\t},\n\n\tpost_listener: function() {\n\t\tvar posts = XKit.interface.get_posts('xkit-show-picture-size');\n\n\t\t$(posts).each(function() {\n\t\t\tvar post = XKit.interface.post($(this));\n\n\t\t\tif (post.type === 'photo') {\n\t\t\t\t// Photo\n\t\t\t\t$(this).find('.post_media .post_media_photo').each(function() {\n\t\t\t\t\tvar photo = $(this);\n\t\t\t\t\tvar photoLink = $(this).parent('.post_media_photo_anchor');\n\t\t\t\t\tvar tmpImg = new Image();\n\n\t\t\t\t\tif (photoLink.length == 1 && !!photoLink.attr('data-big-photo')) {\n\t\t\t\t\t\ttmpImg.src = photoLink.attr('data-big-photo');\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttmpImg.src = photo.attr('src');\n\t\t\t\t\t}\n\n\t\t\t\t\t$(tmpImg).one('load', function() {\n\t\t\t\t\t\tphoto.closest('.post_media').append($('
      ' + tmpImg.width + 'x' + tmpImg.height + '
      '));\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else if (post.type === 'photoset') {\n\t\t\t\t// Photo set\n\t\t\t\t$(this).find('.photoset_photo').each(function() {\n\t\t\t\t\tvar photoLink = $(this);\n\n\t\t\t\t\tvar tmpImg = new Image();\n\t\t\t\t\ttmpImg.src = $(this).attr('href');\n\t\t\t\t\t$(tmpImg).one('load', function() {\n\t\t\t\t\t\tphotoLink.append($('
      ' + tmpImg.width + 'x' + tmpImg.height + '
      '));\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t$(this).addClass('xkit-show-picture-size');\n\t\t});\n\t}\n});\n","file":"found","server":"up","errors":false,"css":".xkit-show-picture-size .post_media { position: relative; }\n\n.xkit-show-picture-size .photoset .photoset_photo { position: relative; }\n\n.xkit-show-picture-size .post_media_photo_anchor img { display: block; }\n\n.xkit-show-picture-size .show-picture-size {\n position: absolute;\n top: 0;\n right: 0;\n background: rgba(0,0,0,.5);\n color: #eee;\n padding: 2px 4px;\n z-index: 10;\n}\n\n.xkit-show-picture-size .post_media:hover > .show-picture-size,\n.xkit-show-picture-size .photoset .photoset_photo:hover .show-picture-size {\n display: none;\n}\n\n.photoset_row {\n\tposition: relative;\n}\n","title":"Show Picture Size","description":"Shows the resolution of media post pictures in the upper right corner of the picture","developer":"TiMESPLiNTER","version":"1.0.3","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/shuffle_queue.json b/Extensions/dist/shuffle_queue.json new file mode 100644 index 000000000..dd6af6310 --- /dev/null +++ b/Extensions/dist/shuffle_queue.json @@ -0,0 +1 @@ +{"id":"shuffle_queue","script":"//* TITLE Enhanced Queue **//\n//* VERSION 2.2.1 **//\n//* DESCRIPTION Additions to the Queue page. **//\n//* DEVELOPER STUDIOXENIX **//\n//* DETAILS Go to your queue and click on the Shuffle button on the sidebar to shuffle the posts. Note that only the posts you see will be shuffled. If you have more than 15 posts on your queue, scroll down and load more posts in order to shuffle them too. Or click on Shrink Posts button to quickly rearrange them. **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.shuffle_queue = new Object({\n\n\trunning: false,\n\n\trun: function() {\n\n\t\tif (!XKit.interface.where().queue) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.running = true;\n\n\t\tXKit.interface.sidebar.add({\n\t\t\tid: \"queue_plus_sidebar\",\n\t\t\ttitle: \"Queue+\",\n\t\t\titems: [\n\t\t\t\t{ id: \"xshufflequeue_button\", text: \"Shuffle Queue\" },\n\t\t\t\t{ id: \"xdeletequeue_button\", text: \"Clear Queue\" },\n\t\t\t\t{ id: \"xshrinkposts_button\", text: \"Shrink Posts\", count: \"off\" },\n\t\t\t\t{ id: \"xqueueoptions_button\", text: \"Queue Options\", count: \"on\" }\n\t\t\t]\n\t\t});\n\n\t\t$(\"#xshufflequeue_button\").click(() => this.shuffle());\n\t\t$(\"#xdeletequeue_button\").click(() => this.clear());\n\t\t$(\"#xshrinkposts_button\").click(function() {\n\t\t\tif (XKit.installed.is_running(\"shorten_posts\")) {\n\t\t\t\tXKit.window.show(\n\t\t\t\t\t\"Unable to turn on Shrink Posts\",\n\t\t\t\t\t\"Using the Shrink Posts option and Shorten Posts together creates a small mess that no one really wants to see. \" +\n\t\t\t\t\t\"If you still want to use the Shrink Posts functionality of Enhanced Queue, disable the Shorten Posts extension first.\",\n\n\t\t\t\t\t\"error\",\n\n\t\t\t\t\t'
      OK
      '\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tlet $button = $(this).toggleClass(\"xkit-queue-option-button-on\");\n\t\t\t\tif ($button.hasClass(\"xkit-queue-option-button-on\")) {\n\t\t\t\t\t$button.find(\".count\").html(\"on\");\n\t\t\t\t\tXKit.storage.set(\"shuffle_queue\", \"shrink_posts\", \"true\");\n\t\t\t\t\tXKit.tools.add_css(\n\t\t\t\t\t\t\".post_header { display: none; }\" +\n\t\t\t\t\t\t\".post .post_content_inner, .post .post_media { height: 70px !important; overflow: hidden !important; }\" +\n\t\t\t\t\t\t\".post .post_content { pointer-events: none !important; height: 70px !important; overflow: hidden !important; border: 1px dashed rgb(200,200,200); }\",\n\n\t\t\t\t\t\t\"shuffle_queue_mini_posts\"\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t$button.find(\".count\").html(\"off\");\n\t\t\t\t\tXKit.storage.set(\"shuffle_queue\", \"shrink_posts\", \"false\");\n\t\t\t\t\tXKit.tools.remove_css(\"shuffle_queue_mini_posts\");\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t$(\"#xqueueoptions_button\").click(function() {\n\t\t\tlet $button = $(this).toggleClass(\"xkit-queue-option-button-on\");\n\n\t\t\tif ($button.hasClass(\"xkit-queue-option-button-on\")) {\n\t\t\t\t$button.find(\".count\").html(\"off\");\n\t\t\t\tXKit.storage.set(\"shuffle_queue\", \"hide_options\", \"true\");\n\t\t\t\tXKit.tools.add_css(\" .dashboard_options_form { display: none; }\", \"shuffle_queue_hide_options\");\n\t\t\t} else {\n\t\t\t\t$button.find(\".count\").html(\"on\");\n\t\t\t\tXKit.storage.set(\"shuffle_queue\", \"hide_options\", \"false\");\n\t\t\t\tXKit.tools.remove_css(\"shuffle_queue_hide_options\");\n\t\t\t}\n\t\t});\n\n\t\tvar shrink_posts = XKit.storage.get(\"shuffle_queue\", \"shrink_posts\", \"false\");\n\t\tif (shrink_posts === \"true\" || shrink_posts === true) {\n\t\t\t$(\"#xshrinkposts_button\").click();\n\t\t}\n\n\t\tvar hide_options = XKit.storage.get(\"shuffle_queue\", \"hide_options\", \"false\");\n\t\tif (hide_options === \"true\" || hide_options === true) {\n\t\t\t$(\"#xqueueoptions_button\").click();\n\t\t}\n\n\t},\n\n\tshuffle: function() {\n\n\t\tXKit.window.show(\n\t\t\t\"Shuffle Queue\",\n\t\t\t\"Would you like to shuffle your queue?
      \" +\n\t\t\t\"Please note that only loaded posts can be shuffled. \" +\n\t\t\t\"To shuffle your entire queue, scroll down until your whole queue is loaded.\",\n\n\t\t\t\"question\",\n\n\t\t\t'
      Shuffle!
      ' +\n\t\t\t'
      Cancel
      '\n\t\t);\n\n\t\t$(\"#xshufflequeue_confirm\").click(() => {\n\t\t\tif ($(\"#xshufflequeue_confirm\").hasClass(\"disabled\")) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$(\"#xshufflequeue_confirm\")\n\t\t\t\t.addClass(\"disabled\")\n\t\t\t\t.text(\"Shuffling...\");\n\n\t\t\tlet postIDs = [];\n\t\t\t$(\"#posts [data-pageable]\").each(function() {\n\t\t\t\tlet [ /* \"post\" */, postID] = $(this).attr(\"data-pageable\").split(\"_\");\n\t\t\t\tpostIDs.push(postID);\n\t\t\t});\n\n\t\t\tif (postIDs.length === 0) {\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.notifications.add(\"Didn't find any posts to shuffle!\", \"error\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// https://stackoverflow.com/a/12646864\n\t\t\tfor (let i = postIDs.length - 1; i > 0; i--) {\n\t\t\t\tconst j = Math.floor(Math.random() * (i + 1));\n\t\t\t\t[postIDs[i], postIDs[j]] = [postIDs[j], postIDs[i]];\n\t\t\t}\n\n\t\t\tlet blogname = XKit.interface.where().user_url;\n\n\t\t\tXKit.tools.Nx_XHR({\n\t\t\t\tmethod: \"POST\",\n\t\t\t\turl: `https://www.tumblr.com/blog/${blogname}/order_post_queue`,\n\t\t\t\theaders: { \"Content-Type\": \"application/x-www-form-urlencoded; charset=UTF-8\" },\n\t\t\t\tdata: $.param({\n\t\t\t\t\t\"form_key\": XKit.interface.form_key(),\n\t\t\t\t\t\"post_ids\": postIDs.join(\",\")\n\t\t\t\t}),\n\t\t\t\tonload: response => {\n\t\t\t\t\tpostIDs.reverse().forEach(postID => {\n\t\t\t\t\t\t$(\"#new_post_buttons\").after($(`[data-pageable=\"post_${postID}\"]`));\n\t\t\t\t\t});\n\t\t\t\t\tXKit.window.close();\n\t\t\t\t\tXKit.notifications.add(`Shuffled ${postIDs.length} posts!`, \"ok\");\n\t\t\t\t},\n\t\t\t\tonerror: response => {\n\t\t\t\t\tXKit.window.show(\n\t\t\t\t\t\t\"Unable to save queue.\",\n\t\t\t\t\t\t`Something went wrong: HTTP ${response.status}. Please try again later.`,\n\n\t\t\t\t\t\t\"error\",\n\n\t\t\t\t\t\t'
      OK
      '\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t},\n\n\tposts_to_delete: [],\n\tposts_to_delete_count: 0,\n\n\tclear: function() {\n\n\t\tXKit.window.show(\n\t\t\t\"Clear Queue?\",\n\t\t\t\"Delete all the posts in your queue?\",\n\n\t\t\t\"question\",\n\n\t\t\t'
      Yes
      ' +\n\t\t\t'
      Cancel
      '\n\t\t);\n\n\t\t$(\"#xkit-clear-queue-confirm\").click(() => {\n\n\t\t\tXKit.window.show(\n\t\t\t\t\"Please wait...\",\n\n\t\t\t\t'Please wait, gathering posts to delete...' +\n\t\t\t\tXKit.progress.add(\"shuffle-queue-delete\"),\n\n\t\t\t\t\"info\"\n\t\t\t);\n\n\t\t\tthis.posts_to_delete = [];\n\t\t\tthis.posts_to_delete_count = 0;\n\t\t\tthis.clear_collect_next();\n\t\t});\n\n\t},\n\n\tclear_collect_next: function(page = 1) {\n\t\tconst username = XKit.interface.where().user_url;\n\n\t\tXKit.tools.Nx_XHR({\n\t\t\tmethod: \"GET\",\n\t\t\turl: `https://www.tumblr.com/blog/${username}/queue?page=${page}`\n\t\t}).then(response => {\n\t\t\tif ($(\".no_posts_found\", response.responseText).length) {\n\t\t\t\t$(\"#xkit-shuffle-queue-progress\")\n\t\t\t\t\t.text(`Mass-deleting ${this.posts_to_delete.length} posts...`);\n\t\t\t\tthis.posts_to_delete_count = this.posts_to_delete.length;\n\t\t\t\tthis.clear_delete_next();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$(\"#posts .post\", response.responseText).each((i, post) => {\n\t\t\t\tconst $post = $(post);\n\t\t\t\tconst post_id = $post.attr(\"data-post-id\");\n\t\t\t\tthis.posts_to_delete.push(post_id);\n\t\t\t});\n\n\t\t\t$(\"#xkit-shuffle-queue-progress\")\n\t\t\t\t.text(`Please wait, gathering posts to delete... (${this.posts_to_delete.length} so far...)`);\n\n\t\t\tthis.clear_collect_next(page + 1);\n\t\t}).catch(response =>\n\t\t\tthis.clear_error(\"Couldn't gather posts to delete.\", response.status)\n\t\t);\n\t},\n\n\tclear_delete_next: function() {\n\t\tif (this.posts_to_delete.length === 0) {\n\t\t\tthis.clear_done();\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.interface.mass_edit(this.posts_to_delete.splice(0, 100), {\"mode\": \"delete\"})\n\t\t.then(() => {\n\t\t\tconst done = this.posts_to_delete_count - this.posts_to_delete.length;\n\t\t\tconst percent = Math.round((done * 100) / this.posts_to_delete_count);\n\t\t\tXKit.progress.value(\"shuffle-queue-delete\", percent);\n\n\t\t\tthis.clear_delete_next();\n\t\t}).catch(response =>\n\t\t\tthis.clear_error(\"Couldn't mass-delete posts.\", response.status)\n\t\t);\n\t},\n\n\tclear_done: function() {\n\t\tXKit.window.show(\n\t\t\t\"Done!\",\n\n\t\t\t`Queue+ deleted ${this.posts_to_delete_count} posts from your queue.`,\n\n\t\t\t\"info\",\n\n\t\t\t'
      Refresh
      '\n\t\t);\n\n\t\t$(\"#xkit-queue-refresh\").click(() => location.reload(true));\n\t},\n\n\tclear_error: (message, status) => XKit.window.show(\n\t\t\t\"Unable to clear queue.\",\n\n\t\t\t`${message}
      \n\t\t\tThe server responded with HTTP ${status}.
      \n\t\t\tPlease try again later, or file a bug report if this keeps occurring.`,\n\n\t\t\t\"error\",\n\n\t\t\t'
      OK
      ' +\n\t\t\t'New XKit support'\n\t),\n\n\tdestroy: function() {\n\t\tXKit.tools.remove_css(\"shuffle_queue_mini_posts\");\n\t\tXKit.tools.remove_css(\"shuffle_queue_hide_options\");\n\t\tXKit.interface.sidebar.remove(\"queue_plus_sidebar\");\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2Q0Y3QkY5NTgyMDYxMUUzQjI4QzgxNzhBMDBERDcwMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2Q0Y3QkY5NDgyMDYxMUUzQjI4QzgxNzhBMDBERDcwMCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAyODAxMTc0MDcyMDY4MTE4QkRBRjU5ODYxRUUyRjREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","title":"Enhanced Queue","description":"Additions to the Queue page.","developer":"STUDIOXENIX","version":"2.2.1","details":"Go to your queue and click on the Shuffle button on the sidebar to shuffle the posts. Note that only the posts you see will be shuffled. If you have more than 15 posts on your queue, scroll down and load more posts in order to shuffle them too. Or click on Shrink Posts button to quickly rearrange them.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/stats.json b/Extensions/dist/stats.json new file mode 100644 index 000000000..61e3ad2ef --- /dev/null +++ b/Extensions/dist/stats.json @@ -0,0 +1 @@ +{"id":"stats","script":"//* TITLE XStats **//\n//* VERSION 0.3.8 **//\n//* DESCRIPTION The XKit Statistics Tool **//\n//* DETAILS This extension allows you to view statistics regarding your dashboard, such as the percentage of post types, top 4 posters, and more. In the future, it will allow you to view statistics regarding your and others blogs. **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.stats = new Object({\n\n\trunning: false,\n\n\tapiKey: XKit.api_key,\n\n\tpreferences: {\n\t\t\"promote\": {\n\t\t\ttext: \"Help promote XKit: Add 'Posted using XKit' on the bottom of published results\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t}\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (XKit.interface.where().dashboard === false && XKit.interface.where().channel === false) { return; }\n\n\t\tXKit.tools.init_css(\"stats\");\n\n\t\tXKit.interface.sidebar.add({\n\t\t\tid: \"xstats_sidebar\",\n\t\t\ttitle: \"XStats\",\n\t\t\titems: [\n\t\t\t\t{ id: \"xstats_dashboard_stats\", text: \"Dashboard Stats\" },\n\t\t\t\t{ id: \"xstats_blog_stats\", text: \"Blog Stats\" }\n\t\t\t]\n\t\t});\n\n\t\t$(\"#xstats_dashboard_stats\").click(function() {\n\n\t\t\tXKit.extensions.stats.dashboard();\n\n\t\t\treturn false;\n\t\t});\n\n\t\tif (XKit.interface.where().user_url === \"\") {\n\n\t\t\t$(\"#xstats_blog_stats\").parent().remove();\n\t\t\treturn;\n\n\t\t}\n\n\t\t$(\"#xstats_blog_stats\").css(\"display\", \"block\");\n\n\t\t$(\"#xstats_blog_stats\").click(function() {\n\n\t\t\tXKit.extensions.stats.blog(XKit.interface.where().user_url);\n\n\t\t\treturn false;\n\t\t});\n\n\t},\n\n\twindow_id: -1,\n\n\tblog: function(url) {\n\n\t\tvar m_window_id = XKit.tools.random_string();\n\t\tXKit.extensions.stats.window_id = m_window_id;\n\n\t\t$(\"#xkit-stats-background, #xkit-stats-window\").remove();\n\n\t\t$(\"body\").append(\"
       
      I'm thinking, please wait...
      \" + XKit.progress.add(\"stats-progress\") + \"
      I'm gathering the information I need
      \");\n\n\t\t$(\"#xkit-stats-background\").click(function() {\n\t\t\tXKit.extensions.stats.close_window();\n\t\t});\n\n\t\tXKit.extensions.stats.blog_next_page(1, m_window_id, [], url);\n\n\t},\n\n\tcalculate_results_blog: function(m_window_id, posts, blog_url) {\n\n\t\tif (XKit.extensions.stats.window_id !== m_window_id) { return; }\n\n\t\tvar users = [];\n\t\tvar types = {};\n\t\ttypes.reblogged = 0;\n\t\ttypes.original = 0;\n\t\ttypes.liked = 0;\n\t\ttypes.animated = 0;\n\n\t\tvar total_note_count = 0;\n\t\tvar posts_to_compute = posts.slice(0);\n\n\t\twhile (posts_to_compute.length > 0) {\n\n\t\t\tvar current = posts_to_compute.pop();\n\n\t\t\tconsole.log(current);\n\n\t\t\tif (typeof current.reblogged_from_name === \"undefined\") {\n\t\t\t\tcurrent.owner = \"..original..\";\n\t\t\t} else {\n\t\t\t\tcurrent.owner = current.reblogged_from_name;\n\t\t\t}\n\n\n\t\t\tvar in_list = XKit.extensions.stats.is_in_list(users, current.owner);\n\n\t\t\tif (current.type === \"answer\" || current.type === \"text\") { current.type = \"regular\"; }\n\t\t\tif (current.type === \"panoroma\") { current.type = \"photo\"; }\n\t\t\tif (current.type === \"photoset\") { current.type = \"photo\"; }\n\n\t\t\tif (current.type === \"note\") { current.type = \"regular\"; }\n\n\t\t\tif (isNaN(types[current.type]) === true) { types[current.type] = 0; }\n\t\t\ttypes[current.type]++;\n\n\t\t\tif (typeof current.reblogged_from_name !== \"undefined\") {\n\t\t\t\ttypes.reblogged++;\n\t\t\t} else {\n\t\t\t\ttypes.original++;\n\t\t\t}\n\n\t\t\tif (current.liked === true) {\n\t\t\t\ttypes.liked++;\n\t\t\t}\n\n\t\t\tif (current.animated === true) {\n\t\t\t\ttypes.animated++;\n\t\t\t}\n\n\t\t\ttotal_note_count = total_note_count + parseInt(current.note_count);\n\n\t\t\tif (typeof current.reblogged_from_name !== \"undefined\" && current.owner !== blog_url) {\n\n\t\t\t\tif (in_list !== -1) {\n\t\t\t\t\tusers[in_list].count++;\n\t\t\t\t} else {\n\t\t\t\t\tvar m_object = {};\n\t\t\t\t\tm_object.url = current.owner;\n\t\t\t\t\tm_object.count = 1;\n\t\t\t\t\tusers.push(m_object);\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tusers.sort(function(first, second) { return second.count - first.count; } );\n\n\t\tconsole.log(types);\n\t\tconsole.log(\"total note count = \" + total_note_count);\n\n\t\tXKit.extensions.stats.show_results(m_window_id, posts, types, users, true, blog_url);\n\n\t},\n\n\tblog_next_page: function(page, m_window_id, posts, blog_url) {\n\n\t\tif (XKit.extensions.stats.window_id !== m_window_id) { return; }\n\n\n\t\tvar offset = page * 20;\n\n\t\tvar api_url = \"https://api.tumblr.com/v2/blog/\" + blog_url + \".tumblr.com/posts/?api_key=\" + XKit.extensions.stats.apiKey + \"&reblog_info=true&offset=\" + offset;\n\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: api_url,\n\t\t\tjson: true,\n\t\t\tonerror: function(response) {\n\t\t\t\tconsole.log(\"Error getting page.\");\n\t\t\t\tXKit.extensions.stats.display_error(m_window_id, \"501\");\n\t\t\t\treturn;\n\t\t\t},\n\t\t\tonload: function(response) {\n\n\t\t\t\tif (XKit.extensions.stats.window_id !== m_window_id) {return; }\n\n\t\t\t\ttry {\n\n\t\t\t\t\tvar data = JSON.parse(response.responseText).response;\n\n\t\t\t\t\tfor (var i = 0; i < data.posts.length; i++) {\n\n\t\t\t\t\t\tposts.push(data.posts[i]);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tXKit.progress.value(\"stats-progress\", posts.length / 3);\n\n\t\t\t\t\tif (posts.length >= 300 || data.posts.length === 0) {\n\t\t\t\t\t\tXKit.extensions.stats.calculate_results_blog(m_window_id, posts, blog_url);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetTimeout(function() { XKit.extensions.stats.blog_next_page((page + 1), m_window_id, posts, blog_url); }, 400);\n\t\t\t\t\t}\n\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.log(\"Error parsing data: \" + e.message);\n\t\t\t\t\tXKit.extensions.stats.display_error(m_window_id, \"102\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t}\n\t\t});\n\n\t},\n\n\tdashboard: function() {\n\n\t\tvar m_window_id = XKit.tools.random_string();\n\t\tXKit.extensions.stats.window_id = m_window_id;\n\n\t\t$(\"#xkit-stats-background, #xkit-stats-window\").remove();\n\n\t\t$(\"body\").append(\"
       
      I'm thinking, please wait...
      \" + XKit.progress.add(\"stats-progress\") + \"
      I'm gathering the information I need
      \");\n\n\t\t$(\"#xkit-stats-background\").click(function() {\n\t\t\tXKit.extensions.stats.close_window();\n\t\t});\n\n\t\tXKit.extensions.stats.dashboard_next_page(1, m_window_id, []);\n\n\t},\n\n\tdashboard_next_page: function(page, m_window_id, posts) {\n\n\t\tif (XKit.extensions.stats.window_id !== m_window_id) { return; }\n\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: \"http://www.tumblr.com/dashboard/\" + page,\n\t\t\tjson: false,\n\t\t\tonerror: function(response) {\n\t\t\t\tconsole.log(\"Error getting page.\");\n\t\t\t\tXKit.extensions.stats.display_error(m_window_id, \"101\");\n\t\t\t\treturn;\n\t\t\t},\n\t\t\tonload: function(response) {\n\n\t\t\t\tif (XKit.extensions.stats.window_id !== m_window_id) {return; }\n\n\t\t\t\ttry {\n\n\t\t\t\t\t$(\".post.post_full:not('.is_mine')\", response.responseText).each(function() {\n\t\t\t\t\t\tposts.push(XKit.interface.post($(this)));\n\t\t\t\t\t});\n\n\t\t\t\t\tXKit.progress.value(\"stats-progress\", posts.length);\n\n\t\t\t\t\tif (posts.length >= 100) {\n\t\t\t\t\t\tXKit.extensions.stats.calculate_results_dashboard(m_window_id, posts);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetTimeout(function() { XKit.extensions.stats.dashboard_next_page((page + 1), m_window_id, posts); }, 400);\n\t\t\t\t\t}\n\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.log(\"Error parsing data: \" + e.message);\n\t\t\t\t\tXKit.extensions.stats.display_error(m_window_id, \"102\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t}\n\t\t});\n\n\t},\n\n\tis_in_list: function(haystack, needle) {\n\n\t\tfor (var i = 0; i < haystack.length; i++) {\n\t\t\tif (haystack[i].url === needle) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\n\t},\n\n\tcalculate_results_dashboard: function(m_window_id, posts) {\n\n\t\tif (XKit.extensions.stats.window_id !== m_window_id) { return; }\n\n\t\tvar users = [];\n\t\tvar types = {};\n\t\ttypes.reblogged = 0;\n\t\ttypes.original = 0;\n\t\ttypes.liked = 0;\n\t\ttypes.animated = 0;\n\n\t\tvar total_note_count = 0;\n\t\tvar posts_to_compute = posts.slice(0);\n\n\t\twhile (posts_to_compute.length > 0) {\n\n\t\t\tvar current = posts_to_compute.pop();\n\n\t\t\tvar in_list = XKit.extensions.stats.is_in_list(users, current.owner);\n\n\t\t\tif (current.type === \"panoroma\") { current.type = \"photo\"; }\n\t\t\tif (current.type === \"photoset\") { current.type = \"photo\"; }\n\n\t\t\tif (current.type === \"note\") { current.type = \"regular\"; }\n\n\t\t\tif (isNaN(types[current.type]) === true) { types[current.type] = 0; }\n\t\t\ttypes[current.type]++;\n\n\t\t\tif (current.is_reblogged === true) {\n\t\t\t\ttypes.reblogged++;\n\t\t\t} else {\n\t\t\t\ttypes.original++;\n\t\t\t}\n\n\t\t\tif (current.liked === true) {\n\t\t\t\ttypes.liked++;\n\t\t\t}\n\n\t\t\tif (current.animated === true) {\n\t\t\t\ttypes.animated++;\n\t\t\t}\n\n\t\t\ttotal_note_count = total_note_count + parseInt(current.note_count);\n\n\t\t\tif (in_list !== -1) {\n\t\t\t\tusers[in_list].count++;\n\t\t\t} else {\n\t\t\t\tvar m_object = {};\n\t\t\t\tm_object.url = current.owner;\n\t\t\t\tm_object.count = 1;\n\t\t\t\tusers.push(m_object);\n\t\t\t}\n\n\t\t}\n\n\t\tusers.sort(function(first, second) { return second.count - first.count; } );\n\n\t\tconsole.log(types);\n\t\tconsole.log(\"total note count = \" + total_note_count);\n\n\t\tXKit.extensions.stats.show_results(m_window_id, posts, types, users);\n\n\t},\n\n\tshow_results: function(m_window_id, posts, types, users, blog_mode, blog_url) {\n\n\t\tif (XKit.extensions.stats.window_id !== m_window_id) { return; }\n\n\t\tvar m_html = \"\";\n\t\tif (blog_mode !== true) {\n\t\t\tm_html = \"
      Results for your dashboard
      \" +\n\t\t\t\t\t\"
      Top 4 blogs
      \" +\n\t\t\t\t\t\"
      \";\n\t\t} else {\n\t\t\tm_html = \"
      Results for \\\"\" + blog_url + \"\\\"
      \" +\n\t\t\t\t\t\"
      Top 4 blogs
      \" +\n\t\t\t\t\t\"
      \";\n\t\t}\n\n\t\tvar m_count = 0;\n\n\t\tusers.forEach(function(user) {\n\t\t\tif (m_count == 4) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar perc = Math.round((user.count * 100) / posts.length);\n\t\t\tvar mx_html = \"
      \" +\n\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\"
      \" + user.url + \"
      \" +\n\t\t\t\t\t\t\"
      \" + perc + \"%
      \" +\n\t\t\t\t\t\"
      \";\n\t\t\tm_html = m_html + mx_html;\n\t\t\tm_count++;\n\t\t});\n\n\t\tif (m_count <= 3) {\n\t\t\tfor (var i = m_count; i < 4; i++) {\n\t\t\t\tvar mx_html = \"
      \" +\n\t\t\t\t\t\t\t\"
       
      \" +\n\t\t\t\t\t\t\"
      \";\n\t\t\t\tm_html = m_html + mx_html;\n\t\t\t}\n\t\t}\n\n\t\tm_html = m_html + \"
      \" +\n\t\t\t\"
      By Post Type
      \" +\n\t\t\t\"
      \";\n\n\n\t\tm_html = m_html + XKit.extensions.stats.return_post_type_box(\"regular\", types, posts.length);\n\t\tm_html = m_html + XKit.extensions.stats.return_post_type_box(\"photo\", types, posts.length);\n\t\tm_html = m_html + XKit.extensions.stats.return_post_type_box(\"quote\", types, posts.length);\n\t\tm_html = m_html + XKit.extensions.stats.return_post_type_box(\"link\", types, posts.length);\n\t\tm_html = m_html + XKit.extensions.stats.return_post_type_box(\"chat\", types, posts.length);\n\t\tm_html = m_html + XKit.extensions.stats.return_post_type_box(\"video\", types, posts.length);\n\t\tm_html = m_html + XKit.extensions.stats.return_post_type_box(\"audio\", types, posts.length);\n\n\t\tm_html = m_html + \"
      \";\n\n\t\tif (blog_mode !== true) {\n\t\t\tm_html = m_html + \"
      \" +\n\t\t\t\t\"
      Post Stats
      \" +\n\t\t\t\t\"
      \";\n\t\t} else {\n\t\t\tm_html = m_html + \"
      \" +\n\t\t\t\t\"
      Post Stats
      \" +\n\t\t\t\t\"
      \";\n\t\t}\n\n\t\tm_html = m_html + XKit.extensions.stats.return_post_type_box(\"original\", types, posts.length);\n\t\tm_html = m_html + XKit.extensions.stats.return_post_type_box(\"reblogged\", types, posts.length);\n\n\t\tif (blog_mode !== true) {\n\t\t\tm_html = m_html + XKit.extensions.stats.return_post_type_box(\"liked\", types, posts.length);\n\t\t\tm_html = m_html + XKit.extensions.stats.return_post_type_box(\"animated\", types, posts.length);\n\t\t}\n\n\t\tm_html = m_html + \"
      \";\n\n\t\tm_html = m_html + \"
      Post on current blog
      Close
      \";\n\n\t\t$(\"#xkit-stats-window\").removeClass(\"xkit-stats-loading\").html(m_html);\n\n\t\t$(\"#xstats-close-results\").click(function() {\n\t\t\tXKit.extensions.stats.close_window();\n\t\t});\n\n\t\t$(\"#xstats-post-results\").click(function() {\n\t\t\tXKit.extensions.stats.post_results(posts, types, users, blog_mode, blog_url);\n\t\t});\n\n\t},\n\n\tpost_results: function(posts, types, users, blog_mode, blog_url) {\n\n\t\tXKit.window.show(\"Please wait\", \"Publishing the results...\", \"info\");\n\n\t\tvar arranged_types = [];\n\n\t\tfor (var obj in types) {\n\t\t\tif (obj === \"reblogged\" || obj === \"liked\" || obj === \"original\" || obj === \"animated\") { continue; }\n\t\t\tarranged_types.push({\n\t\t\t\ttype: obj,\n\t\t\t\tcount: types[obj]\n\t\t\t});\n\t\t}\n\n\t\tarranged_types.sort(function(first, second) { return second.count - first.count; });\n\n\t\tvar m_object = {};\n\n\t\tm_object.channel_id = $(\"#search_form\").find(\"[name='t']\").val();\n\n\t\tm_object.form_key = XKit.interface.form_key();\n\n\t\tm_object.context_page = \"dashboard\";\n\n\t\tm_object.context_id = \"dashboard\";\n\n\t\t// Not sure about this part:\n\t\tm_object[\"is_rich_text[one]\"] = \"0\";\n\t\tm_object[\"is_rich_text[two]\"] = \"1\";\n\t\tm_object[\"is_rich_text[three]\"] = \"0\";\n\n\t\tm_object[\"post[slug]\"] = \"\";\n\t\tm_object[\"post[draft_status]\"] = \"\";\n\t\tm_object[\"post[date]\"] = \"\";\n\n\t\tm_object[\"post[state]\"] = \"0\";\n\t\tm_object[\"post[type]\"] = \"regular\";\n\n\t\tif (blog_mode !== true) {\n\t\t\tm_object[\"post[one]\"] = \"XStats Dashboard Results\";\n\t\t} else {\n\t\t\tm_object[\"post[one]\"] = \"XStats Results for \" + blog_url;\n\t\t}\n\n\t\tvar m_text = \"

      Top 4 blogs

        \";\n\n\t\tfor (var user_i = 0; user_i < 4; user_i++) {\n\t\t\tvar perc = Math.round((users[user_i].count * 100) / posts.length);\n\t\t\tm_text = m_text + \"
      • \" + users[user_i].url + \" (\" + perc + \"%)
      • \";\n\t\t}\n\n\t\tm_text = m_text + \"
      \";\n\n\t\tm_text = m_text + \"

      Post Types

        \";\n\n\t\tfor (var i = 0; i < 4; i++) {\n\t\t\tif (typeof arranged_types[i] === \"undefined\") { continue; }\n\t\t\tvar post_type_perc = Math.round((arranged_types[i].count * 100) / posts.length);\n\t\t\tm_text = m_text + \"
      • \" + arranged_types[i].type + \" (\" + post_type_perc + \"%)
      • \";\n\t\t}\n\n\t\tm_text = m_text + \"
      \";\n\n\t\tm_text = m_text + \"

      Other

        \";\n\n\t\tvar m_perc = Math.round((types.original * 100) / posts.length);\n\t\tm_text = m_text + \"
      • Original Posts: \" + m_perc + \"%
      • \";\n\n\t\tm_perc = Math.round((types.reblogged * 100) / posts.length);\n\t\tm_text = m_text + \"
      • Reblogged Posts: \" + m_perc + \"%
      • \";\n\n\t\tif (blog_mode !== true) {\n\n\t\t\tm_perc = Math.round((types.animated * 100) / posts.length);\n\t\t\tm_text = m_text + \"
      • GIF Posts: \" + m_perc + \"%
      • \";\n\n\t\t\tm_perc = Math.round((types.liked * 100) / posts.length);\n\t\t\tm_text = m_text + \"
      • Liked Posts: \" + m_perc + \"%
      • \";\n\n\t\t}\n\n\t\tm_text = m_text + \"
      \";\n\n\t\tif (XKit.extensions.stats.preferences.promote.value === true) {\n\t\t\tm_text = m_text + \"

      Generated using XStats on New XKit.

      \";\n\t\t}\n\n\t\tm_object[\"post[two]\"] = m_text;\n\n\t\tm_object[\"post[publish_on]\"] = \"\";\n\t\tm_object.custom_tweet = \"\";\n\t\tm_object[\"post[tags]\"] = \"xstats\";\n\n\n\t\tXKit.interface.kitty.get(function(kitty_data) {\n\n\t\t\tif (kitty_data.errors === true) {\n\n\t\t\t\tXKit.extensions.stats.post_error(\"Can't post stats\", \"Can't authenticate post. Please check your internet connection and try again later.\");\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tGM_xmlhttpRequest({\n\t\t\t\tmethod: \"POST\",\n\t\t\t\turl: \"http://www.tumblr.com/svc/post/update\",\n\t\t\t\tdata: JSON.stringify(m_object),\n\t\t\t\theaders: {\n\t\t\t\t\t\"X-tumblr-puppies\": kitty_data.kitten,\n\t\t\t\t\t\"X-tumblr-form-key\": XKit.interface.form_key(),\n\t\t\t\t\t\"Content-Type\": \"application/json\"\n\t\t\t\t},\n\t\t\t\tonerror: function(response) {\n\t\t\t\t\tXKit.interface.kitty.set(\"\");\n\t\t\t\t\tXKit.extensions.stats.post_error(\"Can't post stats\", \"Server returned invalid/blank page or could not be reached. Maybe you hit your post limit for today, or your account has been suspended. Please check your internet connection and try again later.\");\n\t\t\t\t},\n\t\t\t\tonload: function(response) {\n\t\t\t\t\tvar m_obj = JSON.parse(response.responseText);\n\t\t\t\t\tXKit.interface.kitty.set(response.getResponseHeader(\"X-Tumblr-Kittens\"));\n\t\t\t\t\tXKit.window.close();\n\t\t\t\t\tif (m_obj.errors === false) {\n\t\t\t\t\t\t$(\"#xkit_post_crushes\").html(\"Posted!\");\n\t\t\t\t\t\tXKit.notifications.add(\"Your stats have been posted to the current blog.\", \"ok\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tXKit.extensions.stats.post_error(\"Can't post stats\", \"Server returned a non-JSON object. Maybe you hit your post limit for today, or your account has been suspended. Please try again later.\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\tpost_error: function(title, message) {\n\n\t\tXKit.window.show(title, message, \"error\", \"
      OK
      \");\n\n\t},\n\n\treturn_post_type_box: function(type, types, length) {\n\n\t\tvar m_count = types[type];\n\n\t\tif (typeof m_count === \"undefined\") { m_count = 0; }\n\n\t\tvar perc = Math.round((m_count * 100) / length);\n\n\t\tvar m_html = \"
      \" + perc + \"%\";\n\n\t\tif (type === \"original\" || type === \"reblogged\" || type === \"liked\" || type === \"animated\") {\n\t\t\tif (type === \"reblogged\") { type = \"reblog\"; }\n\t\t\tm_html = m_html + \"
      \" + type + \"
      \";\n\t\t}\n\n\t\tm_html = m_html + \"
      \";\n\n\t\treturn m_html;\n\n\t},\n\n\tclose_window: function() {\n\n\t\tXKit.extensions.stats.window_id = -1;\n\n\t\t$(\"#xkit-stats-background\").fadeOut('slow', function() { $(this).remove(); });\n\t\t$(\"#xkit-stats-window\").fadeOut('fast', function() { $(this).remove(); });\n\n\t},\n\n\tdisplay_error: function(m_window_id, err_code) {\n\n\t\tif (XKit.extensions.stats.window_id !== m_window_id) { return; }\n\n\t\t$(\"#xkit-stats-background\").remove();\n\t\t$(\"#xkit-stats-window\").remove();\n\n\t\tXKit.window.show(\"Oops.\", \"An error prevented XStats from finding similar blogs.
      Please try again later.
      Code: \\\"XSTX\" + err_code + \"\\\"\", \"error\", \"
      OK
      \");\n\n\t},\n\n\tdestroy: function() {\n\t\tXKit.interface.sidebar.remove(\"xstats_sidebar\");\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2NEI4MkJBRTNEQkIxMUUzQUNFRTg1NzM5MDIyMUUyMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2NEI4MkJBRDNEQkIxMUUzQUNFRTg1NzM5MDIyMUUyMCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","css":"#xkit-stats-background {\n\tbackground: rgba(0,0,0,0.22);\n\tposition: fixed;\n\ttop: 0; left: 0;\n\twidth: 100%; height: 100%;\n\tz-index: 1000;\n}\n\n#xkit-stats-window {\n\tposition: fixed;\n\ttop: 50%;\n\tleft: 50%;\n\theight: 400px;\n\tmargin-top: -200px;\n\tbackground: white;\n\tbox-shadow: 0px 1px 3px rgba(0,0,0,0.44);\n\tborder-radius: 6px;\n\twidth: 600px;\n\tmargin-left: -300px;\n\tfont-size: 16px;\n\tbox-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tpadding: 30px;\n\tpadding-top: 21px;\n\tz-index: 1001;\n}\n\n#xkit-stats-window .m_window_title {\n\n\tfont-size: 16px;\n\tfont-weight: bold;\n\tmargin-bottom: 10px;\n\theight: 40px;\n\tline-height: 40px;\n\n}\n\n#xkit-stats-subtext {\n\tmargin-top: 10px;\n\tfont-size: 13px;\n\tcolor: rgb(180,180,180);\n}\n\n#xkit-stats-text {\n\tmargin-bottom: 10px;\n}\n\n#xkit-stats-inner {\n\tpadding: 14px 20px;\n}\n\n#xkit-stats-window.xkit-stats-loading #xkit-stats-inner {\n\tpadding: 0px;\n\tpadding-top: 135px;\n\tline-height: 20px;\n\tfont-size: 18px;\n\ttext-align: center;\n\tcolor: rgb(180,180,180);\n}\n\n.xkit-stats-blog-list {\n\tborder-top: 1px solid rgb(220,220,220);\n\tborder-left: 1px solid rgb(220,220,220);\n\theight: 81px;\n\tbox-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n}\n\n.xkit-stats-blog {\n\tdisplay: inline-block;\n\tfloat: left; height: 40px;\n\twidth: 50%;\n\tborder-right: 1px solid rgb(220,220,220);\n\tborder-bottom: 1px solid rgb(220,220,220);\n\tbox-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tposition: relative;\n}\n\n.xkit-stats-blog:hover {\n\tbackground: rgb(245,245,245);\n\tcursor: pointer;\n}\n\n.xkit-stats-blog.xkit-empty-slot,\n.xkit-stats-blog.xkit-empty-slot:hover {\n\tcursor: default;\n\tbackground: white;\n}\n\n.xkit-stats-blog .m_title {\n\tposition: absolute;\n\tleft: 45px;\n\tline-height: 40px;\n\ttop: 0;\n\tmax-width: 110px;\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n\tfont-size: 14px;\n\twhite-space: nowrap;\n}\n\n.xkit-stats-blog .m_avatar {\n\tposition: absolute;\n\twidth: 25px; height: 25px;\n\ttop: 50%; left: 10px;\n\tmargin-top: -12px;\n\tborder-radius: 3px;\n\tbackground: black;\n}\n\n.xkit-stats-blog .m_percentage {\n\tposition: absolute;\n\tright: 11px;\n\ttop: 50%;\n\tline-height: 20px;\n\theight: 20px;\n\tmargin-top: -10px;\n\tfont-size: 12px;\n\tcolor: rgb(150,150,150);\n}\n\n.xkit-stats-separator {\n\tfont-size: 12px;\n\ttext-transform: uppercase;\n\tmargin-bottom: 10px;\n\tmargin-top: 10px;\n\ttext-align: center;\n\tcolor: rgb(130,130,130);\n\tbackground: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAABCAYAAAD0In+KAAAAEUlEQVQIW2M8dOjQfzs7O0YAFyYEApdFJZwAAAAASUVORK5CYII=') 50% 50% repeat-x;\n}\n\n.xkit-stats-separator div {\n\tbackground: white;\n\tpadding: 0px 10px;\n\tdisplay: inline;\n}\n\n.xkit-stats-post-type {\n\tdisplay: inline-block;\n\tfloat: left;\n\twidth: 77px;\n\ttext-align: right;\n\tborder: 1px solid rgb(220,220,220);\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\tpadding-right: 10px;\n\tfont-size: 12px;\n\tcolor: rgb(130,130,130);\n\tborder-right: 0px;\n\theight: 40px;\n\tline-height: 40px;\n\tbackground-position: 7px 50%;\n\tbackground-repeat: no-repeat;\n\tbackground-size: 22px;\n\tposition: relative;\n}\n\n.xkit-stats-post-type .m_text {\n\tposition: absolute;\n\ttop: 0;\n\tfont-weight: bold;\n\tleft: 10px;\n\tfont-size: 12px;\n}\n\n.xkit-stats-post-type.animated,\n.xkit-stats-post-type.liked,\n.xkit-stats-post-type.reblogged,\n.xkit-stats-post-type.original {\n\twidth: 25%;\n}\n\n.xkit-stats-two-boxes .xkit-stats-post-type.reblogged,\n.xkit-stats-two-boxes .xkit-stats-post-type.original {\n\twidth: 50%;\n}\n\n.xkit-stats-post-types {\n\tborder-right: 1px solid rgb(220,220,220);\n\theight: 40px;\n}\n\n.xkit-stats-post-type.regular {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZGNjZFRUYxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZGNjZFRjAxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkY2NkVFRDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkY2NkVFRTFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsJAvbIAAAGdSURBVHja7NbJK0VhGMfxY8otKUMyRIaNlLmrEEIiEaJY8xdYsFOUlViwtbNhK5EpEkrpWiArC5GFoRQbynB9T/3U6aTc18JQ561P5z3vGZ73fd7ndG9YMBi0frqFW7/QvKBe0P8bNPKzQb/f7x4aRSneMIZdkyCBQODroK6WjkFE6/zONOh30tviCGi3RiSYZs80aLeO27hEChpc98RhGJs4xg7GkfOdoLmoVH/CkdYe18pmMYI6TaoKA1hEomnQDvhwg3WsabxWL7dUYM2wfzl6kYV6PCJP10MOGoEu9TfwpJk/aE9bde0M5ZrIMjJR6Hh3tEnQIpSof41q5ONcY5063iIeQ9rzQ0w6CipoUmldjuv94mw1SEUalrSABczjAnNIMinvKLSpb8/+RPe+KV0ViEGTXmwH3Ee7nslGrOk3ValUWkrbjGuv91CmbGxpPEOTsFTJPvWfQ93TPh1fVETO9opV9e1iOsWRUr0i97jSPQWhrnRa396D0utuU/pmP9LaoFUn40BVXqzzO/fDYd4fMy+oF/TPB30XYAA/FlCkcqgrRwAAAABJRU5ErkJggg==);\n}\n\n.xkit-stats-post-type.photo {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZGNjZFRjMxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZGNjZFRjQxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkY2NkVGMTFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkY2NkVGMjFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PklZnYUAAAF6SURBVHja7JXNKwVRGIfdcRVKIhHJSmQhKWwslBUbWSibG9a3lIWVjaIsxNLKBkluyVcs/AEiO8nGQjefC2woF8V4Tr3qNM3cc+c2WZ23nuZ89f7m954zZ2Ku6xb8d8SsqBW1opGJXgw1qUcdVMlQDaxCuWfpFyThUvqvkG7duvLNGze81CgsaKJBUQobWv8TZmDOb7FjSDYfIJiGTVjT3Km4gWm4htmgpCanFZ6+cjAJO1ALhXAPHbACB+LwGZbyFf3R2mrzE+LyENpk/A7GoQ/WpaQD2ZLGQxy6bTiFc6iUsQyUifMeSMGUKZETQlQdlDERfJMyt0CzuFRHfRe+TYnCOH2AYWmPiMBfHMmzEd7FfSROlcMnOPYI6qHEiqN0OgjLcJtljSpzUZR7mhAniwHzqrQTuSRyQsyXyGHq91nXDXtQnYuoqbyP0KD11d27D2dwInduO/T6GMjkK5qUctZ73HdClzb24flUXrJdg/Z/akWtaKj4FWAAOdZxVglFqeYAAAAASUVORK5CYII=);\n}\n\n.xkit-stats-post-type.quote {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTgwREFEQzYxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTgwREFEQzcxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkY2NkVGNTFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkY2NkVGNjFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp21znIAAAFvSURBVHja7JXNK0RRGMZdH5OSmgk1ZWEjCmUjElnNjiysmFKSBRZIFlZWNpKNz0lCdoqUlSWK3Sws+CuoSdJQXL9T7+J2u+eYMyarc+pXz9z3ueeZ9517z3i+75f99/JcqAt1oSUJzWW8qMt90A77v+yrPCnYjk/7X+FipcUXHIc9qIFPONb4BuEIGqAWVsOG8gIDF+FEAs/gRuNLw4UEXsNllKmQTqdgQ/QmLEDUbzIkHVbBKUzCezGhvbAlWm00r/E1y7hjMoUJyOs2NY03Jp1VwwvM6R5GmUQdfIgvb+rEFDoCXaIrYA1mIRHy9cOwaDX2ZViCxmJC0wEdl5HtwC20BGqjAa2mMgbrcAc9tqGdmusdsBu4t1vja4JD29CEoTYAraLrDb4229A3Q029FknRr7bHoCn00VBTR9uz6GwpQzOG2hU8iT6Ab40vaxt6DisR75w63makW7Xu5XMu5HuQJ979n7pQF/q39SPAAIOXa93gNF/cAAAAAElFTkSuQmCC);\n}\n\n.xkit-stats-post-type.link {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTgwREFEQ0ExQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTgwREFEQ0IxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODBEQURDODFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBODBEQURDOTFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Puk0h+sAAAGqSURBVHja7NZNKARhHMfx3fVyQF6Kg7eUXLQHysUmL+HgtUjhILJRilyk3F04SHJyUBJyk1YSeYkktZID2igHB29Rsl4Om/Wd+h+mzczq2XLYdurT7Owzz/x2Zv7Pv7X6/X7Lf2/WSGgkNDxDG9dHAr8qQyccyIIN93BjEWv6k111Y79eN/qPPy4RE3BKkH7LE+1YQT/uzC5m+0NgElbRY3L+u+ybsSVPIaTQSVQYjO2hCKmowTXsmEOMamg5ug3GHtCCLwziCB1yXIVW1VCnydg2XrCEcUzhGLcy3qsa6jAZ0yo2Bbl4xT5ikSDjBUYTg1VvRsDxE3ZQDK8UUCU8eMMo0uXcZNVQ/ZPYlWXxKJ+1dxeFOPShXmog6BYsVAvIgQ8DSJPlU4ghaRYbBnO9qu/0VPYfuECbPNpvXEq40eZRvdN5NCEepZhGNg7wiQaTuQuqd+rCpry7GQnU1u2yFE2JwbxzzKreqU+KRAvOlwZwJZWZaTDnGV1Szcpt8Aa1unVoNwk8k3Z4EmrvtUhPrZYucyjNQN/stYIbliXjjvxziISGb+iPAAMAcz18wE4/HnIAAAAASUVORK5CYII=);\n}\n\n.xkit-stats-post-type.chat {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTgwREFEQ0UxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTgwREFEQ0YxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODBEQURDQzFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBODBEQURDRDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pmc6aAoAAAEzSURBVHjaYvz//z8DvQHjqKWjlo5aSjVL7ebf4AZSnUAcAsS8BMz6DsRHgLgUiG+DBA4lamBVyELAoG4gziTSA1xA7A/EfEDsCsR/cSlkImBQJBmhZwK1mIFcS7nJjTZ8koSC9x8S+xkQswKxKJT/GIhBCYIDGpSSSHp+UOJTZNABxLOB+A+UfwaIzwFxL1QOBniA2IdalrIB8UpQogbi+UD8E4jfQX3KhqSOGSofQQ1LfwGxIxAXAPF6IL4FxWZAbIAlJbuRG6fI4BsQqyPF3R9o3AkDMTua2hVAnE0NS52AWASIpYDYC4jloBa/gQY1DHwF4lxoYUGWpchJPwqJrYxHz1+kxEZWnJJTMDMRMpeQpdfIsPQ9pfm0BIhfkWAhKG5boYlutD4dtXTUUuoAgAADAGzGZBT0+yuKAAAAAElFTkSuQmCC);\n}\n\n.xkit-stats-post-type.audio {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDAxMTc2OTExQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDAxMTc2OTIxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODBEQUREMDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEMDExNzY5MDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmgJCVkAAAGISURBVHja7NY/KEVRHMDxd3kxyKoMMmCxeFneoje8wSBiMOgVykCkPEYyUCYDBgsRr2SUwkKUyeDPYDBICovVS/l/fU/9bp1u7nvvnluk7qlPt/On8zvn/s49Xcu27chvl6LIH5QwaBj0/waN5upcTx+7m6rRj1bUyKIfcIhlnOmDe+cTgXfajUuM4x2bal14xABOMV3InFEfATO4RjuOXP2NWMAkyjEaNKe1WMQdkj8EVOUcLThBGm1Bg47J6kckf14li2Goy3wi19z5gpahAzfYLmCB6iAdII4606DqhFbiAmuY0foqUKXV1anelbyrkjANmpFnJ3rQrPWlUK/Vk5LXIanPmQZtkPyoyT6Ec+q78KzN8abtOCWpMT5I+3KQ1NgvaYsL9bpnpc35G9iTlBh/p69YQkzqn/JswpXkbVXaLHnuaOONd6pP4EysLoJB3GPLtdNY0Au/1GP8C0rkKnzye6Xme71Tkp9i9Ln6brGi1Z1XvyEHLOs1qRX+DYZBw6B+yrcAAwC9FkublkrqIgAAAABJRU5ErkJggg==);\n}\n\n.xkit-stats-post-type.video {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDAxMTc2OTUxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDAxMTc2OTYxQjE3MTFFMzlCQzlBMTM0MjI0M0M4NEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpEMDExNzY5MzFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEMDExNzY5NDFCMTcxMUUzOUJDOUExMzQyMjQzQzg0QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlXaRegAAAFvSURBVHja7NbNKwRxHMfxXYsL+QdwEScHBxlyVPKQEkkO/oF18XwQKSSHvbg5c/TwH9iLXLQlFwc5SFKK5CGUxXp/63PYNjvGzoTDfOvVtL+Znc9vfvOd2Y1mMpnIb1dR5A8qDA1DA6lit53x6UXb9GEG9bjCOpbQhBU4eMIOZnFnX1pLzBcWSnViCzF9rsGCJtCKKo2XYwSVGMBbwVdKTWQFWp2hDIM5x9kKvKAXLdj3c0+rtb3FPcZxrDF7lV1rOW0tdzVe57eRzrXdQDse0KixKJLoQQodGj/x1UhUAm0YQ5euInuiQ2jWvSzFNg78hibVTHNowA3ec46pwCU2sfzF/h+H1mq54jp5vrJuvcCj+mAUU4WGnmprs/9wOc7u76GWehX9bqHfNZKjk9ljU+LCJp/GsAJ9LW9Kj4uXcvTCCOTdG/MYalf6HFSo1x+FI3TjNYgTpj2G2nO6h0l1cf6uC/+YhaFh6L8P/RRgAJzXR6+2XwoJAAAAAElFTkSuQmCC);\n}\n\n.xkit-stats-buttons {\n\tmargin-top: 15px;\n}","title":"XStats","description":"The XKit Statistics Tool","developer":"STUDIOXENIX","version":"0.3.8","details":"This extension allows you to view statistics regarding your dashboard, such as the percentage of post types, top 4 posters, and more. In the future, it will allow you to view statistics regarding your and others blogs.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/tag_replacer.json b/Extensions/dist/tag_replacer.json new file mode 100644 index 000000000..2bda4229f --- /dev/null +++ b/Extensions/dist/tag_replacer.json @@ -0,0 +1 @@ +{"id":"tag_replacer","script":"//* TITLE Tag Replacer **//\n//* VERSION 1.0.3 **//\n//* DESCRIPTION Replace old tags! **//\n//* DETAILS Allows you to bulk replace tags of posts. Go to your Posts page on your dashboard and click on the button on the sidebar and enter the tag you want replaced, and the new tag, and Tag Replacer will take care of the rest. **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.tag_replacer = new Object({\n\n\trunning: false,\n\n\trun: function() {\n\n\t\tthis.running = true;\n\n\t\tif (!XKit.interface.where().channel || !XKit.interface.where().user_url) {\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.tools.init_css(\"tag_replacer\");\n\n\t\tXKit.interface.sidebar.add({\n\t\t\tid: \"tag_replacer_sidebar\",\n\t\t\ttitle: \"Tag Replacer\",\n\t\t\titems: [{\n\t\t\t\tid: \"tag_replacer_button\",\n\t\t\t\ttext: \"Replace a tag\",\n\t\t\t\tcarrot: true\n\t\t\t}]\n\t\t});\n\n\t\t$(\"#tag_replacer_button\").click(() => {\n\t\t\tconst url = XKit.interface.where().user_url;\n\t\t\tconst shown_warning = XKit.storage.get(\"tag_replacer\", \"shown_warning\", \"false\");\n\n\t\t\tif (shown_warning !== \"true\") {\n\t\t\t\tthis.warning(url);\n\t\t\t} else {\n\t\t\t\tthis.show(url);\n\t\t\t}\n\t\t});\n\n\t},\n\n\twarning: function(url) {\n\t\tXKit.window.show(\n\t\t\t\"Important Notice\",\n\n\t\t\t\"Usage of Tag Replacer has reportedly caused some accounts to be temporarily terminated. \" +\n\t\t\t\"We aren't sure exactly why this is or what we can do to fix it.

      \" +\n\t\t\t\"Please only use this tool if you understand that, in the event that your usage of it triggers Tumblr's spam detector, \" +\n\t\t\t\"you will have to contact Tumblr support to restore your account.

      \" +\n\t\t\t\"We have provided a link below to Tumblr's support form for you to bookmark. \" +\n\t\t\t\"(The link opens in a new tab.)

      \" +\n\t\t\t\"If you accept this risk, this warning will not be shown again.\",\n\n\t\t\t\"warning\",\n\n\t\t\t'
      I understand
      ' +\n\t\t\t'
      Cancel
      ' +\n\t\t\t'Tumblr support →'\n\t\t);\n\n\t\t$(\"#xkit-tag-replacer-accept-risk\").click(() => {\n\t\t\tXKit.storage.set(\"tag_replacer\", \"shown_warning\", \"true\");\n\t\t\tthis.show(url);\n\t\t});\n\t},\n\n\tshow: function(url) {\n\n\t\tXKit.window.show(\n\t\t\t'Tag Replacer',\n\n\t\t\t'Replace this tag:' +\n\t\t\t'' +\n\t\t\t'
       Case Sensitive Mode
      ' +\n\t\t\t'
       
      ' +\n\t\t\t'With this tag: (leave blank to delete the tag)' +\n\t\t\t'' +\n\t\t\t'
       Don\\'t replace the tag but append the tag above
      ' +\n\t\t\t'
       
      ' +\n\t\t\t'You can replace only one tag at a time.
      ' +\n\t\t\t'Due to technical reasons, you can\\'t edit tags containing dashes or slashes.
      ',\n\n\t\t\t'question',\n\n\t\t\t'
      Go!
      ' +\n\t\t\t'
      Cancel
      '\n\t\t);\n\n\t\t$(\"#xkit-tag-replacer-case-sensitive\").click(function() { $(this).toggleClass(\"selected\"); });\n\t\t$(\"#xkit-tag-replacer-append\").click(function() { $(this).toggleClass(\"selected\"); });\n\n\t\t$(\"#xkit-tag-replacer-ok\").click(function() {\n\t\t\tvar $replace = $(\"#xkit-tag-replacer-replace\");\n\t\t\tvar replace = $replace.val().trim();\n\n\t\t\tif (!$(\"#xkit-tag-replacer-case-sensitive\").hasClass(\"selected\")) {\n\t\t\t\treplace = replace.toLowerCase();\n\t\t\t}\n\n\t\t\tvar $replace_with = $(\"#xkit-tag-replacer-with\");\n\t\t\tvar replace_with = $replace_with.val().trim();\n\n\t\t\tfunction complain($target, message, original) {\n\t\t\t\t$target\n\t\t\t\t\t.css(\"border-color\", \"red\")\n\t\t\t\t\t.attr(\"placeholder\", message)\n\t\t\t\t\t.val(\"\")\n\t\t\t\t\t.click(() => $target\n\t\t\t\t\t\t.removeAttr(\"style\")\n\t\t\t\t\t\t.attr(\"placeholder\", original)\n\t\t\t\t\t\t.off(\"click\"));\n\t\t\t}\n\n\t\t\tif (replace.includes(\",\")) {\n\t\t\t\tcomplain($replace, \"Tag to search for can not contain commas.\", 'Enter a tag (example: \"I like pandas\")');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (replace === \"\") {\n\t\t\t\tcomplain($replace, \"Enter the tag you want replaced.\", 'Enter a tag (example: \"I like pandas\")');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($(\"#xkit-tag-replacer-append\").hasClass(\"selected\") && replace_with === \"\") {\n\t\t\t\tcomplain($replace_with, \"Enter the tag(s) you want to append.\", 'Enter a new tag (example: \"I still like pandas\")');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tXKit.extensions.tag_replacer.start(url, replace, replace_with);\n\n\t\t});\n\n\t},\n\n\turl: \"\",\n\treplace: \"\",\n\treplace_with: \"\",\n\tpost_ids: [],\n\tpost_count: 0,\n\tappend_mode: false,\n\tcase_sensitive: false,\n\tsuccess_count: 0,\n\tfail_count: 0,\n\n\tstart: function(url, replace, replace_with) {\n\n\t\tObject.assign(this, {\n\t\t\turl: url,\n\t\t\treplace: replace,\n\t\t\treplace_with: replace_with,\n\t\t\tpost_ids: [],\n\t\t\tpost_count: 0,\n\t\t\tsuccess_count: 0,\n\t\t\tfail_count: 0,\n\t\t\tappend_mode: $(\"#xkit-tag-replacer-append\").hasClass(\"selected\"),\n\t\t\tcase_sensitive: $(\"#xkit-tag-replacer-case-sensitive\").hasClass(\"selected\")\n\t\t});\n\n\t\tXKit.window.show(\n\t\t\t'Working...',\n\n\t\t\t'Tag Replacer is trying to find posts with the tag you\\'ve entered, please wait. This might take a while.' +\n\t\t\t'
      Initializing...
      ',\n\n\t\t\t'info'\n\t\t);\n\n\t\tthis.fetch_posts();\n\t},\n\n\tfetch_posts: function(page = 0) {\n\t\tGM_xmlhttpRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: `https://api.tumblr.com/v2/blog/${this.url}/posts?` + $.param({\n\t\t\t\t\"api_key\": XKit.api_key,\n\t\t\t\t\"tag\": this.replace,\n\t\t\t\t\"limit\": 50,\n\t\t\t\t\"offset\": page * 50\n\t\t\t}),\n\t\t\tonload: response => {\n\t\t\t\tlet data = JSON.parse(response.responseText);\n\n\t\t\t\tif (data.response.posts.length === 0) {\n\t\t\t\t\tthis.start_replace();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tdata.response.posts.forEach(post => this.post_ids.push(post.id_string));\n\t\t\t\t$(\"#xkit-tag-replacer-loaded\").html(`Loaded ${this.post_ids.length} tagged posts...`);\n\n\t\t\t\tthis.fetch_posts(page + 1);\n\t\t\t},\n\t\t\tonerror: () => this.show_error(\n\t\t\t\t\"Can't fetch posts\",\n\n\t\t\t\t\"Tag Replacer could not fetch a list of tagged posts. This is usually due to your blog being private.
      \" +\n\t\t\t\t\"Please check your blog settings and try again.\"\n\t\t\t)\n\t\t});\n\t},\n\n\tstart_replace: function() {\n\t\tthis.post_count = this.post_ids.length;\n\n\t\tif (this.post_count === 0) {\n\t\t\tXKit.window.show(\n\t\t\t\t'Nothing for me to do.',\n\n\t\t\t\t`Tag Replacer could not find any posts tagged
      #${this.replace}.`,\n\n\t\t\t\t'info',\n\n\t\t\t\t'
      OK
      '\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.window.show(\n\t\t\t'Working...',\n\n\t\t\t`Tag Replacer is ${this.append_mode ? \"appending\" : \"replacing\"} tags.\n\t\t\t${XKit.progress.add(\"tag-replacer-progress\")}\n\t\t\tThis might take a long, long, long time.`,\n\n\t\t\t'info'\n\t\t);\n\n\t\tthis.replace_tag();\n\t},\n\n\treplace_tag: function() {\n\t\tconst post_id = this.post_ids.shift();\n\n\t\tif (post_id === undefined) {\n\t\t\tthis.done_replacing();\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.interface.fetch({\"id\": post_id}, response => {\n\t\t\tif (response.error) {\n\t\t\t\tthis.show_error(\n\t\t\t\t\t\"Can't fetch post.\",\n\t\t\t\t\t\"Try again later.\"\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet tags = response.data.post.tags.split(\",\");\n\t\t\tlet edited = false;\n\n\t\t\tif (this.append_mode) {\n\t\t\t\ttags.push(this.replace_with);\n\t\t\t\tedited = true;\n\t\t\t} else {\n\t\t\t\tfor (let tag of tags) {\n\t\t\t\t\tlet i = tags.indexOf(tag);\n\n\t\t\t\t\tif (!this.case_sensitive) {\n\t\t\t\t\t\ttag = tag.toLowerCase();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (tag === this.replace) {\n\t\t\t\t\t\ttags[i] = this.replace_with;\n\t\t\t\t\t\tedited = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!edited) {\n\t\t\t\tthis.update_progress();\n\t\t\t\tthis.replace_tag();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet edited_post = XKit.interface.edit_post_object(response.data, {\n\t\t\t\ttags: tags.join(\",\")\n\t\t\t});\n\n\t\t\tXKit.interface.edit(edited_post, edit_response => {\n\t\t\t\tif (edit_response.error) {\n\t\t\t\t\tthis.fail_count++;\n\t\t\t\t} else {\n\t\t\t\t\tthis.success_count++;\n\t\t\t\t}\n\n\t\t\t\tthis.update_progress();\n\t\t\t\tsetTimeout(() => this.replace_tag(), 5000);\n\t\t\t});\n\t\t});\n\t},\n\n\tupdate_progress: function() {\n\t\tlet done = this.post_count - this.post_ids.length;\n\t\tlet percentage = Math.round((done * 100) / this.post_count);\n\t\tXKit.progress.value(\"tag-replacer-progress\", percentage);\n\t},\n\n\tdone_replacing: function() {\n\t\tif (this.fail_count == this.post_count) {\n\t\t\tthis.show_error(\n\t\t\t\t\"Oh dear...\",\n\t\t\t\t\"I was unable to replace tags on any of the posts.
      Try again later?\"\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.window.show(\n\t\t\t'All done!',\n\n\t\t\t`Tag Replacer successfully ${this.append_mode ? \"appended\" : \"replaced\"} tags on ${this.success_count} posts.
      \n\t\t\t(Failed: ${this.fail_count})`,\n\n\t\t\t'info',\n\n\t\t\t'
      Yay!
      '\n\t\t);\n\t},\n\n\tshow_error: (title, message) => XKit.window.show(\n\t\ttitle, message,\n\n\t\t'error',\n\n\t\t'
      OK
      ' +\n\t\t'New XKit support'\n\t),\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.tools.remove_css(\"tag_replacer\");\n\t\tXKit.interface.sidebar.remove(\"tag_replacer_sidebar\");\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2OTQ0NzNGNDU3NzkxMUUzODM5QzhFMjcwMUMyMERGNiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2OTQ0NzNGMzU3NzkxMUUzODM5QzhFMjcwMUMyMERGNiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","css":"#xkit-tag-replacer-progress {\n\n\tborder-top: 1px dashed rgb(190,190,190);\n\tmargin-top: 10px;\n\tpadding-top: 10px;\n\n}\n\n.xkit-tag-replacer-separator {\n\tborder-top: 1px dashed rgb(200,200,200);\n\tmargin-top: 10px; margin-bottom: 10px;\n\theight: 0;\n}","title":"Tag Replacer","description":"Replace old tags!","developer":"new-xkit","version":"1.0.3","details":"Allows you to bulk replace tags of posts. Go to your Posts page on your dashboard and click on the button on the sidebar and enter the tag you want replaced, and the new tag, and Tag Replacer will take care of the rest.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/tagviewer.json b/Extensions/dist/tagviewer.json new file mode 100644 index 000000000..54f7fa43f --- /dev/null +++ b/Extensions/dist/tagviewer.json @@ -0,0 +1 @@ +{"id":"tagviewer","script":"//* TITLE TagViewer **//\n//* VERSION 0.5.3 **//\n//* DESCRIPTION View post tags easily **//\n//* DEVELOPER new-xkit **//\n//* DETAILS This extension allows you to see what tags people added to a post while they reblogged it. It also provides access to the post, and to Tumblr search pages to find similar posts.

      Based on the work of inklesspen **//\n//* FRAME false **//\n//* BETA false **//\n//* SLOW false **//\n\nXKit.extensions.tagviewer = new Object({\n\n\trunning: false,\n\tslow: false,\n\tapiKey: \"5CIOyjHfcrNFlyEJl2D7vnoDTYqV30lNAUaSd4LJKoBFOZOmxp\",\n\n\tbutton_icon: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAvBJREFUOBGlVM9L2mEYf96vaVQeWgrTOpUSaxs6yNrBdhiCRJcNL7vIQogxSErZP1CwwW5pmCNvHnbrsEOwg+07iIUjQSg3XIfGiCiTzdpaRvPXPs8XHVKzFXvh8XmfX5/3877P81WEw+ErJycnz4UQViKSIPWrCOO9Vqt9OjY2lqsPNNqLmZmZeQQfNUpgPw77pFar746Pj2fOy+MYM7pVTfKoVKrbKB6siSRJdxBbq1Qq1wqFwtu5uTlDNbehklAsOAr1sVwu38NWhtz3+XyJycnJd2DmgH1h0NNvNgE2WgBMQJTl9Xq/XQb0NOAsmP4E0mwV79KgIhAIrILVAIAG+Zr1QKf3oVBIh7d8A78V+X9tFDMscSESmlmfty5yfQaMMwgaAgIh3XmAHPsXqMRDy/SRa+Xr/C+oMjI8XzxnPG9ms/nz8PBwqqmpaQCHMONdCI/SPA5ehf6z+PBisSijzsKkWlpa+hVAzkgkEjeNRmMcTm06nT7e2toSBwcHzQaDgSwWy6+enp4SimJIfQj9o4YaDAYf47lesA0SFgWQmcGOAWR3cXHRBlt0dXVRR0cH7e3tUSaToba2torL5Sq3t7d/R24/QL9gQh5g/xL5Kuhpv98/pYJhhiHH4/Hs0tKSrbu7m1AoNBqNAtbX10d2u512dnbE8vKyhEM0Op3O63Q6JfiC9WDAIQHHh2QyeYxk29DQENlsNsJVKRqNEmI8TjQ6OkpgRisrK/w05Ha7y3q9XkQiEZHP5xVmDMaLx0a0trbeUKwL/uzv70s4THg8nkN8DNP1ZczwOhxr6+vrKlmWBbpMDoeD8J60ublJJpOJuDGxWIy2t7dpZGSEent7axj8f/kMt5iqOWpNccLxOpvNioWFBcXX2dmpNIUbwoJ55bdVrl4tLkMfQ9wAfFX1kVLMBpjaoeRSqaTe2NgQqVSKcrmcws5qtRI3i9+zuo6geT5d8KVqzjMaoFchKUgBcmZh3g7h/Ap5AlGfAYDjN8f2ldpe2/sVAAAAAElFTkSuQmCC\",\n\n\tpreferences: {\n\t\t\"notice\": {\n\t\t\ttext: \"Notice\",\n\t\t\ttype: \"separator\"\n\t\t}\n\t},\n\n\tcpanel: function(obj) {\n\t\tif (typeof XKit.extensions.retags == \"undefined\") {\n\t\t\t$(obj).append(\"
      Hi! This extension has no options, but you may be looking for Retags.
      \");\n\t\t\t$(\"#install-retags-shortcut\").click(function() {\n\t\t\t\tfunction search_for_retags(mutations, observer) {\n\t\t\t\t\tmutations.forEach(function(mutation) {\n\t\t\t\t\t\tif ($(mutation.addedNodes).find(\"#xkit-gallery-search\").length) {\n\t\t\t\t\t\t\t$(\"#xkit-gallery-search\").val(\"Retags\").keyup();\n\t\t\t\t\t\t\tobserver.disconnect();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tvar gallery_observer = new MutationObserver(search_for_retags);\n\t\t\t\t$(\"#xkit-cp-tab-get-extensions\").click();\n\t\t\t\tgallery_observer.observe($(\"#xkit-control-panel\")[0], {\n\t\t\t\t\tchildList: true,\n\t\t\t\t\tsubtree: true\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\t$(obj).append(\"
      You might be interested in the \\\"Tag Crawler\\\" from Tumblr Labs, which provides the same functionality as this extension.

      We can't show you tags from dash-only blogs, but Tag Crawler seems to have a limit on how far back in time it can look.
      \");\n\t\t}\n\t},\n\n\trun: function() {\n\n\t\tthis.running = true;\n\n\t\tXKit.tools.init_css(\"tagviewer\");\n\t\tXKit.interface.create_control_button(\"xkit-tagviewer\", this.button_icon, \"TagViewer\", \"\");\n\t\tXKit.extensions.tagviewer.init();\n\t\tXKit.post_listener.add(\"tagviewer\", XKit.extensions.tagviewer.do);\n\t\tif ($(\".posts .post\").length > 0) {\n\t\t\tXKit.extensions.tagviewer.do();\n\t\t}\n\t},\n\n\tinit: function() {\n\n\t\t$(document).on(\"click\", \".xkit-tagviewer\", function(event) {\n\t\t\tvar post_id = $(this).attr('data-post-id');\n\t\t\tvar tumblelog_key = $(this).attr('data-xkit-tagviewer-tumblelog-key');\n\t\t\tvar tumblelog_name = $(this).attr('data-xkit-tagviewer-tumblelog-name');\n\t\t\tXKit.extensions.tagviewer.view_tags(post_id, tumblelog_key, tumblelog_name);\n\t\t});\n\n\t},\n\n\tnotes_url: \"\",\n\tfound_count: 0,\n\tlast_page: false,\n\tloading_more: false,\n\tpost_id: \"\",\n\tinit_id: \"\",\n\n\tview_tags: function(post_id, tumblelog_key, tumblelog_name) {\n\n\t\t// Set tag viewer up and show our window.\n\n\t\tXKit.extensions.tagviewer.init_id = XKit.tools.random_string();\n\t\tXKit.extensions.tagviewer.found_count = 0;\n\t\tXKit.extensions.tagviewer.post_id = post_id;\n\t\tXKit.extensions.tagviewer.last_page = false;\n\t\tXKit.extensions.tagviewer.loading_more = false;\n\t\tXKit.extensions.tagviewer.notes_url = \"https://www.tumblr.com/svc/tumblelog/\" + tumblelog_name + \"/\" + post_id + \"/notes?mode=rollup\"; //\"http://www.tumblr.com/dashboard/notes/\" + post_id + \"/\" + tumblelog_key + \"/\" + tumblelog_name;\n\n\t\tconsole.log(\"tagviewer -> init_id is \" + XKit.extensions.tagviewer.init_id);\n\n\t\t// Create our window.\n\t\tvar m_html = \"
      \" +\n\t\t\t\t\"
      \" +\n\t\t\t\t\t\"
      Loading, please wait...
      \" +\n\t\t\t\t\t\"
       
      \";\n\n\t\t$(\"#tagviewer-window\").unbind('scroll');\n\t\tXKit.window.show(\"\", m_html, \"\", \"
      Close
      \");\n\t\tXKit.extensions.tagviewer.load_tags();\n\n\t},\n\n\tload_tags: function() {\n\n\t\t// Load the next set of notes and tags.\n\n\t\tvar m_url = XKit.extensions.tagviewer.notes_url;\n\t\tvar m_init_id = XKit.extensions.tagviewer.init_id;\n\n\t\tvar m_post_id = XKit.extensions.tagviewer.post_id;\n\n\t\t$.ajax({\n\t\t\turl: m_url,\n\t\t\tdataType: \"json\"\n\t\t}).fail(function() {\n\n\t\t\tXKit.window.close();\n\t\t\tXKit.window.show(\"Unable to fetch required data\", \"TagViewer could not get the required data from Tumblr servers. Please try again later or file a bug report by going to the XKit Blog.\", \"error\", \"
      OK
      \");\n\n\t\t}).done(function(data, textStatus, jqXHR) {\n\n\t\t\tif (m_post_id !== XKit.extensions.tagviewer.post_id || m_init_id !== XKit.extensions.tagviewer.init_id) {\n\t\t\t\tconsole.log(\"tagviewer -> quitting, wrong post_id or init_id\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar reblogs = data.response.notes.filter(function(item) {\n\t\t\t\treturn item.type === \"reblog\";\n\t\t\t});\n\n\t\t\t$(reblogs).each(function() {\n\n\t\t\t\tvar blog_name = this.blog_name;\n\t\t\t\tvar post_id = this.post_id;\n\n\t\t\t\tvar api_url = \"https://api.tumblr.com/v2/blog/\" + blog_name + \"/posts\" + \"?api_key=\" + XKit.extensions.tagviewer.apiKey + \"&id=\" + post_id;\n\n\t\t\t\tGM_xmlhttpRequest({\n\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\turl: api_url,\n\t\t\t\t\tjson: true,\n\t\t\t\t\tonerror: function(response) {\n\t\t\t\t\t\tconsole.error(\"tagviewer -> Can't fetch page \" + api_url);\n\t\t\t\t\t},\n\t\t\t\t\tonload: function(response) {\n\n\t\t\t\t\t\tif (m_post_id !== XKit.extensions.tagviewer.post_id || m_init_id !== XKit.extensions.tagviewer.init_id) {\n\t\t\t\t\t\t\tconsole.log(\"tagviewer -> quitting, wrong post_id or init_id\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\tvar responseData = JSON.parse(response.responseText);\n\t\t\t\t\t\t\tvar post = responseData.response.posts[0];\n\n\t\t\t\t\t\t\tif (typeof post.tags !== \"undefined\") {\n\t\t\t\t\t\t\t\tif (post.tags.length > 0) {\n\t\t\t\t\t\t\t\t\tXKit.extensions.tagviewer.add_tags(blog_name, post.tags, post.post_url);\n\t\t\t\t\t\t\t\t\tXKit.extensions.tagviewer.found_count++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.error(\"tagviewer -> Can't parse JSON at \" + api_url + \" -> \" + e.message);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t});\n\n\t\t\tif (data.response._links) {\n\t\t\t\tXKit.extensions.tagviewer.notes_url = \"https://www.tumblr.com\" + data.response._links.next.href;\n\t\t\t\tconsole.log(\"Another page found.\");\n\t\t\t\tif (XKit.extensions.tagviewer.found_count <= 7) {\n\t\t\t\t\tconsole.log(\" -- Not enough posts loaded, auto-loading..\");\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tXKit.extensions.tagviewer.load_tags();\n\t\t\t\t\t}, 1400);\n\t\t\t\t\tXKit.extensions.tagviewer.show_loader();\n\t\t\t\t} else {\n\t\t\t\t\tXKit.extensions.tagviewer.hide_loader();\n\t\t\t\t\tXKit.extensions.tagviewer.loading_more = false;\n\t\t\t\t\tconsole.log(\" -- Enough loaded, waiting for user to scroll down.\");\n\t\t\t\t\tXKit.extensions.tagviewer.activate_endless_scroll();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (XKit.extensions.tagviewer.found_count === 0) {\n\t\t\t\t\t$(\"#tagviewer-loading\").html(\"No posts with tags found.\");\n\t\t\t\t}\n\t\t\t\tXKit.extensions.tagviewer.last_page = true;\n\t\t\t\tconsole.log(\"Last page, quitting.\");\n\t\t\t\tXKit.extensions.tagviewer.hide_loader();\n\t\t\t}\n\n\t\t});\n\n\t},\n\n\tactivate_endless_scroll: function() {\n\n\t\t$(\"#tagviewer-window\").unbind('scroll');\n\t\t$(\"#tagviewer-window\").bind('scroll', function() {\n\n\t\t\tvar c_height = 0;\n\t\t\t$(\"#tagviewer-window\").children().each(function() {\n\t\t\t\tc_height = c_height + $(this).outerHeight(true);\n\t\t\t});\n\n\t\t\tif ($(\"#tagviewer-window\").scrollTop() >= c_height - 400) {\n\n\t\t\t\tif (XKit.extensions.tagviewer.loading_more) {return; }\n\n\t\t\t\tXKit.extensions.tagviewer.loading_more = true;\n\t\t\t\tXKit.extensions.tagviewer.found_count = 0;\n\n\t\t\t\tXKit.extensions.tagviewer.show_loader();\n\n\t\t\t\t$(\"#tagviewer-window-outer\").nanoScroller();\n\t\t\t\tsetTimeout(function() { XKit.extensions.tagviewer.load_tags();\t}, 2000);\n\n\t\t\t}\n\n\t\t});\n\n\t},\n\n\tshow_loader: function() {\n\n\t\t$(\"#tagviewer-loader-icon\").css(\"display\", \"block\");\n\n\t},\n\n\thide_loader: function() {\n\n\t\t$(\"#tagviewer-loader-icon\").css(\"display\", \"none\");\n\n\t},\n\n\tadd_tags: function(by, tags, link) {\n\n\t\t$(\"#tagviewer-loading\").slideUp('slow', function() { $(this).remove(); });\n\n\t\tvar m_html = '
      ' +\n\t\t\t\t\t\t'
      ' +\n\t\t\t\t\t\t\t`${by}` +\n\t\t\t\t\t\t\t`` +\n\t\t\t\t\t\t'
      ' +\n\t\t\t\t\t\t'
      ';\n\n\t\tfor (let tag of tags) {\n\t\t\tm_html += `#${tag}`;\n\t\t}\n\n\t\tm_html += '
      ';\n\n\t\tif ($(\"#tagviever-mini-loader\").length > 0) {\n\t\t\t$(\"#tagviewer-window\").before(m_html);\n\t\t} else {\n\t\t\t$(\"#tagviewer-window\").append(m_html);\n\t\t}\n\n\t\t$(\"#tagviewer-window-outer\").nanoScroller();\n\n\t},\n\n\tdo: function() {\n\n\t\t// get posts:\n\t\tvar posts = XKit.interface.get_posts(\"xkit-tagviewer-done\");\n\n\t\t$(posts).each(function() {\n\n\t\t\t$(this).addClass(\"xkit-tagviewer-done\");\n\n\t\t\tvar m_post = XKit.interface.post($(this));\n\n\t\t\t// Post has no notes, skip.\n\t\t\tif (m_post.note_count === 0) { return; }\n\n\t\t\t// Don't add button if we are in inbox.\n\t\t\tif ($(this).hasClass(\"is_note\") && XKit.interface.where().inbox === true) { return; }\n\n\t\t\tXKit.interface.add_control_button(this, \"xkit-tagviewer\", \"data-xkit-tagviewer-tumblelog-key=\\\"\" + m_post.tumblelog_key + \"\\\" data-xkit-tagviewer-tumblelog-name=\\\"\" + m_post.owner + \"\\\"\");\n\n\t\t});\n\t},\n\n\tdestroy: function() {\n\t\t$(\".xtagviewer_post_icon\").remove();\n\t\tXKit.tools.remove_css(\"tagviewer\");\n\t\tXKit.post_listener.remove(\"tagviewer\");\n\t\tthis.running = false;\n\t}\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTI1MDBGMUNFRTdFMTFFMjlDQzREN0VDNzIxQUU5MkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTlBRjlCQjhFRUU0MTFFMjlDQzREN0VDNzIxQUU5MkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFMjUwMEYxQUVFN0UxMUUyOUNDNEQ3RUM3MjFBRTkyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFMjUwMEYxQkVFN0UxMUUyOUNDNEQ3RUM3MjFBRTkyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pnyif+UAAAZCSURBVHjafFZpbFRVFD7nMe10Hact7dCWEShQaUsXbEBaLNiIRASCiiA1BDUx0SgkmhgTY/xhjH9Bics/6A8IoiYEZbNUkCA0bdk6LUtLqdgg0xWmy3SZN+9e7/reqz94mdy57757z7nnO99Z8EA7UAoUxBgH/lCQj0X4SMRILSBincpXNkdxylL75Ta+hwCxAFGJ8hDxJxW4pbNXeUYK5V/lJ+RCqdQkDioFVKxY+giI6yJ4QO4jck2JZq8WuIRSRx+lzihtskxnm30hpRuYAtdN5SpDRu8E+ZVSbZ9LClsncQ6I86BCkupbcgX8j6iDRKIh5cRnKLZxoxo9hT6qr9wOqRi1L9G2QMyJ6+LUVOa7HyndspR6+7Hizh0sAY5USkw+4U422Ad2WN+FmjPuzUdD2E6ETbaHgbPF5SZNMKLwZERi+7mTLQcDAavW9GZVh9fIZhcywEtgiq2OxTpP31iT6IFNS3siZndDaF1fv/IQ1aBRUBK4MywwiEMrbhTVbGJnkoygF3OSMJvpTeKTQLZ39eaKjqlpOHmzIM/7wtbKzpxszQJL+1aItmICCYsbr4lsamOJOgMQozB9tBP3N2Vcf7hb3sRnlGyuvDY2CT+2Y6pR+OryjkCWcgmJK2ox0UqTwF8FqvKBHQ18SKQ09mAAxsdhIHrK9qrfqHiF6RjlOvxGyfbqG4EA9weguhlzNZEQUaGAw2eTlbg5M2Vg+qqS3WVFC9bMPe9mFNOxperqyCgcCmG6Uby1OpQTELCIOEAbdaZAAqLCRGcYM8YtTYBktlyRuW9dsMeL+f9jbaaxrK7q2lgEDrZihlG6o6Y9Nw/c3GYSWHBwBejKCmyIxzlv2GzE7ITHPj5mx7MXR6NQ38rsWFr3XFNuLj8YmwJzWt3bkGio0CBOQLLF0zeXT5Dux+vINqrrVl+KjkN9C7Nj5Y7aNsYrnkpRBC9Lq99ddPCKxxzrpH5fGmRnQXSSv+IsSE+GgH/jysARhBS3mkHSdLih2jcbdlb2P6KdhxpX37+nUoWhMpqlIl5mMZkV2LekRDAQgrkr5udW5mYXMXqEuo5/+VPq8Z6smXZUFRR679yEW9H6LKNm3iIBsnCnh7M1rnMiURFvGDAvHyrmf7so+YMZiAhPX4+8f6Xrh/phrFj8doV/P1u5PFTX0TZdXZNQkvZJ89DroRZVJxivcN95hb7iqwXJyfBM8VtPZx7QMT6Jgk5iPmGDc+IutrZCbW15Ahacv3B06TLYVECbhl4+ferYxBQPW+lIj1NShCfS02D9ssNzk7aLOO7/rWtOMOO1FTk/S6ENvQvHx/u2FPMzGxZSb/Kis2faEjxt5Su49ObB7Wcaj01OK+ky33nsPMwerxfWlO5l0luG6xKMFITU8ANYu/gzG6GAb1tH+76hJc3N/zzvS6lYm9cdr8n768/wiwseNQ9uPdHwS3RUVwJdXz1E11Xm56cKywrTPmy8X3i14055SX4w/d1ZCMOx5ntT9eX+r8V+ZFxIhPS+cLRz5GJ4Lm4rpb0L8Ugoo+cWTIyJ0BXkYYlHJg/DTnBsEg6HhmMtQd87jI59g/8W+z/3JMDlu+/l+7aJO0xd7fxmdg6Lr6KhfohPQ3DOxusjuwbC0NUBoxFdqO1cKRiKe8+JTKdzU3oSrCr7uPCJj37vya/MP2hC5NcLu1JSOHqRh/zAG7VXbkc+7Q03bCgKNYc3XrrUy6KMuOurYCfoioR7GnXPQiBu8XEWQOESWF/wMAEz2KYRs/1cT9lYFDL9+FJBBMHHFgemT55o33A7JC4bd0LVroV2RsA9f4jyK6qN3SOxuT8DngymluZ+Py9pp6vHMG+PfHXt7y+6u2BiXJVxohWg+IubKptKm3DPWbHPVG4gus+xzbJMFX2yj6NE1UKi+z4EdUWV9kV5p7pTMWSVl4UURYZyQKSqRKsyi+rKKBE2dJZEnhiUdHR6PRUHvFKi0xoxFjpIEnUX2dTIZEVcLQLVlYUbJBObpash6r5oRscmmSD4K41Faa9QhmIiR0Z2Bb1lc0ekMnSijG+gouijVE54d+S0p+jqeWyeWDNqH4gummd/Q3lZNtW8IzLVimEXeGoIQRJWF6khPiP67d6EKUONhAxap6EH7hX+Q/hPgAEAZJ/kF7632UUAAAAASUVORK5CYII=","css":".xkit_tagviewer_display {\n -moz-user-select: all;\n -webkit-user-select: all;\n user-select: all;\n height: 300px;\n overflow-y: auto;\n}\n\n#tagviewer-window-outer {\n\theight: 230px;\n\tborder: 1px solid rgb(190,190,190);\n}\n\n#tagviewer-loading {\n\tpadding: 30px 10px;\n\tfont-size: 14px;\n\tfont-weight: bold;\n\ttext-align: center;\n\tcolor: rgb(110,110,110);\n}\n\n.tagviewer-tag {\n\tborder-bottom: 1px solid rgb(190,190,190);\n}\n\n.tagviewer-tag:last-child {\n\tborder-bottom: 0 !important;\n}\n\n.tagviewer-by-avatar {\n\theight: 13px;\n\twidth: 13px;\n\tposition: absolute;\n\ttop: 8px; left: 8px;\n}\n\n#tagviewer-loader-icon {\n\tbackground-image: url(data:image/gif;base64,R0lGODlhFAAUAMQAAP////X39f37/cXHxd3f3f3//ZWXlfXz9a2vreXj5c3Lzd3b3dXT1e3v7Z2fneXn5e3r7bWztbW3ta2rrb27vaWnpc3Pzb2/vf///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTE5RTZBNzgzRTU0MTFFM0JFOUNFQjdCODYyOTc5RjMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTE5RTZBNzkzRTU0MTFFM0JFOUNFQjdCODYyOTc5RjMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBMTlFNkE3NjNFNTQxMUUzQkU5Q0VCN0I4NjI5NzlGMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBMTlFNkE3NzNFNTQxMUUzQkU5Q0VCN0I4NjI5NzlGMyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAkJABgALAAAAAAUABQAAAV9ICCOYxAUZKoCpnCsZCuax8nKJS0UOtrnOJev9YrVdqofbJkqIpmzBYHghOmm0wSTZkpgtUuiCVtd/cpQ0sICVg0qEpuIMai3RwODfkKq1xUABBERBAAVenpPCn4LDQiPCA0RiA4xiwwCCxOQCwITBg53KY6QDWkjC4OdKyEAIfkECQkAGAAsAAAAABQAFAAABXkgII5jEBRkqgKmcK7l65ovndK1PbcxL7i/nUykUxVJQ1hQuUpYGkQfjGGoMnDJlKNqcOCWK263cFxRqwqmKsFIkCAJqJmSJiUIeDmJgehTSHh4bg8KCg8AFH19S4EEEAEDkQOQihIpd4OSA26JEhBKkJJZShCFbishACH5BAkJABgALAAAAAAUABQAAAWBICCOYxAUZKoCpnCsZCuaxxlMhvPEtFD0BYlh6ODJUC9AZTj0lWpO0oA5gcEGjkjSujosGrMjbIGYIBY0sSpSRmhb25WkHfmpVeRJZMFVNb4pJzAJFnyBdwAJA4sMRoJeCS8Wi4soYTIEmQQCDJQKhzaaBJIDCnF4C5lRfSyZpyMhACH5BAkJABgALAAAAAAUABQAAAV/ICCOIuM4DKmuj+Eaz0oGgQBYr2EJFCI1M1qt9UooEEhJkGYzoQA9JMI2ElJJDCllVZMBGJTB1SsLPLpWMuAxaEOsXa+iPVAI43K6opAmsy8DCWpcCXgChiQNCRBcTCsNBJGCVX2OCQmRBEtoNTUQmZOUVHc2mJpqNA2Ig44yIQAh+QQJCQAYACwAAAAAFAAUAAAFfyAgjiIRRQSprg3iIs06Po4xBcv0LgIzKAdSzWCQtF6NxWCpIBGJFcDilFIsl4XR5DlYJa4M0kFS6coICp5sLRaIAodAln0g2ONwOBuQWNgTeUF7doRZcXNrdXd7MoJtdG5ieZEqk216b3KZhyN4moeCoJWaAoFznJCojJ2kKyEAIfkECQkAGAAsAAAAABQAFAAABXwgII7ioygPqa7B4A7BOjYScgnJOyRAQvCkGgKhaL0CEIISKBoOJb0Tz6ckkChOxiq5VCkoWlkjASmMTCmZmmFoh9WCgFzgaBsccIB8X2/j4XtybG55cXMAEAplhWoxgAIsh5GOI4GQBZKWlXuQc46am5egko1IlIwipCohACH5BAkJABgALAAAAAAUABQAAAV+ICCO4kEkB6muAuESAlsqA1OYi5sGvEoPg0XrFeP1RkCgAnBIoJgBwSE6YiQTLGOMtFBgZdtRY9EAswiItNA8jUbSiAjbGHin5WC6Cb6eFwBjZWZZEhUDg2EAEwaMhyttiYyMFSVUUlojDpISTJeVRyIPmhM7mKB5mIgjpyohACH5BAkJABgALAAAAAAUABQAAAV3ICCOYxAUZKoCpnCuI0E8otmydyzP+G2/oh0PJ6jZSIkdZHVMQRJLWHHKSgClyIGWhj0qtANF9/fViqW/wAMcRfusWKmCwkDFRxSEvq5qjvR6FAAMDg51aSQSgAMPBo4GNCYNVAAQioIKjwZnOSsQmm13hA5nKiEAOw==);\n\tposition: absolute;\n\tbottom: 12px;\n\tright: 13px;\n\twidth: 20px;\n\theight: 20px;\n\tz-index: 1000;\n}\n\n#tagviewer-mini-loader {\n\tdisplay: block;\n\tposition: relative;\n\tfont-weight: bold;\n\theight: 38px;\n\tline-height: 38px;\n\ttext-align: center;\n\tcolor: rgb(120,120,120);\n\tbackground: rgb(245,245,245);\n}\n\n.tagviewer-by {\n\tdisplay: block;\n\tposition: relative;\n\tfont-weight: bold;\n\theight: 30px;\n\tline-height: 30px;\n\tpadding: 0px 10px 0px 28px;\n\tmargin-bottom: 4px;\n\tbackground: rgb(245,245,245);\n\tborder-bottom: 1px solid rgb(190,190,190);\n}\n\n.tagviewer-tag-tags {\n\tpadding: 7px 10px;\n}\n\n.tagviewer-tag-tag {\n\tdisplay: inline-block;\n\tmargin-right: 15px;\n\tfont-weight: normal !important;\n\tfont-size: 13px;\n}\n\n.xkit-interface-control-button.xkit-tagviewer:after {\n\topacity: 1 !important;\n}\n\n#tagviewer-cpanel-notice {\n\tpadding: 15px;\n\tfont-size: 14px;\n\tcolor: rgb(80,80,80);\n}\n\n#tagviewer-cpanel-notice a {\n\tfont-weight: bold;\n\ttext-decoration: underline;\n\tcursor: pointer;\n}\n","title":"TagViewer","description":"View post tags easily","developer":"new-xkit","version":"0.5.3","details":"This extension allows you to see what tags people added to a post while they reblogged it. It also provides access to the post, and to Tumblr search pages to find similar posts.

      Based on the work of inklesspen","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/tf2_reblogs.json b/Extensions/dist/tf2_reblogs.json new file mode 100644 index 000000000..b3f69ff50 --- /dev/null +++ b/Extensions/dist/tf2_reblogs.json @@ -0,0 +1 @@ +{"id":"tf2_reblogs","script":"//* TITLE Tumblr Fortress 2 **//\n//* VERSION 1.2.3 **//\n//* DESCRIPTION Replaces reblog icons with TF2 kill icons **//\n//* DEVELOPER circlejourney **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.tf2_reblogs = new Object({\n\n\trunning: false,\n\ticons: [\"https://78.media.tumblr.com/08983ee062302cbde916a2a076a7282a/tumblr_inline_p9ajmrVMwn1r0r06s_100.png\", \"https://78.media.tumblr.com/e2aaaaca5a95e93af2cb1197d7810858/tumblr_inline_p9ajmrVLTg1r0r06s_100.png\", \"https://78.media.tumblr.com/727341e2d160e12eb6f66f7e48e7f80e/tumblr_inline_p9ajmsNeEe1r0r06s_75sq.png\", \"https://78.media.tumblr.com/5cc30d86ccf38301a7ea0bf3cbfeead3/tumblr_inline_p9ajmsa2Lv1r0r06s_75sq.png\", \"https://78.media.tumblr.com/237a48fff26eb8cd04359905b449a06d/tumblr_inline_p9ajmt1guB1r0r06s_75sq.png\", \"https://78.media.tumblr.com/9e9eab0bff9456c812414332477e339d/tumblr_inline_p9ajmtaT0K1r0r06s_250.png\", \"https://78.media.tumblr.com/fcea924b25cef858112477c2055c731c/tumblr_inline_p9ajmu6W5K1r0r06s_100.png\", \"https://78.media.tumblr.com/d036dd8f4275daf433cd5de221ba71ea/tumblr_inline_p9ajmuQAV91r0r06s_100.png\", \"https://78.media.tumblr.com/1387ab384afb07631cc6cb5628f90760/tumblr_inline_p9ajmvAuhL1r0r06s_100.png\", \"https://78.media.tumblr.com/21fb35fcd1233f6effa3836570438033/tumblr_inline_p9ajmvkBqv1r0r06s_100.png\", \"https://78.media.tumblr.com/f5a0ae913a763078612e5df8d1aaa2e7/tumblr_inline_p9ajmwMU971r0r06s_75sq.png\", \"https://78.media.tumblr.com/9991e1ec07039bfe6a1b9a02bdbfa1a6/tumblr_inline_p9ajmwZyMX1r0r06s_250.png\", \"https://78.media.tumblr.com/c3fecc61e374663d8d1093e13dcd0ce7/tumblr_inline_p9ajmx29M11r0r06s_75sq.png\", \"https://78.media.tumblr.com/0411a817ef1d26fba707cc6ae2fe247f/tumblr_inline_p9ajmx9qXj1r0r06s_100.png\", \"https://78.media.tumblr.com/ac10051a80a8a4ac284cb21a3cd9b930/tumblr_inline_p9ajmxX7201r0r06s_75sq.png\", \"https://78.media.tumblr.com/21a9c2d85240c13e650d98feffc0cb05/tumblr_inline_p9ajmy27gh1r0r06s_75sq.png\", \"https://78.media.tumblr.com/1eb536d95b8fe807a8b85be06888eaba/tumblr_inline_p9ajmyKCj61r0r06s_100.png\", \"https://78.media.tumblr.com/01cf6ab45dda6ec7e91fbf1e4a88d50f/tumblr_inline_p9ajmzji4I1r0r06s_75sq.png\", \"https://78.media.tumblr.com/41fa7e686b05c2f11cc411b794e7d98f/tumblr_inline_p9ajmzzFYo1r0r06s_75sq.png\", \"https://78.media.tumblr.com/d0f4c752b142bbeb393da974a6d3bf5d/tumblr_inline_p9ajn0kUfy1r0r06s_100.png\", \"https://78.media.tumblr.com/edb435384ac1bf435cb2be31cb42d563/tumblr_inline_p9ajn0f6vV1r0r06s_100.png\", \"https://78.media.tumblr.com/c8872f6c50d38723fbe907205890a4af/tumblr_inline_p9ajn0VIh71r0r06s_75sq.png\", \"https://78.media.tumblr.com/5afcb335a583259b5e0042d76e285d20/tumblr_inline_p9ajn1oTBd1r0r06s_250.png\", \"https://78.media.tumblr.com/82cf7ba5448eddf32eb52c6b24476dff/tumblr_inline_p9ajn1o9841r0r06s_75sq.png\", \"https://78.media.tumblr.com/2d0a28e34feecaa722c9d76b2c884e84/tumblr_inline_p9ajn174iS1r0r06s_100.png\", \"https://78.media.tumblr.com/97339b4526388867120df77bce2f46b0/tumblr_inline_p9ajn2f9td1r0r06s_100.png\", \"https://78.media.tumblr.com/73d08f766241fca74d8927fe0d0cf6c5/tumblr_inline_p9ajn21bTg1r0r06s_75sq.png\", \"https://78.media.tumblr.com/18085a3b43e005dfeaa22a8f8a5cd64c/tumblr_inline_p9ajn3hF4x1r0r06s_75sq.png\", \"https://78.media.tumblr.com/0b63616b2baba024698172e9c7558032/tumblr_inline_p9ajn3HjJJ1r0r06s_250.png\", \"https://78.media.tumblr.com/f1cebd267c525df1d5cb41a0cbb9b804/tumblr_inline_p9ajn4o3ga1r0r06s_100.png\", \"https://78.media.tumblr.com/05f388ee5fd6c40dc851bf8389ba67f1/tumblr_inline_p9ajn6NHRS1r0r06s_75sq.png\", \"https://78.media.tumblr.com/21d20b536ec29cf7fe80eb21f556b4e4/tumblr_inline_p9ajn6QeZK1r0r06s_75sq.png\", \"https://78.media.tumblr.com/271df0a8e12d452f7c06439749ae66f2/tumblr_inline_p9ajn6jBKr1r0r06s_100.png\", \"https://78.media.tumblr.com/2d7992b84b55992017c1d99fc3a508ca/tumblr_inline_p9ajn77Ge61r0r06s_100.png\", \"https://78.media.tumblr.com/9056dce98aa9ac6f05be3e120dacaa38/tumblr_inline_p9ajn7UHxB1r0r06s_250.png\", \"https://78.media.tumblr.com/cb8e3cec81b8fc62dddafee97d8ce8ce/tumblr_inline_p9ajn8Sp5u1r0r06s_75sq.png\", \"https://78.media.tumblr.com/6f1966383dbf96b6240c8c20f84e1440/tumblr_inline_p9ajn8GF8X1r0r06s_100.png\", \"https://78.media.tumblr.com/4c56a1d5f7330e727d7036fb11c0c98d/tumblr_inline_p9ajn9FAE21r0r06s_100.png\", \"https://78.media.tumblr.com/90a2cb7a4ae1cb3a9164e2183a078e38/tumblr_inline_p9ajn9GDxb1r0r06s_100.png\", \"https://78.media.tumblr.com/aca139cd2a076204d85370aca78e5786/tumblr_inline_p9ajnaDYpF1r0r06s_75sq.png\", \"https://78.media.tumblr.com/10ee410c9a801b764ab3f92a1385348b/tumblr_inline_p9ajnajlVA1r0r06s_75sq.png\", \"https://78.media.tumblr.com/a24f428d886c158d8978f99bdbf541bc/tumblr_inline_p9ajnbo3ih1r0r06s_75sq.png\", \"https://78.media.tumblr.com/ebde993f66d007a0336f247a45177c9f/tumblr_inline_p9ajnbuWb31r0r06s_100.png\", \"https://78.media.tumblr.com/cd68d801cbe33d8476f8820d6767410f/tumblr_inline_p9ajnc5HWE1r0r06s_100.png\", \"https://78.media.tumblr.com/76b5afe2bb5546cce1cf271d22637a06/tumblr_inline_p9ajndVNmj1r0r06s_100.png\", \"https://78.media.tumblr.com/7f7eb40656e3b31ac6de66142d9c46df/tumblr_inline_p9ajndpGN21r0r06s_75sq.png\", \"https://78.media.tumblr.com/525f5ad0979a8df5e14ff50cf797a1fc/tumblr_inline_p9ajlj3V1z1r0r06s_75sq.png\", \"https://78.media.tumblr.com/d0579ab634cc7a0dce4cf45e9f34b546/tumblr_inline_p9ajlkMVw61r0r06s_75sq.png\", \"https://78.media.tumblr.com/974ec853b83fad39def0c8246896617c/tumblr_inline_p9ajlldLJg1r0r06s_75sq.png\", \"https://78.media.tumblr.com/d74a08bb672dceb2fb696a2b9893f52b/tumblr_inline_p9ajllKxf91r0r06s_75sq.png\", \"https://78.media.tumblr.com/4735f9158bfb77f607164bb6506a48c8/tumblr_inline_p9ajll5SCD1r0r06s_100.png\", \"https://78.media.tumblr.com/d243b915c6d14a09b25e674acaa037d9/tumblr_inline_p9ajlmWalV1r0r06s_100.png\", \"https://78.media.tumblr.com/a940bb4120194d0162689f80593991e7/tumblr_inline_p9ajlmlBF11r0r06s_100.png\", \"https://78.media.tumblr.com/38240b05c623bc841d5eac2eae1b1324/tumblr_inline_p9ajln6YZU1r0r06s_100.png\", \"https://78.media.tumblr.com/38d8d4e33f3d2415ee69fede7821dcd6/tumblr_inline_p9ajlnCkQe1r0r06s_100.png\", \"https://78.media.tumblr.com/3cb0de2dfad481753893da55dec7927d/tumblr_inline_p9ajlnaMym1r0r06s_100.png\", \"https://78.media.tumblr.com/86c23bd6b4b7c685c7389c91981fb6a8/tumblr_inline_p9ajloj3PY1r0r06s_250.png\", \"https://78.media.tumblr.com/1149e833b9304d19b4d22a3c0c8f81fa/tumblr_inline_p9ajlpspgL1r0r06s_75sq.png\", \"https://78.media.tumblr.com/fed74a6f561750cf45d4564fe7e12d35/tumblr_inline_p9ajlqRJIn1r0r06s_75sq.png\", \"https://78.media.tumblr.com/20b26287d97ada6dd3d9ffb0e16808f5/tumblr_inline_p9ajlqHt8U1r0r06s_100.png\", \"https://78.media.tumblr.com/20465b73b6fdb9ee180c34073d24ce4a/tumblr_inline_p9ajlrq8LB1r0r06s_75sq.png\", \"https://78.media.tumblr.com/b7066458d07d516787ab0ee3b1d56f54/tumblr_inline_p9ajlrDADY1r0r06s_75sq.png\", \"https://78.media.tumblr.com/98343c268c1dfc2a331038fe3da0b64e/tumblr_inline_p9ajlr0bXk1r0r06s_75sq.png\", \"https://78.media.tumblr.com/3cabd6905459a1c9a7585da4256d1e31/tumblr_inline_p9ajlshhTv1r0r06s_100.png\", \"https://78.media.tumblr.com/944a3b62f744df54da3fea0b8729111c/tumblr_inline_p9ajlsMLMD1r0r06s_100.png\", \"https://78.media.tumblr.com/904f6ba26259782e41d8ab17866e0a48/tumblr_inline_p9ajltkp9y1r0r06s_100.png\", \"https://78.media.tumblr.com/6aef67bd399e16ccd5f5f3a36312a590/tumblr_inline_p9ajltVZzc1r0r06s_100.png\", \"https://78.media.tumblr.com/87d07b0c262cc5b2487583dc6e8698c7/tumblr_inline_p9ajluAXtI1r0r06s_250.png\", \"https://78.media.tumblr.com/8730e3c10fd80484ef4c40e1e94d2bd3/tumblr_inline_p9ajlusbOX1r0r06s_100.png\", \"https://78.media.tumblr.com/889651cd749df6f414a67772888d5896/tumblr_inline_p9ajlvpqNF1r0r06s_75sq.png\", \"https://78.media.tumblr.com/02f6f49836da236134aec14a417feaee/tumblr_inline_p9ajlvPgxg1r0r06s_250.png\", \"https://78.media.tumblr.com/0142fac4e22dbd3cfcf61a22982996a1/tumblr_inline_p9ajlvBuvr1r0r06s_100.png\", \"https://78.media.tumblr.com/aca21697fde821a8b9b694ae83222313/tumblr_inline_p9ajlwsVf61r0r06s_250.png\", \"https://78.media.tumblr.com/83d8c8cf8620eda0a5c51ee68cce1ffd/tumblr_inline_p9ajlxIvjX1r0r06s_75sq.png\", \"https://78.media.tumblr.com/fe9a5e7a8e017cd0ab4743d669054670/tumblr_inline_p9ajlxHNc91r0r06s_250.png\", \"https://78.media.tumblr.com/b989e00c945bf868fc7d104f0857e5f0/tumblr_inline_p9ajlyh8Sv1r0r06s_250.png\", \"https://78.media.tumblr.com/1e054b366aa17b91afd41507fba56cb4/tumblr_inline_p9ajlzoghs1r0r06s_100.png\", \"https://78.media.tumblr.com/f8736dfd30b105c0d08a51eb93a68e47/tumblr_inline_p9ajlzevBC1r0r06s_75sq.png\", \"https://78.media.tumblr.com/7557809d6c8f0bee6313ab6949920c82/tumblr_inline_p9ajm0g3k91r0r06s_100.png\", \"https://78.media.tumblr.com/78bde09ed3e4fe493f4117565017846a/tumblr_inline_p9ajm0Gl8Q1r0r06s_100.png\", \"https://78.media.tumblr.com/a9700f0c78edd13c28a15ea2d262483f/tumblr_inline_p9ajm0SkGJ1r0r06s_75sq.png\", \"https://78.media.tumblr.com/e9bdf440a90acd5509ff2a40d4b60647/tumblr_inline_p9ajm10fR21r0r06s_250.png\", \"https://78.media.tumblr.com/527e8b76feaa994227c0353a419fb18a/tumblr_inline_p9ajm1RTlR1r0r06s_100.png\", \"https://78.media.tumblr.com/37c0f69d105e2ba4e37bc6440b369578/tumblr_inline_p9ajm2EpTS1r0r06s_100.png\", \"https://78.media.tumblr.com/e29d68c21c8e9fe3cf41870ab8c88244/tumblr_inline_p9ajm2E1we1r0r06s_250.png\", \"https://78.media.tumblr.com/377ec486049d473981ccf61ef86c86fd/tumblr_inline_p9ajm3X2fV1r0r06s_100.png\", \"https://78.media.tumblr.com/9012213aeb5ea3c6ee7c964cc43bae1c/tumblr_inline_p9ajm3Z3rQ1r0r06s_75sq.png\", \"https://78.media.tumblr.com/3dc964f4b8daa586cb7011f1e7fa590f/tumblr_inline_p9ajm4KlUb1r0r06s_250.png\", \"https://78.media.tumblr.com/b3d0ff0bb5681214c720333e51157981/tumblr_inline_p9ajm4sCww1r0r06s_100.png\", \"https://78.media.tumblr.com/44283ba31d8312ba32eae2b2c859b26c/tumblr_inline_p9ajm4f7si1r0r06s_100.png\", \"https://78.media.tumblr.com/b57694c8669ec0aff8bd1ca6033d6b3c/tumblr_inline_p9ajm5f2LH1r0r06s_75sq.png\", \"https://78.media.tumblr.com/a347df0fe246888d0f840549bbd3981d/tumblr_inline_p9ajm5X5hX1r0r06s_75sq.png\", \"https://78.media.tumblr.com/40ab51eac400a2538af33b7f0c6ff497/tumblr_inline_p9ajm6zo731r0r06s_75sq.png\", \"https://78.media.tumblr.com/9db2c5a301e14680e253689b02e4089c/tumblr_inline_p9ajm7Rzyq1r0r06s_100.png\", \"https://78.media.tumblr.com/f5fbf92ba940b7b3e4bab16001c6b7e2/tumblr_inline_p9ajm7XIzw1r0r06s_100.png\", \"https://78.media.tumblr.com/5a2e1ef4142ef881721a5bfe3f724688/tumblr_inline_p9ajm9t5dU1r0r06s_75sq.png\", \"https://78.media.tumblr.com/924641caa6036c12ea82bd5bad1f70d5/tumblr_inline_p9ajl3FPFa1r0r06s_75sq.png\", \"https://78.media.tumblr.com/a6c5a3528bd215d87864ada888ac5fbc/tumblr_inline_p9ajl3akke1r0r06s_75sq.png\", \"https://78.media.tumblr.com/0a35a9f77d3723b5de6f92e7199cb231/tumblr_inline_p9ajl52ovt1r0r06s_100.png\", \"https://78.media.tumblr.com/3bdec0ce2af4b5c1e1847a42da9e970f/tumblr_inline_p9ajl5OXuv1r0r06s_75sq.png\", \"https://78.media.tumblr.com/fbc140cbfd29e598203b2ae3e3e12567/tumblr_inline_p9ajl5w0VL1r0r06s_100.png\", \"https://78.media.tumblr.com/529a6a5bcd5faa066690bb7963e4bdab/tumblr_inline_p9ajl6eKki1r0r06s_100.png\", \"https://78.media.tumblr.com/e296ada9c2c875429304384547119f43/tumblr_inline_p9ajl6Kj2d1r0r06s_100.png\", \"https://78.media.tumblr.com/b9cea98c72a64441170aacfbf7f65afe/tumblr_inline_p9ajl7b3Um1r0r06s_100.png\", \"https://78.media.tumblr.com/e225de597f2b4adb58d9f1311d973a2d/tumblr_inline_p9ajl7hhtM1r0r06s_100.png\", \"https://78.media.tumblr.com/5f2d5e9a39ec83aceb21e118701fa452/tumblr_inline_p9ajl7Djt71r0r06s_75sq.png\", \"https://78.media.tumblr.com/7d0ef6aecb31eb4337bdbcfb0303c2d5/tumblr_inline_p9ajl8fKoG1r0r06s_100.png\", \"https://78.media.tumblr.com/30c101a90ac034cbe0b855ea58071a3e/tumblr_inline_p9ajl84Y0D1r0r06s_100.png\", \"https://78.media.tumblr.com/8c4b9c8943e5c870bf9fc3947bd4c429/tumblr_inline_p9ajl8RXXp1r0r06s_75sq.png\", \"https://78.media.tumblr.com/022296fc9feca1215f751f73ad69d0c0/tumblr_inline_p9ajl9ppkU1r0r06s_75sq.png\", \"https://78.media.tumblr.com/db29cc7cd0ff24e30636db0e5bbdc91a/tumblr_inline_p9ajl9HHhU1r0r06s_250.png\", \"https://78.media.tumblr.com/6e20c75093691c79dd22c51f9369ecfb/tumblr_inline_p9ajla0yKJ1r0r06s_75sq.png\", \"https://78.media.tumblr.com/d1af0c9734a80e89bf814a2fbc364918/tumblr_inline_p9ajlbwPLH1r0r06s_100.png\", \"https://78.media.tumblr.com/c3a82e437e03b52a5af42afbb58f250c/tumblr_inline_p9ajlc5agH1r0r06s_100.png\", \"https://78.media.tumblr.com/6bb85f6cc09de43df40f063b74f9242b/tumblr_inline_p9ajlchEfq1r0r06s_75sq.png\", \"https://78.media.tumblr.com/b4b6c1104ec0be61a9de7646d3d871e9/tumblr_inline_p9ajlchrXT1r0r06s_75sq.png\", \"https://78.media.tumblr.com/c2df887fbe272175c821c667d60bed29/tumblr_inline_p9ajldLVNx1r0r06s_250.png\", \"https://78.media.tumblr.com/b7066f90610d48b65b5cedbe90c21cfa/tumblr_inline_p9ajldP8xY1r0r06s_75sq.png\", \"https://78.media.tumblr.com/465f0e004dce06211ae030afe4d4c0a8/tumblr_inline_p9ajleUVkr1r0r06s_100.png\", \"https://78.media.tumblr.com/e51c680711087e593f6929bcd5cba762/tumblr_inline_p9ajlfjncc1r0r06s_75sq.png\", \"https://78.media.tumblr.com/803c65a947ac11d0ab2d37a2674531e2/tumblr_inline_p9ajlfguzb1r0r06s_100.png\", \"https://78.media.tumblr.com/3eda6ab30a6f1fafbf250c027214f333/tumblr_inline_p9ajlgrwwI1r0r06s_250.png\", \"https://78.media.tumblr.com/e51c6b800efc527b1836f24f33a5a363/tumblr_inline_p9ajlgYCrq1r0r06s_100.png\", \"https://78.media.tumblr.com/1e2c40190cb8d0bb106c9bc39add44d5/tumblr_inline_p9ajlhbSFI1r0r06s_75sq.png\", \"https://78.media.tumblr.com/ab3eaae69e5a0e4a28b9af74d6ebd8db/tumblr_inline_p9ajlhXD8T1r0r06s_75sq.png\", \"https://78.media.tumblr.com/011c6b95b28c7d8d086ded971d86cc81/tumblr_inline_p9ajlhLzhL1r0r06s_100.png\", \"https://78.media.tumblr.com/49083c2bb72b91427293ec91316dbaef/tumblr_inline_p9ajliMid71r0r06s_100.png\", \"https://78.media.tumblr.com/e5f613b0de5c3e8dcbe701b14ca9fe8c/tumblr_inline_p9ajli3W1T1r0r06s_100.png\", \"https://78.media.tumblr.com/ef8f63a8542d9790be49b9f0e893395e/tumblr_inline_p9ajljpv2z1r0r06s_75sq.png\", \"https://78.media.tumblr.com/0d43dffe2ea12ca3d5238abf9632dee7/tumblr_inline_p9ajljIBix1r0r06s_100.png\", \"https://78.media.tumblr.com/822fd3450ae273cf449ee2619faf8cf5/tumblr_inline_p9ajljk6Dc1r0r06s_100.png\", \"https://78.media.tumblr.com/a4e0dc4f93532fe141981bdcb88415f3/tumblr_inline_p9ajlkJl9v1r0r06s_75sq.png\", \"https://78.media.tumblr.com/943893f0b37d79ccee00e5d202b7be00/tumblr_inline_p9ajlku5qc1r0r06s_250.png\", \"https://78.media.tumblr.com/0ffe3a004058c2bda5bc5adf7067e3a0/tumblr_inline_p9ajllmYSU1r0r06s_100.png\", \"https://78.media.tumblr.com/19f54044a284cbe8d43dc80e3495febb/tumblr_inline_p9ajllEY7M1r0r06s_75sq.png\", \"https://78.media.tumblr.com/f3db2be78d9bf6fc0717d73bdc4fddc7/tumblr_inline_p9ajllX8Fy1r0r06s_250.png\", \"https://78.media.tumblr.com/c7cd4eb6ffdfd739821aff87c6ce1941/tumblr_inline_p9ajlm3Pyp1r0r06s_250.png\", \"https://78.media.tumblr.com/9519bc63745244b50fec5a6389f1e4ab/tumblr_inline_p9ajlmTM3k1r0r06s_250.png\", \"https://78.media.tumblr.com/0eedc45cf50d076e7a79f2b54d358939/tumblr_inline_p9ajlnnpOh1r0r06s_75sq.png\", \"https://78.media.tumblr.com/dc3c8bbaf773aba5886a5074b67904d6/tumblr_inline_p9ajlohPrK1r0r06s_100.png\", \"https://78.media.tumblr.com/5088176ba66d4552c21d35715b5a3c8a/tumblr_inline_p9ajlowrnw1r0r06s_100.png\", \"https://78.media.tumblr.com/8f042fb3f4e20503c5c5099d7c8ed4bc/tumblr_inline_p9ajlp2SKL1r0r06s_75sq.png\", \"https://78.media.tumblr.com/462e5ee110e1aa00f584881d7b840805/tumblr_inline_p9ajlpIeAP1r0r06s_250.png\", \"https://78.media.tumblr.com/bce5152c08eaba6b4152dd8edfc777d4/tumblr_inline_p9ajlpvDGA1r0r06s_250.png\", \"https://78.media.tumblr.com/f041ef81ae585f9955b5458b3cee8aae/tumblr_inline_p9ajlqA8N41r0r06s_250.png\", \"https://78.media.tumblr.com/02c080075f7c74e0e561323dbc472e5a/tumblr_inline_p9ajlqp2a31r0r06s_250.png\", \"https://78.media.tumblr.com/955bbab5620d74b1cd50192e4e684c4c/tumblr_inline_p9aji6V7iC1r0r06s_75sq.png\", \"https://78.media.tumblr.com/1813f39ea65c46c02fd7bc9c721bb082/tumblr_inline_p9aji6zG521r0r06s_75sq.png\", \"https://78.media.tumblr.com/9fb4c8acd1d809eeeb61901c888a02e1/tumblr_inline_p9aji8Z5yh1r0r06s_75sq.png\", \"https://78.media.tumblr.com/e471b3cf3007fbba2b501beea13afdbd/tumblr_inline_p9aji8N5l41r0r06s_75sq.png\", \"https://78.media.tumblr.com/e7104ccdbd2aebdbf406a9ebb3b88da4/tumblr_inline_p9aji8wAAV1r0r06s_100.png\", \"https://78.media.tumblr.com/e13810c146bd48748b667623bd8cb69a/tumblr_inline_p9ajiaTJaD1r0r06s_250.png\", \"https://78.media.tumblr.com/cc719ec9cbe0aa0caf5d559a69a0acb7/tumblr_inline_p9ajiaphix1r0r06s_100.png\", \"https://78.media.tumblr.com/e5064c2d2d1363660967e7453e822d13/tumblr_inline_p9ajiaJ3zV1r0r06s_75sq.png\", \"https://78.media.tumblr.com/5e01641c525e48721fbad2d232ca24bf/tumblr_inline_p9ajibAT7r1r0r06s_75sq.png\", \"https://78.media.tumblr.com/db3416c606f3de2cb85e9e09a696142d/tumblr_inline_p9ajicgEwb1r0r06s_250.png\", \"https://78.media.tumblr.com/95a12a512e5807fc2e0e1a712519923e/tumblr_inline_p9ajico6dj1r0r06s_75sq.png\", \"https://78.media.tumblr.com/faf8ab99643d778e420722c326eddc25/tumblr_inline_p9ajidFszO1r0r06s_75sq.png\", \"https://78.media.tumblr.com/8ec47230408ea2e33f5621e611bb32d3/tumblr_inline_p9ajifIAXG1r0r06s_75sq.png\", \"https://78.media.tumblr.com/5e85e81160402aa024c1cc322f6d7b8d/tumblr_inline_p9ajifZrsT1r0r06s_250.png\", \"https://78.media.tumblr.com/669c848271b67f663800a9b337d90f3e/tumblr_inline_p9ajig20Uj1r0r06s_100.png\", \"https://78.media.tumblr.com/3089d9bf3e99c4c9d0997ffd0aa90e3d/tumblr_inline_p9ajiheIS21r0r06s_100.png\", \"https://78.media.tumblr.com/256cc4fafcb43e71007c82423dba1885/tumblr_inline_p9ajih4LrY1r0r06s_75sq.png\", \"https://78.media.tumblr.com/3ad45f8a6727a79d6c0864ce4efdc058/tumblr_inline_p9ajiieyB91r0r06s_250.png\", \"https://78.media.tumblr.com/50e48bb39f2e8dcafe282a95e0baf255/tumblr_inline_p9ajiiDh1R1r0r06s_100.png\", \"https://78.media.tumblr.com/0e47035310f2f722d3e5a11661eac931/tumblr_inline_p9ajijDKbR1r0r06s_75sq.png\", \"https://78.media.tumblr.com/19727c20f8db5a378516b333fb6f7b8f/tumblr_inline_p9ajijdMP11r0r06s_75sq.png\", \"https://78.media.tumblr.com/3f24bac416c337c14733939466ddb828/tumblr_inline_p9ajijMEfM1r0r06s_75sq.png\", \"https://78.media.tumblr.com/b561248dbda35170408e4ddc60945ec5/tumblr_inline_p9ajikgqG51r0r06s_100.png\", \"https://78.media.tumblr.com/aeba1552786b43bcdb590715daa0337e/tumblr_inline_p9ajikxdZh1r0r06s_100.png\", \"https://78.media.tumblr.com/4eec82e3b351682c481ab0e464829e27/tumblr_inline_p9ajil4Kon1r0r06s_100.png\", \"https://78.media.tumblr.com/400d3b5d0e1ee61ae448534c9a777809/tumblr_inline_p9ajilmE401r0r06s_100.png\", \"https://78.media.tumblr.com/9c52cb89bbfbb229daed7c01a1c53159/tumblr_inline_p9ajimCdU91r0r06s_100.png\", \"https://78.media.tumblr.com/d2f70f5bfc5858f5166100e329c5659a/tumblr_inline_p9ajinjsEv1r0r06s_250.png\", \"https://78.media.tumblr.com/5fe7fe03692119a8eb3d901cb84d56d9/tumblr_inline_p9ajioQrWk1r0r06s_250.png\", \"https://78.media.tumblr.com/f6531430f8672f61b198e33ac734f58d/tumblr_inline_p9ajioqDfb1r0r06s_100.png\", \"https://78.media.tumblr.com/bb0533de7aad2a0d8951fdc5d83abd02/tumblr_inline_p9ajioZViI1r0r06s_100.png\", \"https://78.media.tumblr.com/0d5d20909951f07810333b5397bcd79b/tumblr_inline_p9ajipz2nG1r0r06s_75sq.png\", \"https://78.media.tumblr.com/0e5159e867a024df0175658039121b5b/tumblr_inline_p9ajipVrSl1r0r06s_100.png\", \"https://78.media.tumblr.com/e0c5e952a533493c1671cc609b247405/tumblr_inline_p9ajiqZtsh1r0r06s_75sq.png\", \"https://78.media.tumblr.com/443beca44c966d00ccac5ecbb4a5b4aa/tumblr_inline_p9ajiqAtAx1r0r06s_75sq.png\", \"https://78.media.tumblr.com/44be0dd0e768cc90e1c6c4b1f797c73c/tumblr_inline_p9ajirtMG51r0r06s_100.png\", \"https://78.media.tumblr.com/23da749daa7124b05c6dc2c9da298a75/tumblr_inline_p9ajirrTfm1r0r06s_75sq.png\", \"https://78.media.tumblr.com/f78b6385c2f922d128a15be15665fea0/tumblr_inline_p9ajirggBN1r0r06s_250.png\", \"https://78.media.tumblr.com/8ac64bdc4201c7ca04cf6191511fa96e/tumblr_inline_p9ajis08WF1r0r06s_100.png\", \"https://78.media.tumblr.com/b9c2c35e9e33c2236e4704278111cf6f/tumblr_inline_p9ajitVWsj1r0r06s_250.png\", \"https://78.media.tumblr.com/60d13eaa1f6f5081291722549dd20445/tumblr_inline_p9ajitPIHq1r0r06s_100.png\", \"https://78.media.tumblr.com/992c0f232622db8f2547e723e327053d/tumblr_inline_p9ajiu7WIK1r0r06s_100.png\", \"https://78.media.tumblr.com/3898fb7f7d40192c859aae080e929fb0/tumblr_inline_p9ajiv76ZE1r0r06s_100.png\", \"https://78.media.tumblr.com/f7d5334b6cdd7889fe1be5436c3d62ac/tumblr_inline_p9ajivSno41r0r06s_100.png\", \"https://78.media.tumblr.com/0d20626747638ee03f2e1cf3fff3dd69/tumblr_inline_p9ajiwFe7Z1r0r06s_75sq.png\", \"https://78.media.tumblr.com/b79ecf4fd8c8d21547b37b9e0bc6b7ae/tumblr_inline_p9ajiwIyBP1r0r06s_100.png\", \"https://78.media.tumblr.com/e0585648c1e79c3f1c09166d32f40802/tumblr_inline_p9ajix6kOz1r0r06s_75sq.png\", \"https://78.media.tumblr.com/5a0ed39b8a75df13d6a8e1951400e5b3/tumblr_inline_p9ajix40uk1r0r06s_100.png\"],\n\n\tpreferences: {\n\t\trandom_crits: {\n\t\t\ttext: \"Enable crits (requires Mutual Checker)\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t}\n\t},\n\n\trun: async function() {\n\t\tthis.running = true;\n\t\tif (this.preferences.random_crits.value) {\n\t\t\tXKit.tools.add_css(`\n\t\t\t\t.mutuals + .reblog_source .tf2_icon,\n\t\t\t\t.mutuals + .tf2_icon,\n\t\t\t\t.from_mutual .tf2_icon {\n\t\t\t\t\tbackground: transparent url(\"https://78.media.tumblr.com/becd0641fa16830002d33282e29cdd3a/tumblr_inline_p9ajigzKbk1r0r06s_75sq.png\") 0 0/100% 100% no-repeat;\n\t\t\t\t}`,\n\t\t\t\t\"tf2_reblogs\"\n\t\t\t);\n\t\t}\n\t\tif (XKit.page.react) {\n\t\t\tawait XKit.css_map.getCssMap();\n\t\t\tthis.selector = this.modifiedSelector(\"rebloggedFromName\", \":not(.tf2_done)\");\n\n\t\t\tXKit.tools.add_css(`\n\t\t\t\t.tf2_icon {\n\t\t\t\t\tvertical-align: top;\n\t\t\t\t\tmargin: 0 5px;\n\t\t\t\t\tmax-height: 20px;\n\t\t\t\t}\n\t\t\t\t.tf2_icon ~ svg {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t`, \"tf2_reblogs\");\n\n\t\t\tXKit.post_listener.add(\"tf2_reblogs\", this.react_change_icon);\n\t\t\tthis.react_change_icon();\n\t\t\treturn;\n\t\t}\n\t\tXKit.tools.add_css(`\n\t\t\t.tf2_icon {\n\t\t\t\tvertical-align: top;\n\t\t\t\tmargin: 0 5px;\n\t\t\t\tmax-height: 20px;\n\t\t\t}\n\t\t\t.tf2_icon ~ svg {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t`, \"tf2_reblogs\");\n\n\t\tXKit.post_listener.add(\"tf2_reblogs\", this.change_icon);\n\t\tthis.change_icon();\n\t},\n\n\tselector: \"\",\n\n\tmodifiedSelector: (key, modification) =>\n\t\tXKit.css_map.keyToClasses(key).map(cls => `.${cls}${modification}`).join(),\n\n\treact_change_icon: function() {\n\t\tconst {selector, icons} = XKit.extensions.tf2_reblogs;\n\t\t$(selector).each(function() {\n\t\t\t$(this).addClass(\"tf2_done\");\n\t\t\tvar iconurl = icons[$(this).closest(\"[data-id]\").attr(\"data-id\") % icons.length];\n\t\t\tif (iconurl) {\n\t\t\t\t$(this).parent().find(\"svg\").before(``);\n\t\t\t}\n\t\t});\n\t},\n\n\tchange_icon: function() {\n\t\tconst {icons} = XKit.extensions.tf2_reblogs;\n\t\t$(\".reblog_icon\").each(function() {\n\t\t\tvar iconurl = icons[$(this).parents(\"div.post\").attr(\"data-post-id\") % icons.length];\n\t\t\tif (iconurl) {\n\t\t\t\t$(this).replaceWith(``);\n\t\t\t}\n\t\t});\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tif (XKit.page.react) {\n\t\t\t$(\".tf2_icon\").remove();\n\t\t\t$(\".tf2_done\").removeClass(\"tf2_done\");\n\n\t\t} else {\n\t\t\t$(\".tf2_icon\").replaceWith('reblogged');\n\t\t}\n\t\tXKit.post_listener.remove(\"tf2_reblogs\");\n\t\tXKit.tools.remove_css(\"tf2_reblogs\");\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","title":"Tumblr Fortress 2","description":"Replaces reblog icons with TF2 kill icons","developer":"circlejourney","version":"1.2.3","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/theme_editor.json b/Extensions/dist/theme_editor.json new file mode 100644 index 000000000..1780571cb --- /dev/null +++ b/Extensions/dist/theme_editor.json @@ -0,0 +1 @@ +{"id":"theme_editor","script":"//* TITLE Theme Editor **//\n//* VERSION 0.1.7 **//\n//* DESCRIPTION For theme developers **//\n//* DETAILS If you are good with CSS, hop in and make your own theme.

      When installed, this extension disables the standard Themes extension, and adds a button on your sidebar on your dashboard that lets you write and load your own theme. When you are done, you can submit it to xkit-dev.tumblr.com so it can be added to the theme gallery.

      This extension is not recommended for people without CSS/HTML experience and only provided for XKit theme developers. Please disable Themes and Yoohoo! extensions before using. For better editing, Textarea Code Formatter for Chrome or Tabinta for Firefox is recommended. **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.theme_editor = new Object({\n\n\trunning: false,\n\ttesting_theme: \"/*\\nTheme title\\nTheme description (one-line)\\nSTUDIOXENIX\\n1\\n*/\\n\\nbody {\\n\\tbackground: red;\\n}\\n\\n#content {\\n\\tbackground: rgba(155,90,120,0.9);\\n}\\n\\n.post {\\n\\tbackground: blue;\\n\\tborder-radius: 20px;\\n}\\n\\n.post_content{\\n\\tbackground: transparent !important;\\n}\\n\\n#right_column:after {\\n\\tbackground: none !important;\\n}\\n\\n.controls_section li {\\n\\tbackground: green;\\n}\",\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (!XKit.interface.is_tumblr_page()) {\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.tools.init_css(\"theme_editor\");\n\n\t\tif (typeof XKit.extensions.themes !== \"undefined\") {\n\t\t\tif (XKit.extensions.themes.running === true) {\n\t\t\t\tXKit.extensions.themes.destroy();\n\t\t\t}\n\t\t}\n\n\t\tif (typeof XKit.extensions.yahoo !== \"undefined\") {\n\t\t\tif (XKit.extensions.yahoo.running === true) {\n\t\t\t\tXKit.extensions.yahoo.destroy();\n\t\t\t}\n\t\t}\n\n\t\tXKit.interface.sidebar.add({\n\t\t\tid: \"xkit-theme-editor-sidebar\",\n\t\t\ttitle: \"Theme Editor\",\n\t\t\titems: [{\n\t\t\t\tid: \"xkit-theme-editor-button\",\n\t\t\t\ttext: \"Edit Theme\"\n\t\t\t}]\n\t\t});\n\n\t\t$(\"#xkit-theme-editor-button\").click(function() {\n\n\t\t\tXKit.extensions.theme_editor.open();\n\n\t\t\treturn false;\n\t\t});\n\n\t\tthis.load_user_theme();\n\n\t},\n\n\tload_user_theme: function(passed_theme) {\n\n\t\t// Just in case.\n\t\t$(\"#xkit-themes-user-theme\").remove();\n\t\t$(\"#xkit-theme-editor-user-theme\").remove();\n\n\t\tvar m_theme = XKit.storage.get(\"theme_editor\", \"my_theme\", XKit.extensions.theme_editor.testing_theme);\n\n\t\tif (typeof passed_theme !== \"undefined\") {\n\t\t\tm_theme = passed_theme;\n\t\t}\n\n\t\t$(\"body\").append(\"\");\n\n\t},\n\n\topen: function() {\n\n\t\tif ($(\"#xkit-theme-editor-shadow\").length > 0) {\n\t\t\t$(\"#xkit-theme-editor-shadow\").remove();\n\t\t\t$(\"#xkit-theme-editor-window\").remove();\n\t\t}\n\n\t\tvar m_theme = XKit.storage.get(\"theme_editor\", \"my_theme\", XKit.extensions.theme_editor.testing_theme);\n\n\t\tvar m_html = \"
       
      \" +\n\t\t\t\t\"
      \" +\n\t\t\t\t\t\"\" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      Apply Changes
      \" +\n\t\t\t\t\t\t\"
      Save theme
      \" +\n\t\t\t\t\t\t\"
      Delete theme
      \" +\n\t\t\t\t\t\t\"
      Close window
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\"
      \";\n\n\t\t$(\"body\").append(m_html);\n\n\t\t$(\"#xkit-theme-editor-textarea\").bind(\"keydown\", function(event) {\n\t\t\tif (event.which === 190) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t});\n\n\t\t$(\"#xkit-theme-editor-close, #xkit-theme-editor-shadow\").click(function() {\n\t\t\tXKit.extensions.theme_editor.close();\n\t\t});\n\n\t\t$(\"#xkit-theme-editor-apply\").click(function() {\n\t\t\tXKit.extensions.theme_editor.load_user_theme($(\"#xkit-theme-editor-textarea\").val());\n\t\t});\n\n\t\t$(\"#xkit-theme-editor-save\").click(function() {\n\t\t\tXKit.storage.set(\"theme_editor\", \"my_theme\", $(\"#xkit-theme-editor-textarea\").val());\n\t\t\tXKit.extensions.theme_editor.load_user_theme();\n\t\t\tXKit.extensions.theme_editor.close();\n\t\t});\n\n\t\t$(\"#xkit-theme-editor-delete\").click(function() {\n\t\t\tXKit.window.show(\"Delete theme?\", \"You can not undo this action.\", \"question\", \"
      Yes, delete my theme.
      Cancel
      \");\n\t\t\t$(\"#xkit-theme-editor-delete-confirm\").click(function() {\n\t\t\t\tXKit.storage.set(\"theme_editor\", \"my_theme\", \"\");\n\t\t\t\tXKit.extensions.theme_editor.load_user_theme();\n\t\t\t\tXKit.extensions.theme_editor.close();\n\t\t\t\tXKit.window.close();\n\t\t\t});\n\t\t});\n\n\t},\n\n\tclose: function() {\n\n\t\t$(\"#xkit-theme-editor-shadow\").fadeOut('slow');\n\t\t$(\"#xkit-theme-editor-window\").fadeOut('fast');\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.interface.sidebar.remove(\"xkit-theme-editor-sidebar\");\n\t\t$(\"#xkit-theme-editor-user-theme\").remove();\n\t\tXKit.tools.remove_css(\"theme_editor\");\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTZFNTg0RjlEMjgyMTFFMkJCOTdBNTcwNEE2QzQ3MTgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTZFNTg0RkFEMjgyMTFFMkJCOTdBNTcwNEE2QzQ3MTgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1NkU1ODRGN0QyODIxMUUyQkI5N0E1NzA0QTZDNDcxOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NkU1ODRGOEQyODIxMUUyQkI5N0E1NzA0QTZDNDcxOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pt/I/oMAAAamSURBVHjatFZJbBtV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","css":"#xkit-theme-editor-shadow {\n\tz-index: 600000;\n\tposition: fixed;\n\ttop: 0; left: 0;\n\twidth: 100%; height: 100%;\n\tbackground: rgba(0,0,0,0.0);\n\tdisplay: none;\n}\n\n#xkit-theme-editor-window {\n\tz-index: 600001;\n\tposition: fixed;\n\ttop: 50%; left: 50%;\n\twidth: 800px; height: 440px;\n\tmargin-top: -220px; margin-left: -400px;\n\tbackground: white;\n\tbox-shadow: 0px 1px 3px rgba(0,0,0,0.55);\n\tborder-radius: 6px;\n\topacity: 0.35;\n}\n\n#xkit-theme-editor-window:hover {\n\topacity: 1;\n}\n\n#xkit-theme-editor-buttons {\n\tposition: absolute;\n\tbottom: 0px; left: 0;\n\twidth: 100%; height: 40px;\n\tbox-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\tbackground: rgb(240,240,240);\n\tpadding-left: 8px; padding-top: 2px;\n\tborder-radius: 0px 0px 5px 5px;\n}\n\n#xkit-theme-editor-textarea {\n\tfont-family: Courier, monospace;\n\tbox-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\tborder: 1px solid rgb(200,200,200);\n\tborder-radius: 5px 5px 0px 0px;\n\tpadding: 10px;\n\twidth: 100%;\n\theight: 400px;\n\tresize: none;\n}","title":"Theme Editor","description":"For theme developers","developer":"STUDIOXENIX","version":"0.1.7","details":"If you are good with CSS, hop in and make your own theme.

      When installed, this extension disables the standard Themes extension, and adds a button on your sidebar on your dashboard that lets you write and load your own theme. When you are done, you can submit it to xkit-dev.tumblr.com so it can be added to the theme gallery.

      This extension is not recommended for people without CSS/HTML experience and only provided for XKit theme developers. Please disable Themes and Yoohoo! extensions before using. For better editing, Textarea Code Formatter for Chrome or Tabinta for Firefox is recommended.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/themes.json b/Extensions/dist/themes.json new file mode 100644 index 000000000..321495f8d --- /dev/null +++ b/Extensions/dist/themes.json @@ -0,0 +1 @@ +{"id":"themes","script":"//* TITLE Themes **//\n//* VERSION 0.1.3 **//\n//* DESCRIPTION Themes for your dashboard **//\n//* DETAILS This extension allows you to install themes from the XKit Theme Gallery onto your dashboard. New themes are added regularly, and if you are good with CSS, send an ask to xkit-dev.tumblr.com to get your theme added here! **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.themes = new Object({\n\n\trunning: false,\n\tcurrent_theme: \"\",\n\tgallery_themes_file: [],\n\tgallery_themes_contents: [],\n\tgallery_themes_version: [],\n\tm_theme_count: 0,\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (!XKit.interface.is_tumblr_page()) {\n\t\t\treturn;\n\t\t}\n\n\n\t\tthis.current_theme = XKit.storage.get(\"themes\", \"my_theme\", \"\");\n\t\tif (typeof this.current_theme === \"undefined\") {\n\t\t\tthis.current_theme = \"\";\n\t\t}\n\n\t\tXKit.tools.init_css(\"themes\");\n\n\t\tif (this.current_theme !== \"\") {\n\t\t\tif (typeof XKit.extensions.yahoo !== \"undefined\") {\n\t\t\t\tif (XKit.extensions.yahoo.running) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.load_theme();\n\t\t}\n\n\n\t},\n\n\tcpanel_add: function(obj) {\n\n\t\tvar m_class = \"\";\n\t\tif (obj.file === XKit.extensions.themes.current_theme) {\n\t\t\tm_class = \"selected\";\n\t\t}\n\n\t\tXKit.extensions.themes.gallery_themes_file.push(obj.file);\n\t\tXKit.extensions.themes.gallery_themes_contents.push(obj.contents);\n\t\tXKit.extensions.themes.gallery_themes_version.push(obj.version);\n\n\t\tvar m_html = \"
      \" +\n\t\t\t\t\t\"
      \" + obj.name + \"
      \" +\n\t\t\t\t\t\"
      \" + obj.description + \"
      \" +\n\t\t\t\t\t\"
      by \" + obj.developer + \"
      \" +\n\t\t\t\t\"
      \";\n\t\t$(\"#xkit-themes-theme-list\").append(m_html);\n\t\tXKit.extensions.themes.m_theme_count++;\n\n\t},\n\n\treplace_all: function(string, find, replace) {\n\n\t\tfind = find.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, \"\\\\$1\");\n\t\treturn string.replace(new RegExp(find, 'g'), replace);\n\n\t},\n\n\tload_theme: function() {\n\n\t\t$(\"#xkit-themes-user-theme\").remove();\n\t\tvar m_file_contents = XKit.storage.get(\"themes\", \"my_theme_contents\", \"\");\n\n\t\tm_file_contents = XKit.extensions.themes.replace_all(m_file_contents, \"#content\", \".l-content\");\n\t\tm_file_contents = XKit.extensions.themes.replace_all(m_file_contents, \"#header\", \".l-header\");\n\n\t\t$(\"body\").append(\"\");\n\n\t},\n\n\tload_gallery_theme: function(theme_name) {\n\n\t\t// Unload the previous theme if loaded.\n\t\t$(\"#xkit-themes-user-theme\").remove();\n\n\t\tXKit.storage.set(\"themes\", \"my_theme\", theme_name);\n\n\t\t// Stop if default theme.\n\t\tif (theme_name === \"\") { return; }\n\n\t\tvar m_index = XKit.extensions.themes.gallery_themes_file.indexOf(theme_name);\n\t\tif (m_index === -1) {\n\t\t\tXKit.storage.set(\"themes\", \"my_theme\", \"\");\n\t\t\tXKit.window.show(\"Error\", \"Unable to load theme.\", \"error\", '
      Okay
      ');\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.storage.set(\"themes\", \"my_theme_version\", XKit.extensions.themes.gallery_themes_version[m_index]);\n\n\t\t// Voila!\n\t\tXKit.storage.set(\"themes\", \"my_theme_contents\", XKit.extensions.themes.gallery_themes_contents[m_index]);\n\t\tXKit.extensions.themes.load_theme();\n\n\t},\n\n\tcpanel: function(obj) {\n\n\t\tif (typeof XKit.extensions.yahoo !== \"undefined\") {\n\t\t\tif (XKit.extensions.yahoo.running === true) {\n\t\t\t\tvar yahoo_html = \"
      Yoohoo is on
      Please disable the \\\"Yoohoo!\\\" before running this extension.
      \";\n\t\t\t\t$(obj).html(yahoo_html);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar m_html = \"
      Loading theme gallery
      Please wait, I'm fetching the latest themes for you.
      \";\n\t\t$(obj).html(m_html);\n\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller();\n\t\t$(\"#xkit-extensions-panel-right\").nanoScroller({ scroll: 'top' });\n\n\t\tXKit.download.page(\"themes/index.php\", function(mdata) {\n\n\t\t\tif (mdata.server_down === true) {\n\n\t\t\t\t$(\"#xkit-themes-loading\").html(\"Server unreachable
      Please try again later.\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$(\"#xkit-themes-loading\").remove();\n\t\t\tXKit.extensions.themes.m_theme_count = 0;\n\t\t\t$(obj).html(\"
      \");\n\n\t\t\t// Create default theme object:\n\t\t\tvar def_theme = {\n\t\t\t\t\"name\": \"Tumblr Default\",\n\t\t\t\t\"version\": \"1\",\n\t\t\t\t\"developer\": \"Tumblr, Inc.\",\n\t\t\t\t\"file\": \"\",\n\t\t\t\t\"description\": \"The standard Tumblr theme\"\n\t\t\t};\n\t\t\tXKit.extensions.themes.cpanel_add(def_theme);\n\n\t\t\tfor (var theme in mdata.themes) {\n\t\t\t\tXKit.extensions.themes.cpanel_add(mdata.themes[theme]);\n\t\t\t}\n\n\t\t\t$(\".xkit-theme-obj\").click(function() {\n\n\t\t\t\tif ($(this).hasClass(\"selected\") === true) { return; }\n\t\t\t\t$(\".xkit-theme-obj.selected\").removeClass(\"selected\");\n\t\t\t\tXKit.extensions.themes.load_gallery_theme($(this).attr('data-theme-id'));\n\t\t\t\t$(this).addClass(\"selected\");\n\n\t\t\t});\n\n\t\t\tif (XKit.extensions.themes.m_theme_count >= 3) {\n\t\t\t\t$(\".xkit-theme-obj:last-child\").css(\"border-bottom\", \"0\");\n\t\t\t}\n\n\t\t\t$(\"#xkit-extensions-panel-right\").nanoScroller();\n\t\t\t$(\"#xkit-extensions-panel-right\").nanoScroller({ scroll: 'top' });\n\n\t\t});\n\n\t},\n\n\tdestroy: function() {\n\t\tXKit.tools.remove_css(\"themes\");\n\t\t$(\"#xkit-themes-user-theme\").remove();\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUY5N0NCN0REMEVGMTFFMkIzMzlFNEI5QzIwNDI2MDAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUY5N0NCN0VEMEVGMTFFMkIzMzlFNEI5QzIwNDI2MDAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFRjk3Q0I3QkQwRUYxMUUyQjMzOUU0QjlDMjA0MjYwMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFRjk3Q0I3Q0QwRUYxMUUyQjMzOUU0QjlDMjA0MjYwMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PubDIKEAAAYcSURBVHjaZFbfi1Vl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","css":"#xkit-themes-loading {\n\tfont-size: 17px;\n\tcolor: rgb(120,120,120);\n\tpadding: 30px;\n\ttext-align: center;\n\tmargin-top: 40px;\n}\n\n.xkit-theme-obj {\n\tborder-bottom: 1px solid rgb(190,190,190);\n\tposition: relative;\n\tpadding: 8px 15px 8px 30px;\n\tfont-size: 13px;\n\tbackground-repeat: no-repeat;\n\tbackground-position: 11px 11px;\n\tcursor: pointer;\n}\n\n.xkit-theme-obj.selected {\n\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAJCAYAAAALpr0TAAAAPElEQVQYV2NkIBIwEqHuP1ANIyGFYEUgw/AphCtCV4gsgaIIl0IMRdgU4nQOshtBJpkA8VlsIUHI13A9AJekCgr1mBZRAAAAAElFTkSuQmCC');\n}\n\n.xkit-theme-obj:hover {\n\tbackground-color: rgb(245,245,245);\n}\n\n.xkit-theme-obj:active {\n\tbackground-color: rgb(235,235,235);\n}\n\n.xkit-theme-title {\n\tfont-weight: bold;\n}\n\n.xkit-theme-description {\n\tcolor: rgb(80,80,80);\n}\n\n.xkit-theme-developer {\n\tfont-size: 11px;\n\tcolor: rgb(130,130,130);\n}","title":"Themes","description":"Themes for your dashboard","developer":"STUDIOXENIX","version":"0.1.3","details":"This extension allows you to install themes from the XKit Theme Gallery onto your dashboard. New themes are added regularly, and if you are good with CSS, send an ask to xkit-dev.tumblr.com to get your theme added here!","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/themes_plus.json b/Extensions/dist/themes_plus.json new file mode 100644 index 000000000..3be3c2330 --- /dev/null +++ b/Extensions/dist/themes_plus.json @@ -0,0 +1 @@ +{"id":"themes_plus","script":"//* TITLE Themes+ (preview) **//\n//* VERSION 0.2.7 **//\n//* DESCRIPTION Customize More **//\n//* DETAILS Themes+ lets you customize your dashboard to your liking by letting you choose the colors, the images and options yourself. You can also export and import the themes you and others made. Please note that this is the preview edition, so it's lacking some functionality. **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n\njQuery.fn.selectText = function() {\n\tvar doc = document;\n\tvar element = this[0];\n\tvar range, selection;\n\n\tif (doc.body.createTextRange) {\n\t\trange = document.body.createTextRange();\n\t\trange.moveToElementText(element);\n\t\trange.select();\n\t} else if (window.getSelection) {\n\t\tselection = window.getSelection();\n\t\trange = document.createRange();\n\t\trange.selectNodeContents(element);\n\t\tselection.removeAllRanges();\n\t\tselection.addRange(range);\n\t}\n};\n\n/**\n *\n * Color picker\n * Author: Stefan Petre www.eyecon.ro\n *\n * Dual licensed under the MIT and GPL licenses\n *\n */\n/* eslint-disable id-length, no-unused-vars */\n(function($) {\n\tvar ColorPicker = function() {\n\t\tvar\n\t\t\tids = {},\n\t\t\tinAction,\n\t\t\tcharMin = 65,\n\t\t\tvisible,\n\t\t\ttpl = '
      ',\n\t\t\tdefaults = {\n\t\t\t\teventName: 'click',\n\t\t\t\tonShow: function() {},\n\t\t\t\tonBeforeShow: function() {},\n\t\t\t\tonHide: function() {},\n\t\t\t\tonChange: function() {},\n\t\t\t\tonSubmit: function() {},\n\t\t\t\tcolor: 'ff0000',\n\t\t\t\tlivePreview: true,\n\t\t\t\tflat: false\n\t\t\t},\n\t\t\tfillRGBFields = function(hsb, cal) {\n\t\t\t\tvar rgb = HSBToRGB(hsb);\n\t\t\t\t$(cal).data('colorpicker').fields\n\t\t\t\t\t.eq(1).val(rgb.r).end()\n\t\t\t\t\t.eq(2).val(rgb.g).end()\n\t\t\t\t\t.eq(3).val(rgb.b).end();\n\t\t\t},\n\t\t\tfillHSBFields = function(hsb, cal) {\n\t\t\t\t$(cal).data('colorpicker').fields\n\t\t\t\t\t.eq(4).val(hsb.h).end()\n\t\t\t\t\t.eq(5).val(hsb.s).end()\n\t\t\t\t\t.eq(6).val(hsb.b).end();\n\t\t\t},\n\t\t\tfillHexFields = function(hsb, cal) {\n\t\t\t\t$(cal).data('colorpicker').fields\n\t\t\t\t\t.eq(0).val(HSBToHex(hsb)).end();\n\t\t\t},\n\t\t\tsetSelector = function(hsb, cal) {\n\t\t\t\t$(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100}));\n\t\t\t\t$(cal).data('colorpicker').selectorIndic.css({\n\t\t\t\t\tleft: parseInt(150 * hsb.s / 100, 10),\n\t\t\t\t\ttop: parseInt(150 * (100 - hsb.b) / 100, 10)\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetHue = function(hsb, cal) {\n\t\t\t\t$(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h / 360, 10));\n\t\t\t},\n\t\t\tsetCurrentColor = function(hsb, cal) {\n\t\t\t\t$(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb));\n\t\t\t},\n\t\t\tsetNewColor = function(hsb, cal) {\n\t\t\t\t$(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));\n\t\t\t},\n\t\t\tkeyDown = function(ev) {\n\t\t\t\tvar pressedKey = ev.charCode || ev.keyCode || -1;\n\t\t\t\tif ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar cal = $(this).parent().parent();\n\t\t\t\tif (cal.data('colorpicker').livePreview === true) {\n\t\t\t\t\tchange.apply(this);\n\t\t\t\t}\n\t\t\t},\n\t\t\tchange = function(ev) {\n\t\t\t\tvar cal = $(this).parent().parent(), col;\n\t\t\t\tif (this.parentNode.className.indexOf('_hex') > 0) {\n\t\t\t\t\tcal.data('colorpicker').color = col = HexToHSB(fixHex(this.value));\n\t\t\t\t} else if (this.parentNode.className.indexOf('_hsb') > 0) {\n\t\t\t\t\tcal.data('colorpicker').color = col = fixHSB({\n\t\t\t\t\t\th: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10),\n\t\t\t\t\t\ts: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10),\n\t\t\t\t\t\tb: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10)\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tcal.data('colorpicker').color = col = RGBToHSB(fixRGB({\n\t\t\t\t\t\tr: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10),\n\t\t\t\t\t\tg: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10),\n\t\t\t\t\t\tb: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10)\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\tif (ev) {\n\t\t\t\t\tfillRGBFields(col, cal.get(0));\n\t\t\t\t\tfillHexFields(col, cal.get(0));\n\t\t\t\t\tfillHSBFields(col, cal.get(0));\n\t\t\t\t}\n\t\t\t\tsetSelector(col, cal.get(0));\n\t\t\t\tsetHue(col, cal.get(0));\n\t\t\t\tsetNewColor(col, cal.get(0));\n\t\t\t\tcal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);\n\t\t\t},\n\t\t\tblur = function(ev) {\n\t\t\t\tvar cal = $(this).parent().parent();\n\t\t\t\tcal.data('colorpicker').fields.parent().removeClass('colorpicker_focus');\n\t\t\t},\n\t\t\tfocus = function() {\n\t\t\t\tcharMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65;\n\t\t\t\t$(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');\n\t\t\t\t$(this).parent().addClass('colorpicker_focus');\n\t\t\t},\n\t\t\tdownIncrement = function(ev) {\n\t\t\t\tvar field = $(this).parent().find('input').focus();\n\t\t\t\tvar current = {\n\t\t\t\t\tel: $(this).parent().addClass('colorpicker_slider'),\n\t\t\t\t\tmax: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255),\n\t\t\t\t\ty: ev.pageY,\n\t\t\t\t\tfield: field,\n\t\t\t\t\tval: parseInt(field.val(), 10),\n\t\t\t\t\tpreview: $(this).parent().parent().data('colorpicker').livePreview\n\t\t\t\t};\n\t\t\t\t$(document).bind('mouseup', current, upIncrement);\n\t\t\t\t$(document).bind('mousemove', current, moveIncrement);\n\t\t\t},\n\t\t\tmoveIncrement = function(ev) {\n\t\t\t\tev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10))));\n\t\t\t\tif (ev.data.preview) {\n\t\t\t\t\tchange.apply(ev.data.field.get(0), [true]);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tupIncrement = function(ev) {\n\t\t\t\tchange.apply(ev.data.field.get(0), [true]);\n\t\t\t\tev.data.el.removeClass('colorpicker_slider').find('input').focus();\n\t\t\t\t$(document).unbind('mouseup', upIncrement);\n\t\t\t\t$(document).unbind('mousemove', moveIncrement);\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tdownHue = function(ev) {\n\t\t\t\tvar current = {\n\t\t\t\t\tcal: $(this).parent(),\n\t\t\t\t\ty: $(this).offset().top\n\t\t\t\t};\n\t\t\t\tcurrent.preview = current.cal.data('colorpicker').livePreview;\n\t\t\t\t$(document).bind('mouseup', current, upHue);\n\t\t\t\t$(document).bind('mousemove', current, moveHue);\n\t\t\t},\n\t\t\tmoveHue = function(ev) {\n\t\t\t\tchange.apply(\n\t\t\t\t\tev.data.cal.data('colorpicker')\n\t\t\t\t\t\t.fields\n\t\t\t\t\t\t.eq(4)\n\t\t\t\t\t\t.val(parseInt(360 * (150 - Math.max(0, Math.min(150, (ev.pageY - ev.data.y)))) / 150, 10))\n\t\t\t\t\t\t.get(0),\n\t\t\t\t\t[ev.data.preview]\n\t\t\t\t);\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tupHue = function(ev) {\n\t\t\t\tfillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));\n\t\t\t\tfillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));\n\t\t\t\t$(document).unbind('mouseup', upHue);\n\t\t\t\t$(document).unbind('mousemove', moveHue);\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tdownSelector = function(ev) {\n\t\t\t\tvar current = {\n\t\t\t\t\tcal: $(this).parent(),\n\t\t\t\t\tpos: $(this).offset()\n\t\t\t\t};\n\t\t\t\tcurrent.preview = current.cal.data('colorpicker').livePreview;\n\t\t\t\t$(document).bind('mouseup', current, upSelector);\n\t\t\t\t$(document).bind('mousemove', current, moveSelector);\n\t\t\t},\n\t\t\tmoveSelector = function(ev) {\n\t\t\t\tchange.apply(\n\t\t\t\t\tev.data.cal.data('colorpicker')\n\t\t\t\t\t\t.fields\n\t\t\t\t\t\t.eq(6)\n\t\t\t\t\t\t.val(parseInt(100 * (150 - Math.max(0, Math.min(150, (ev.pageY - ev.data.pos.top)))) / 150, 10))\n\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.eq(5)\n\t\t\t\t\t\t.val(parseInt(100 * (Math.max(0, Math.min(150, (ev.pageX - ev.data.pos.left)))) / 150, 10))\n\t\t\t\t\t\t.get(0),\n\t\t\t\t\t[ev.data.preview]\n\t\t\t\t);\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tupSelector = function(ev) {\n\t\t\t\tfillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));\n\t\t\t\tfillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));\n\t\t\t\t$(document).unbind('mouseup', upSelector);\n\t\t\t\t$(document).unbind('mousemove', moveSelector);\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tenterSubmit = function(ev) {\n\t\t\t\t$(this).addClass('colorpicker_focus');\n\t\t\t},\n\t\t\tleaveSubmit = function(ev) {\n\t\t\t\t$(this).removeClass('colorpicker_focus');\n\t\t\t},\n\t\t\tclickSubmit = function(ev) {\n\t\t\t\tvar cal = $(this).parent();\n\t\t\t\tvar col = cal.data('colorpicker').color;\n\t\t\t\tcal.data('colorpicker').origColor = col;\n\t\t\t\tsetCurrentColor(col, cal.get(0));\n\t\t\t\tcal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el);\n\t\t\t},\n\t\t\tshow = function(ev) {\n\t\t\t\tvar cal = $('#' + $(this).data('colorpickerId'));\n\t\t\t\tcal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);\n\t\t\t\tvar pos = $(this).offset();\n\t\t\t\tvar viewPort = getViewport();\n\t\t\t\tvar top = pos.top + this.offsetHeight;\n\t\t\t\tvar left = pos.left;\n\t\t\t\tif (top + 176 > viewPort.t + viewPort.h) {\n\t\t\t\t\ttop -= this.offsetHeight + 176;\n\t\t\t\t}\n\t\t\t\tif (left + 356 > viewPort.l + viewPort.w) {\n\t\t\t\t\tleft -= 356;\n\t\t\t\t}\n\t\t\t\tcal.css({left: left + 'px', top: top + 'px'});\n\t\t\t\tif (cal.data('colorpicker').onShow.apply(this, [cal.get(0)])) {\n\t\t\t\t\tcal.show();\n\t\t\t\t}\n\t\t\t\t$(document).bind('mousedown', {cal: cal}, hide);\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\thide = function(ev) {\n\t\t\t\tif (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {\n\t\t\t\t\tif (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)])) {\n\t\t\t\t\t\tev.data.cal.hide();\n\t\t\t\t\t}\n\t\t\t\t\t$(document).unbind('mousedown', hide);\n\t\t\t\t}\n\t\t\t},\n\t\t\tisChildOf = function(parentEl, el, container) {\n\t\t\t\tif (parentEl == el) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (parentEl.contains) {\n\t\t\t\t\treturn parentEl.contains(el);\n\t\t\t\t}\n\t\t\t\tif ( parentEl.compareDocumentPosition ) {\n\t\t\t\t\treturn !!(parentEl.compareDocumentPosition(el) & 16);\n\t\t\t\t}\n\t\t\t\tvar prEl = el.parentNode;\n\t\t\t\twhile (prEl && prEl != container) {\n\t\t\t\t\tif (prEl == parentEl)\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tprEl = prEl.parentNode;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tgetViewport = function() {\n\t\t\t\tvar m = document.compatMode == 'CSS1Compat';\n\t\t\t\treturn {\n\t\t\t\t\tl : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),\n\t\t\t\t\tt : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),\n\t\t\t\t\tw : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),\n\t\t\t\t\th : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)\n\t\t\t\t};\n\t\t\t},\n\t\t\tfixHSB = function(hsb) {\n\t\t\t\treturn {\n\t\t\t\t\th: Math.min(360, Math.max(0, hsb.h)),\n\t\t\t\t\ts: Math.min(100, Math.max(0, hsb.s)),\n\t\t\t\t\tb: Math.min(100, Math.max(0, hsb.b))\n\t\t\t\t};\n\t\t\t},\n\t\t\tfixRGB = function(rgb) {\n\t\t\t\treturn {\n\t\t\t\t\tr: Math.min(255, Math.max(0, rgb.r)),\n\t\t\t\t\tg: Math.min(255, Math.max(0, rgb.g)),\n\t\t\t\t\tb: Math.min(255, Math.max(0, rgb.b))\n\t\t\t\t};\n\t\t\t},\n\t\t\tfixHex = function(hex) {\n\t\t\t\tvar len = 6 - hex.length;\n\t\t\t\tif (len > 0) {\n\t\t\t\t\tvar o = [];\n\t\t\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\t\t\to.push('0');\n\t\t\t\t\t}\n\t\t\t\t\to.push(hex);\n\t\t\t\t\thex = o.join('');\n\t\t\t\t}\n\t\t\t\treturn hex;\n\t\t\t},\n\t\t\tHexToRGB = function(hex) {\n\t\t\t\thex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);\n\t\t\t\treturn {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)};\n\t\t\t},\n\t\t\tHexToHSB = function(hex) {\n\t\t\t\treturn RGBToHSB(HexToRGB(hex));\n\t\t\t},\n\t\t\tRGBToHSB = function(rgb) {\n\t\t\t\tvar hsb = {\n\t\t\t\t\th: 0,\n\t\t\t\t\ts: 0,\n\t\t\t\t\tb: 0\n\t\t\t\t};\n\t\t\t\tvar min = Math.min(rgb.r, rgb.g, rgb.b);\n\t\t\t\tvar max = Math.max(rgb.r, rgb.g, rgb.b);\n\t\t\t\tvar delta = max - min;\n\t\t\t\thsb.b = max;\n\t\t\t\thsb.s = max !== 0 ? 255 * delta / max : 0;\n\t\t\t\tif (hsb.s !== 0) {\n\t\t\t\t\tif (rgb.r == max) {\n\t\t\t\t\t\thsb.h = (rgb.g - rgb.b) / delta;\n\t\t\t\t\t} else if (rgb.g == max) {\n\t\t\t\t\t\thsb.h = 2 + (rgb.b - rgb.r) / delta;\n\t\t\t\t\t} else {\n\t\t\t\t\t\thsb.h = 4 + (rgb.r - rgb.g) / delta;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\thsb.h = -1;\n\t\t\t\t}\n\t\t\t\thsb.h *= 60;\n\t\t\t\tif (hsb.h < 0) {\n\t\t\t\t\thsb.h += 360;\n\t\t\t\t}\n\t\t\t\thsb.s *= 100 / 255;\n\t\t\t\thsb.b *= 100 / 255;\n\t\t\t\treturn hsb;\n\t\t\t},\n\t\t\tHSBToRGB = function(hsb) {\n\t\t\t\tvar rgb = {};\n\t\t\t\tvar h = Math.round(hsb.h);\n\t\t\t\tvar s = Math.round(hsb.s * 255 / 100);\n\t\t\t\tvar v = Math.round(hsb.b * 255 / 100);\n\t\t\t\tif (s === 0) {\n\t\t\t\t\trgb.r = rgb.g = rgb.b = v;\n\t\t\t\t} else {\n\t\t\t\t\tvar t1 = v;\n\t\t\t\t\tvar t2 = (255 - s) * v / 255;\n\t\t\t\t\tvar t3 = (t1 - t2) * (h % 60) / 60;\n\t\t\t\t\tif (h == 360) h = 0;\n\t\t\t\t\tif (h < 60) {\n\t\t\t\t\t\trgb.r = t1; rgb.b = t2; rgb.g = t2 + t3;\n\t\t\t\t\t} else if (h < 120) {\n\t\t\t\t\t\trgb.g = t1; rgb.b = t2; rgb.r = t1 - t3;\n\t\t\t\t\t} else if (h < 180) {\n\t\t\t\t\t\trgb.g = t1; rgb.r = t2; rgb.b = t2 + t3;\n\t\t\t\t\t} else if (h < 240) {\n\t\t\t\t\t\trgb.b = t1; rgb.r = t2; rgb.g = t1 - t3;\n\t\t\t\t\t} else if (h < 300) {\n\t\t\t\t\t\trgb.b = t1; rgb.g = t2; rgb.r = t2 + t3;\n\t\t\t\t\t} else if (h < 360) {\n\t\t\t\t\t\trgb.r = t1; rgb.g = t2; rgb.b = t1 - t3;\n\t\t\t\t\t} else {\n\t\t\t\t\t\trgb.r = 0; rgb.g = 0; rgb.b = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {r: Math.round(rgb.r), g: Math.round(rgb.g), b: Math.round(rgb.b)};\n\t\t\t},\n\t\t\tRGBToHex = function(rgb) {\n\t\t\t\tvar hex = [\n\t\t\t\t\trgb.r.toString(16),\n\t\t\t\t\trgb.g.toString(16),\n\t\t\t\t\trgb.b.toString(16)\n\t\t\t\t];\n\t\t\t\t$.each(hex, function(nr, val) {\n\t\t\t\t\tif (val.length == 1) {\n\t\t\t\t\t\thex[nr] = '0' + val;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn hex.join('');\n\t\t\t},\n\t\t\tHSBToHex = function(hsb) {\n\t\t\t\treturn RGBToHex(HSBToRGB(hsb));\n\t\t\t},\n\t\t\trestoreOriginal = function() {\n\t\t\t\tvar cal = $(this).parent();\n\t\t\t\tvar col = cal.data('colorpicker').origColor;\n\t\t\t\tcal.data('colorpicker').color = col;\n\t\t\t\tfillRGBFields(col, cal.get(0));\n\t\t\t\tfillHexFields(col, cal.get(0));\n\t\t\t\tfillHSBFields(col, cal.get(0));\n\t\t\t\tsetSelector(col, cal.get(0));\n\t\t\t\tsetHue(col, cal.get(0));\n\t\t\t\tsetNewColor(col, cal.get(0));\n\t\t\t};\n\t\treturn {\n\t\t\tinit: function(opt) {\n\t\t\t\topt = $.extend({}, defaults, opt || {});\n\t\t\t\tif (typeof opt.color == 'string') {\n\t\t\t\t\topt.color = HexToHSB(opt.color);\n\t\t\t\t} else if (typeof(opt.color.r) === \"number\" &&\n\t\t\t\t\t\t typeof(opt.color.g) === \"number\" &&\n\t\t\t\t\t\t typeof(opt.color.b) === \"number\") {\n\t\t\t\t\topt.color = RGBToHSB(opt.color);\n\t\t\t\t} else if (typeof(opt.color.h) === \"number\" &&\n\t\t\t\t\t\t typeof(opt.color.s) === \"number\" &&\n\t\t\t\t\t\t typeof(opt.color.b) === \"number\") {\n\t\t\t\t\topt.color = fixHSB(opt.color);\n\t\t\t\t} else {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\treturn this.each(function() {\n\t\t\t\t\tif (!$(this).data('colorpickerId')) {\n\t\t\t\t\t\tvar options = $.extend({}, opt);\n\t\t\t\t\t\toptions.origColor = opt.color;\n\t\t\t\t\t\tvar id = 'collorpicker_' + parseInt(Math.random() * 1000);\n\t\t\t\t\t\t$(this).data('colorpickerId', id);\n\t\t\t\t\t\tvar cal = $(tpl).attr('id', id);\n\t\t\t\t\t\tif (options.flat) {\n\t\t\t\t\t\t\tcal.appendTo(this).show();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcal.appendTo(document.body);\n\t\t\t\t\t\t}\n\t\t\t\t\t\toptions.fields = cal\n\t\t\t\t\t\t\t\t\t\t\t.find('input')\n\t\t\t\t\t\t\t\t\t\t\t\t.bind('keyup', keyDown)\n\t\t\t\t\t\t\t\t\t\t\t\t.bind('change', change)\n\t\t\t\t\t\t\t\t\t\t\t\t.bind('blur', blur)\n\t\t\t\t\t\t\t\t\t\t\t\t.bind('focus', focus);\n\t\t\t\t\t\tcal\n\t\t\t\t\t\t\t.find('span').bind('mousedown', downIncrement).end()\n\t\t\t\t\t\t\t.find('>div.colorpicker_current_color').bind('click', restoreOriginal);\n\t\t\t\t\t\toptions.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector);\n\t\t\t\t\t\toptions.selectorIndic = options.selector.find('div div');\n\t\t\t\t\t\toptions.el = this;\n\t\t\t\t\t\toptions.hue = cal.find('div.colorpicker_hue div');\n\t\t\t\t\t\tcal.find('div.colorpicker_hue').bind('mousedown', downHue);\n\t\t\t\t\t\toptions.newColor = cal.find('div.colorpicker_new_color');\n\t\t\t\t\t\toptions.currentColor = cal.find('div.colorpicker_current_color');\n\t\t\t\t\t\tcal.data('colorpicker', options);\n\t\t\t\t\t\tcal.find('div.colorpicker_submit')\n\t\t\t\t\t\t\t.bind('mouseenter', enterSubmit)\n\t\t\t\t\t\t\t.bind('mouseleave', leaveSubmit)\n\t\t\t\t\t\t\t.bind('click', clickSubmit);\n\t\t\t\t\t\tfillRGBFields(options.color, cal.get(0));\n\t\t\t\t\t\tfillHSBFields(options.color, cal.get(0));\n\t\t\t\t\t\tfillHexFields(options.color, cal.get(0));\n\t\t\t\t\t\tsetHue(options.color, cal.get(0));\n\t\t\t\t\t\tsetSelector(options.color, cal.get(0));\n\t\t\t\t\t\tsetCurrentColor(options.color, cal.get(0));\n\t\t\t\t\t\tsetNewColor(options.color, cal.get(0));\n\t\t\t\t\t\tif (options.flat) {\n\t\t\t\t\t\t\tcal.css({\n\t\t\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\t\t\tdisplay: 'block'\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$(this).bind(options.eventName, show);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tshowPicker: function() {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ($(this).data('colorpickerId')) {\n\t\t\t\t\t\tshow.apply(this);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\thidePicker: function() {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ($(this).data('colorpickerId')) {\n\t\t\t\t\t\t$('#' + $(this).data('colorpickerId')).hide();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetColor: function(col) {\n\t\t\t\tif (typeof col == 'string') {\n\t\t\t\t\tcol = HexToHSB(col);\n\t\t\t\t} else if (typeof(col.r) === \"number\" &&\n\t\t\t\t\t\t typeof(col.g) === \"number\" &&\n\t\t\t\t\t\t typeof(col.b) === \"number\") {\n\t\t\t\t\tcol = RGBToHSB(col);\n\t\t\t\t} else if (typeof(col.h) === \"number\" &&\n\t\t\t\t\t\t typeof(col.s) === \"number\" &&\n\t\t\t\t\t\t typeof(col.b) === \"number\") {\n\t\t\t\t\tcol = fixHSB(col);\n\t\t\t\t} else {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\treturn this.each(function() {\n\t\t\t\t\tif ($(this).data('colorpickerId')) {\n\t\t\t\t\t\tvar cal = $('#' + $(this).data('colorpickerId'));\n\t\t\t\t\t\tcal.data('colorpicker').color = col;\n\t\t\t\t\t\tcal.data('colorpicker').origColor = col;\n\t\t\t\t\t\tfillRGBFields(col, cal.get(0));\n\t\t\t\t\t\tfillHSBFields(col, cal.get(0));\n\t\t\t\t\t\tfillHexFields(col, cal.get(0));\n\t\t\t\t\t\tsetHue(col, cal.get(0));\n\t\t\t\t\t\tsetSelector(col, cal.get(0));\n\t\t\t\t\t\tsetCurrentColor(col, cal.get(0));\n\t\t\t\t\t\tsetNewColor(col, cal.get(0));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}();\n\t$.fn.extend({\n\t\tColorPicker: ColorPicker.init,\n\t\tColorPickerHide: ColorPicker.hidePicker,\n\t\tColorPickerShow: ColorPicker.showPicker,\n\t\tColorPickerSetColor: ColorPicker.setColor\n\t});\n\t/* eslint-enable id-length, no-unused-vars */\n})(jQuery);\n\nXKit.extensions.themes_plus = new Object({\n\n\trunning: false,\n\n\tcurrent_theme: \"\",\n\ttheme_compatibility: \"1\",\n\n\toptions: {\n\n\t\t\"sep-begin\": {\n\n\t\t\t\"text\": \"Basics\",\n\t\t\t\"type\": \"separator\"\n\n\n\t\t},\n\n\t\t\"title\": {\n\n\t\t\t\"text\": \"Title\",\n\t\t\t\"type\": \"text\",\n\t\t\t\"default\": \"My Theme\"\n\n\t\t},\n\n\t\t\"description\": {\n\n\t\t\t\"text\": \"Description\",\n\t\t\t\"type\": \"text\",\n\t\t\t\"default\": \"\"\n\n\t\t},\n\n\t\t\"owner\": {\n\n\t\t\t\"text\": \"Created By\",\n\t\t\t\"type\": \"text\",\n\t\t\t\"default\": \"\"\n\n\t\t},\n\n\t\t\"sep-background\": {\n\n\t\t\t\"text\": \"Background\",\n\t\t\t\"type\": \"separator\"\n\n\t\t},\n\n\t\t\"background_color\": {\n\n\t\t\t\"text\": \"Page Background Color\",\n\t\t\t\"type\": \"color\",\n\t\t\t\"of\": [\"body\", \".identity-legacy\", \".identity\"],\n\t\t\t\"attr\": [\"background-color\", \"background\", \"background\"],\n\t\t\t\"default\": \"\"\n\n\t\t},\n\n\t\t\"container_color\": {\n\n\t\t\t\"text\": \"Content Background Color
      (also changes permalink ear on posts)\",\n\t\t\t\"type\": \"color\",\n\t\t\t\"of\": [\".l-container.l-container--two-column .right_column, .l-container.l-container--two-column-dashboard .right_column, .l-container.l-container--two-column-dashboard .left_column\", \".l-container.l-container--two-column .l-content, .l-container.l-container--two-column-dashboard .l-content\", \".search_form_row\", \".l-header .selection_nipple\", \".post_full .post_permalink:before\"],\n\t\t\t\"attr\": [\"background\", \"background-color\", \"background\", \"border-bottom-color\", \"border-right-color\"],\n\t\t\t\"default\": \"\"\n\n\t\t},\n\n\t\t\"container_transparent\": {\n\n\t\t\t\"text\": \"Half-Transparent Container
      (to use with Background Images)\",\n\t\t\t\"type\": \"checkbox\",\n\t\t\t\"default\": false,\n\t\t\t\"on_true\": \".l-container.l-container--two-column .right_column, .l-container.l-container--two-column-dashboard .right_column, .l-container.l-container--two-column-dashboard .left_column { background: transparent !important; } .l-content, .search_form_row { background: rgba(0,0,0,0) !important; } .l-header .selection_nipple { border-bottom-color: rgba(0,0,0,0.43) !important; } .right_column:after { display: none; } .l-header-container--refresh { background: rgba(0,0,0,0.7); }\"\n\n\t\t},\n\n\t\t\"background_image\": {\n\n\t\t\t\"text\": \"Background Image\",\n\t\t\t\"type\": \"image\",\n\t\t\t\"of\": [\"body\"],\n\t\t\t\"attr\": \"background-image\",\n\t\t\t\"default\": \"\"\n\n\t\t},\n\n\t\t\"cover_background\": {\n\n\t\t\t\"text\": \"Background Cover Mode (no repeat)\",\n\t\t\t\"type\": \"checkbox\",\n\t\t\t\"default\": false,\n\t\t\t\"on_true\": \"body { background-size:cover !important; background-attachment:fixed !important; background-repeat: no-repeat !important; }\",\n\n\t\t},\n\n\t\t\"sep-posts\": {\n\n\t\t\t\"text\": \"Posts on Dashboard\",\n\t\t\t\"type\": \"separator\"\n\n\t\t},\n\n\t\t\"post_shadows\": {\n\n\t\t\t\"text\": \"Shadows on Posts\",\n\t\t\t\"type\": \"checkbox\",\n\t\t\t\"default\": false,\n\t\t\t\"on_true\": \"#posts .post.post_full { box-shadow: 0px 2px 3px rgba(0,0,0,0.42); }\",\n\n\t\t},\n\n\t\t\"avatar_shadows\": {\n\n\t\t\t\"text\": \"Shadows on Avatars\",\n\t\t\t\"type\": \"checkbox\",\n\t\t\t\"default\": false,\n\t\t\t\"on_true\": \"#posts .post.post_full .post_avatar { box-shadow: 0px 2px 3px rgba(0,0,0,0.42); }\",\n\n\t\t},\n\n\t\t\"no_avatar_nipple\": {\n\n\t\t\t\"text\": \"No Avatar Pointer\",\n\t\t\t\"type\": \"checkbox\",\n\t\t\t\"default\": false,\n\t\t\t\"on_true\": \".post_avatar:after { display: none !important; }\",\n\n\t\t},\n\n\t\t\"no_rounded_corners\": {\n\n\t\t\t\"text\": \"No Rounded Corners on Posts\",\n\t\t\t\"type\": \"checkbox\",\n\t\t\t\"default\": false,\n\t\t\t\"on_true\": \".post.post_full { border-radius: 0 !important; }\",\n\n\t\t},\n\n\t\t\"no_rounded_corners_on_avatars\": {\n\n\t\t\t\"text\": \"No Rounded Corners on Avatars\",\n\t\t\t\"type\": \"checkbox\",\n\t\t\t\"default\": false,\n\t\t\t\"on_true\": \".post_avatar .post_avatar_link { border-radius: 0 !important; }\",\n\n\t\t},\n\n\t\t\"sep-other\": {\n\n\t\t\t\"text\": \"Others\",\n\t\t\t\"type\": \"separator\"\n\n\n\t\t},\n\n\t\t\"invert_logo\": {\n\n\t\t\t\"text\": \"Invert Header (Chrome/Safari only)\",\n\t\t\t\"type\": \"checkbox\",\n\t\t\t\"default\": false,\n\t\t\t\"on_true\": \" #logo, .tab.iconic { -webkit-filter: invert(100%); } .l-header .tab_notice, #search_form { -webkit-filter: invert(100%); } .l-header .tab.iconic.selected .selection_nipple { -webkit-filter: invert(100%) !important; } .xoldeheader-item-container .selection_nipple { -webkit-filter: invert(0%) !important; } \",\n\n\t\t},\n\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (!XKit.interface.is_tumblr_page()) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar m_shown_warning = XKit.storage.get(\"themes_plus\", \"shown_warning\", \"\");\n\n\t\tif (m_shown_warning !== \"yasss\") {\n\n\t\t\tXKit.window.show(\"Welcome to Themes+!\", \"Please disable Themes and Theme Editor extensions and Stylish themes before using Themes+.

      To get started, click on the XKit Control Panel > Themes+ > Open Themes+ Control panel.\", \"info\", \"
      OK
      \");\n\n\t\t\t$(\"#xkit-themes-plus-warning-ok\").click(function() {\n\n\t\t\t\tXKit.storage.set(\"themes_plus\", \"shown_warning\", \"yasss\");\n\t\t\t\tXKit.window.close();\n\n\t\t\t});\n\n\t\t}\n\n\t\tXKit.extensions.themes_plus.load_theme();\n\n\t},\n\n\tload_theme: function() {\n\n\t\tvar m_storage = XKit.storage.get(\"themes_plus\", \"current_theme\", \"\");\n\n\t\tif (m_storage !== \"\") {\n\t\t\ttry {\n\t\t\t\tm_storage = m_storage.substring(11, m_storage.length);\n\t\t\t\tXKit.extensions.themes_plus.current_theme = JSON.parse(decodeURIComponent(escape(window.atob(m_storage))));\n\n\t\t\t} catch (e) {\n\t\t\t\tXKit.extensions.themes_plus.current_theme = XKit.extensions.themes_plus.blank_theme_obj();\n\t\t\t}\n\t\t} else {\n\t\t\tXKit.extensions.themes_plus.current_theme = XKit.extensions.themes_plus.blank_theme_obj();\n\t\t}\n\n\t\tXKit.extensions.themes_plus.render();\n\n\t},\n\n\tblank_theme_obj: function() {\n\n\t\tvar m_return = {};\n\n\t\tm_return.title = \"\";\n\t\tm_return.description = \"\";\n\t\tm_return.owner = \"\";\n\t\tm_return.id = \"\";\n\n\t\treturn m_return;\n\n\t},\n\n\trender: function(skip_id) {\n\t\tXKit.tools.remove_css(\"themes_plus_current_theme\");\n\n\t\tif (!skip_id) {\n\t\t\tif (XKit.extensions.themes_plus.current_theme.id === \"\") {\n\t\t\t\t// Default theme!\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconsole.log(\"[Themes+] Rendering user defined theme.\");\n\n\t\tvar m_css = \"\";\n\t\t// Default m_css to make tumblr bits not appear\n\t\tm_css += \".post_avatar { background: none; } \";\n\t\tm_css += \".identity .controls_section.user_list li .follow_list_item_blog::before { display: none; } \";\n\n\t\tfor (var obj in XKit.extensions.themes_plus.current_theme) {\n\n\t\t\tm_css = m_css + \" \" + XKit.extensions.themes_plus.render_property(obj, XKit.extensions.themes_plus.current_theme[obj]);\n\n\t\t}\n\n\t\tXKit.tools.add_css(m_css, \"themes_plus_current_theme\");\n\n\t},\n\n\tshould_render_container_background: function() {\n\n\t\tif ($(\"body\").hasClass(\"help_page\") || $(\"body\").hasClass(\"corp_page\")) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (document.location.href.indexOf('://www.tumblr.com/following') !== -1) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (document.location.href.indexOf('://www.tumblr.com/lookup') !== -1) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (document.location.href.indexOf('://www.tumblr.com/spotlight') !== -1) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (document.location.href.indexOf('://www.tumblr.com/themes') !== -1) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (document.location.href.indexOf('://www.tumblr.com/help') !== -1) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\trender_property: function(obj_name, obj) {\n\n\t\tvar to_return = \"\";\n\n\t\tvar render_container = XKit.extensions.themes_plus.should_render_container_background();\n\n\t\tif (XKit.extensions.themes_plus.options[obj_name] !== undefined) {\n\n\t\t\tvar opt = XKit.extensions.themes_plus.options[obj_name];\n\n\t\t\tif (opt.type === \"checkbox\") {\n\t\t\t\tvar to_return_css = opt.on_true;\n\t\t\t\tif (opt.on_true.indexOf(\"#content\") !== -1) {\n\t\t\t\t\tif (render_container !== true) {\n\t\t\t\t\t\tto_return_css = to_return_css.replace(\"#content\", \"#__content__\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (obj === true) {\n\t\t\t\t\tto_return = to_return_css;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (opt.type === \"color\") {\n\n\t\t\t\tvar color_css = \"\";\n\n\t\t\t\tfor (var i = 0; i < opt.of.length; i++) {\n\t\t\t\t\tvar x_class = opt.attr[i];\n\t\t\t\t\tif (opt.of[i] === \"#content\") {\n\t\t\t\t\t\tif (render_container !== true) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (x_class === \"background-color\") { x_class = \"background\"; }\n\t\t\t\t\tcolor_css = color_css + \" \" + opt.of[i] + \" { \" + x_class + \": \" + obj + \"; } \";\n\t\t\t\t}\n\n\t\t\t\tto_return = color_css;\n\n\t\t\t}\n\n\t\t\tif (opt.type === \"image\") {\n\n\t\t\t\tvar image_css = opt.of + \" { background-image: url('\" + obj + \"') !important; background-repeat: repeat; }\";\n\t\t\t\tto_return = image_css;\n\n\t\t\t}\n\n\t\t} else {\n\t\t\tconsole.log(\"[Themes+] --- property \" + obj_name + \" is unsupported or invalid.\");\n\t\t}\n\n\t\treturn to_return;\n\n\t},\n\n\tcp: function(refresh_mode) {\n\n\t\t// Close the outer control panel.\n\t\t$(\"#xkit-control-panel-shadow\").trigger('click');\n\n\t\t// Remove now unnecessary control panel stuff.\n\t\tXKit.tools.remove_css(\"themes_plus_cp\");\n\n\t\tif (!refresh_mode) {\n\t\t\tXKit.tools.init_css(\"themes_plus\");\n\t\t}\n\n\t\tvar m_sidebar = \"\";\n\n\t\tvar m_theme = XKit.extensions.themes_plus.current_theme;\n\n\t\tif (XKit.extensions.themes_plus.current_theme.id === \"\") {\n\n\t\t\t// Default tumblr theme!\n\t\t\tm_theme.title = \"Default\";\n\t\t\tm_theme.owner = \"Tumblr, Inc.\";\n\t\t\tm_theme.description = \"The Default Look.\";\n\n\t\t}\n\n\t\tm_sidebar = m_sidebar + \"
      \" +\n\t\t\t\t\t\t\"
      \" + m_theme.title + \"
      \" +\n\t\t\t\t\t\t\"
      \" + m_theme.description + \"
      \" +\n\t\t\t\t\t\t\"
      \" + m_theme.owner + \"
      \" +\n\t\t\t\t\t\"
      \";\n\n\t\tvar first_separator = true;\n\n\t\tfor (var obj in XKit.extensions.themes_plus.options) {\n\n\t\t\tvar m_obj = XKit.extensions.themes_plus.options[obj];\n\n\t\t\tif (m_obj.type === \"separator\") {\n\n\t\t\t\tif (!first_separator) {\n\t\t\t\t\tm_sidebar = m_sidebar + \"
      \";\n\t\t\t\t}\n\n\t\t\t\tm_sidebar = m_sidebar + \"
      \" + m_obj.text + \"
      \";\n\n\t\t\t\tfirst_separator = false;\n\n\t\t\t}\n\n\t\t\tif (m_obj.type === \"text\") {\n\n\t\t\t\tvar m_value = m_obj.default;\n\n\t\t\t\tif (typeof m_theme[obj] !== \"undefined\") {\n\t\t\t\t\tif (typeof m_theme[obj] !== \"undefined\" && m_theme[obj] !== \"\") {\n\t\t\t\t\t\tm_value = m_theme[obj];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tm_value = XKit.extensions.themes_plus.strip_html(m_value);\n\n\t\t\t\tvar m_html = \"\";\n\n\t\t\t\tm_sidebar = m_sidebar + \"
      \" +\n\t\t\t\t\t\t\t\t\"
      \" + m_obj.text + \"
      \" +\n\t\t\t\t\t\t\t\t\"
      \" + m_html + \"
      \" +\n\t\t\t\t\t\t\t\"
      \";\n\n\t\t\t}\n\n\t\t\tif (m_obj.type === \"checkbox\") {\n\t\t\t\tvar checkbox_value = m_obj.default;\n\n\t\t\t\tif (typeof m_theme[obj] !== \"undefined\") {\n\t\t\t\t\tif (typeof m_theme[obj] !== \"undefined\" && m_theme[obj] !== \"\") {\n\t\t\t\t\t\tcheckbox_value = m_theme[obj];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (checkbox_value === \"true\" || checkbox_value === true) {\n\t\t\t\t\tcheckbox_value = \"selected\";\n\t\t\t\t} else {\n\t\t\t\t\tcheckbox_value = \"\";\n\t\t\t\t}\n\n\t\t\t\tvar checkbox_html = \"
       
      \";\n\n\t\t\t\tm_sidebar = m_sidebar + \"
      \" +\n\t\t\t\t\t\t\t\t\"
      \" + m_obj.text + \"
      \" +\n\t\t\t\t\t\t\t\t\"
      \" + checkbox_html + \"
      \" +\n\t\t\t\t\t\t\t\"
      \";\n\n\t\t\t}\n\n\t\t\tif (m_obj.type === \"color\") {\n\n\t\t\t\tvar color_value = m_obj.default;\n\n\t\t\t\tif (typeof m_theme[obj] !== \"undefined\") {\n\t\t\t\t\tif (typeof m_theme[obj] !== \"undefined\" && m_theme[obj] !== \"\") {\n\t\t\t\t\t\tcolor_value = m_theme[obj];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (color_value === \"\") {\n\n\t\t\t\t\tcolor_value = $(m_obj.of[0]).css(\"background-color\");\n\n\t\t\t\t}\n\n\t\t\t\tvar color_html = \"
       
      \";\n\n\t\t\t\tm_sidebar = m_sidebar + \"
      \" +\n\t\t\t\t\t\t\t\t\"
      \" + m_obj.text + \"
      \" +\n\t\t\t\t\t\t\t\t\"
      \" + color_html + \"
      \" +\n\t\t\t\t\t\t\t\"
      \";\n\n\t\t\t}\n\n\t\t\tif (m_obj.type === \"image\") {\n\n\t\t\t\tvar image_value = m_obj.default;\n\n\t\t\t\tif (typeof m_theme[obj] !== \"undefined\") {\n\t\t\t\t\tif (typeof m_theme[obj] !== \"undefined\" && m_theme[obj] !== \"\") {\n\t\t\t\t\t\timage_value = m_theme[obj];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (image_value.substring(0, 7) !== \"http://\") {\n\t\t\t\t\timage_value = \"http://\" + image_value;\n\t\t\t\t}\n\n\t\t\t\timage_value = XKit.extensions.themes_plus.strip_html(image_value);\n\n\t\t\t\tvar image_html = \"\";\n\n\t\t\t\tm_sidebar = m_sidebar + \"
      \" +\n\t\t\t\t\t\t\t\t\"
      \" + m_obj.text + \"
      \" +\n\t\t\t\t\t\t\t\t\"
      \" + image_html + \"
      \" +\n\t\t\t\t\t\t\t\"
      \";\n\n\t\t\t}\n\n\t\t}\n\n\t\tm_sidebar = m_sidebar + \"
      \";\n\n\t\tm_sidebar = m_sidebar + \"
      Delete Theme
      \";\n\n\t\tif (!refresh_mode) {\n\t\t\t$(\"body\").animate({ paddingLeft: \"250px\" }, 600);\n\t\t}\n\n\t\tvar container_html = \"
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      Import/Export
      \" +\n\t\t\t\t\t\t\"
      Cancel
      \" +\n\t\t\t\t\t\t\"
      Save & Close
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\tm_sidebar +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\"
      \";\n\n\t\tif (!refresh_mode) {\n\t\t\t$(\"body\").append(container_html);\n\t\t} else {\n\t\t\t$(\"#xkit-themes-plus-container\").remove();\n\t\t\t$(\"body\").append(container_html);\n\t\t}\n\n\t\t$(\"#xkit-themes-plus-sidebar\").nanoScroller();\n\t\t$(\"#xkit-themes-plus-sidebar\").nanoScroller({ scroll: 'top' });\n\n\t\tif (!refresh_mode) {\n\t\t\t$(\"#xkit-themes-plus-container\").animate({ left: \"0\" }, 600);\n\t\t} else {\n\t\t\t$(\"#xkit-themes-plus-container\").css(\"left\", \"0px\");\n\t\t}\n\n\t\t$(\".xkit-themes-plus-option-panel-text-url\").change(function(event) {\n\n\t\t\tvar m_option_id = $(this).parentsUntil(\".xkit-themes-plus-option\").parent().attr('data-option');\n\t\t\t// var m_of = XKit.extensions.themes_plus.options[m_option_id].of;\n\t\t\t// var m_attr = XKit.extensions.themes_plus.options[m_option_id].attr;\n\n\t\t\t/*XKit.tools.remove_css(\"xkit-themes-plus-preview-\" + m_option_id);\n\n\t\t\tvar m_css = m_of + \" { background-image: url('\" + $(this).val() + \"') !important; background-repeat: repeat; }\";\n\n\t\t\tXKit.tools.add_css(m_css, \"xkit-themes-plus-preview-\" + m_option_id);*/\n\n\t\t\tXKit.extensions.themes_plus.current_theme[m_option_id] = $(this).val();\n\t\t\tXKit.extensions.themes_plus.render(true);\n\n\t\t});\n\n\t\t$(\".xkit-themes-plus-option-checkbox\").click(function() {\n\n\t\t\t$(this).toggleClass(\"selected\");\n\n\t\t\tvar m_option_id = $(this).parentsUntil(\".xkit-themes-plus-option\").parent().attr('data-option');\n\n\t\t\t/*XKit.tools.remove_css(\"xkit-themes-plus-preview-\" + m_option_id);\n\n\t\t\tif ($(this).hasClass(\"selected\")) {\n\t\t\t\tvar m_css = XKit.extensions.themes_plus.options[m_option_id].on_true;\n\t\t\t\tXKit.tools.add_css(m_css, \"xkit-themes-plus-preview-\" + m_option_id);\n\t\t\t}*/\n\n\t\t\tXKit.extensions.themes_plus.current_theme[m_option_id] = $(this).hasClass(\"selected\");\n\t\t\tXKit.extensions.themes_plus.render(true);\n\n\t\t});\n\n\t\t$(\".xkit-themes-plus-option-color\").each(function() {\n\n\t\t\tvar m_option_id = $(this).parentsUntil(\".xkit-themes-plus-option\").parent().attr('data-option');\n\t\t\tvar value = $(this).attr('data-value');\n\n\t\t\tvar m_of = XKit.extensions.themes_plus.options[m_option_id].of;\n\t\t\t// var m_attr = XKit.extensions.themes_plus.options[m_option_id].attr;\n\n\t\t\tif (!value) {\n\t\t\t\tvalue = $(m_of[0]).css(\"background-color\");\n\t\t\t}\n\n\t\t\tvar this_picker = this;\n\n\t\t\tvar m_color = value;\n\n\t\t\tif (m_color.substring(0, 1) !== \"#\") { m_color = XKit.extensions.themes_plus.rgb_to_hex(m_color.replace('rgba', 'rgb')); }\n\n\t\t\t$(this).ColorPicker({\n\t\t\t\tcolor: m_color,\n\t\t\t\tonShow: function(colpkr) {\n\t\t\t\t\t$(colpkr).fadeIn(50);\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tonHide: function(colpkr) {\n\t\t\t\t\t$(colpkr).fadeOut(50);\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tonChange: function(hsb, hex, rgb) {\n\t\t\t\t\t$(this_picker).css('backgroundColor', '#' + hex);\n\t\t\t\t\t/*XKit.tools.remove_css(\"xkit-themes-plus-preview-\" + m_option_id);\n\t\t\t\t\tvar m_css = \"\";\n\t\t\t\t\tfor (var i=0;iWhat would you like to do?
      To use a theme made by someone else, click \\\"Import Theme\\\". To share your theme, click \\\"Export Theme\\\": you will be presented with a code that you can share with other Themes+ users.\", \"question\", \"
      Export Theme
      Import Theme
      Cancel
      \");\n\n\t\t\t$(\"#xkit-themes-plus-export-confirm\").click(function() {\n\n\t\t\t\tvar m_data = \"[XKIT_THEME|\" + XKit.extensions.themes_plus.theme_compatibility + \"|\" + window.btoa(unescape(encodeURIComponent(JSON.stringify(XKit.extensions.themes_plus.create_theme_obj_from_settings())))) + \"]\";\n\n\t\t\t\tvar share_code_html = \"
      \" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\t\tm_data +\n\t\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \";\n\n\t\t\t\tXKit.window.show(\"Export Theme\", \"Share the code below to let others use your theme!\" + share_code_html, \"info\", \"
      OK
      \");\n\n\t\t\t\t$(\"#xkit-themes-plus-share-code\").nanoScroller();\n\t\t\t\t$(\"#xkit-themes-plus-share-code\").nanoScroller({ scroll: 'top' });\n\n\t\t\t\t$(\"#xkit-themes-plus-share-code\").click(function() { $(this).selectText();});\n\n\t\t\t});\n\n\t\t\t$(\"#xkit-themes-plus-import-confirm\").click(function() {\n\n\t\t\t\tvar import_html = \"
      \";\n\n\t\t\t\tXKit.window.show(\"Import Theme\", \"Theme Code:
      Only Themes+ Codes are accepted.\" + import_html, \"info\", \"
      OK
      Cancel
      \");\n\n\t\t\t\t$(\"#xkit-themes-plus-confirm-input-code\").click(function() {\n\n\t\t\t\t\tvar $data = $(\"#xkit-themes-plus-input-code-code-code-code\");\n\t\t\t\t\tvar data = $.trim($data.val());\n\t\t\t\t\tfunction complain(problem) {\n\t\t\t\t\t\t$data\n\t\t\t\t\t\t\t.css(\"border-color\", \"red\")\n\t\t\t\t\t\t\t.attr(\"placeholder\", problem)\n\t\t\t\t\t\t\t.val(\"\")\n\t\t\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t\t\t$data\n\t\t\t\t\t\t\t\t\t.removeAttr(\"style\")\n\t\t\t\t\t\t\t\t\t.attr(\"placeholder\", \"Paste the XKit Themes+ theme code you have here.\")\n\t\t\t\t\t\t\t\t\t.off(\"click\");\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data === \"\") {\n\t\t\t\t\t\tcomplain(\"You forgot to paste anything.\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data.substring(0, 12) !== \"[XKIT_THEME|\" || data.length <= 15) {\n\t\t\t\t\t\tcomplain(\"Invalid or incompatible theme code.\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar compatibility_index = data.substring(12, 13);\n\n\t\t\t\t\tif (parseInt(compatibility_index) > XKit.extensions.themes_plus.theme_compatibility) {\n\t\t\t\t\t\tcomplain(\"This theme is not supported by this version of Themes+.\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tdata = data.substring(14, data.length - 1);\n\n\t\t\t\t\tvar data_obj = null;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tdata_obj = JSON.parse(decodeURIComponent(escape(window.atob(data))));\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tcomplain(\"Theme file corrupt or not compatible.\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar mx_html = \"
      \" +\n\t\t\t\t\t\t\t\t\"
      \" + XKit.extensions.themes_plus.strip_html(data_obj.title) + \"
      \" +\n\t\t\t\t\t\t\t\t\"
      \" + XKit.extensions.themes_plus.strip_html(data_obj.description) + \"
      \" +\n\t\t\t\t\t\t\t\t\"
      \" + XKit.extensions.themes_plus.strip_html(data_obj.owner) + \"
      \" +\n\t\t\t\t\t\t\t\"
      \";\n\n\t\t\t\t\tXKit.window.show(\"Install Theme?\", \"Install and replace the current theme with this one?\" + mx_html, \"question\", \"
      Install
      Cancel
      \");\n\n\t\t\t\t\t$(\"#xkit-themes-plus-confirm-input-code-install\").click(function() {\n\n\t\t\t\t\t\tXKit.extensions.themes_plus.current_theme = data_obj;\n\n\t\t\t\t\t\tXKit.extensions.themes_plus.save_theme();\n\n\t\t\t\t\t\tXKit.tools.remove_css(\"themes_plus_current_theme\");\n\n\t\t\t\t\t\tXKit.extensions.themes_plus.cp(true);\n\n\t\t\t\t\t\tXKit.extensions.themes_plus.render(true);\n\n\t\t\t\t\t\tXKit.window.close();\n\n\t\t\t\t\t});\n\n\t\t\t\t});\n\n\t\t\t});\n\n\t\t});\n\n\t\t$(\"#xkit-themes-plus-delete-theme\").click(function() {\n\n\t\t\tXKit.window.show(\"Delete Theme\", \"You sure you want to delete this theme?
      You can not undo this with the Cancel button on the control panel, by the way.\", \"warning\", \"
      Delete theme
      Cancel
      \");\n\n\t\t\t$(\"#xkit-themes-plus-delete-theme-confirm\").click(function() {\n\n\t\t\t\tXKit.storage.set(\"themes_plus\", \"current_theme\", \" \");\n\n\t\t\t\tXKit.tools.remove_css(\"themes_plus_current_theme\");\n\n\t\t\t\tXKit.extensions.themes_plus.current_theme = XKit.extensions.themes_plus.blank_theme_obj();\n\n\t\t\t\tXKit.extensions.themes_plus.cp(true);\n\n\t\t\t\tXKit.extensions.themes_plus.render();\n\n\t\t\t\tXKit.window.close();\n\n\t\t\t});\n\n\t\t});\n\n\t\t$(\"#xkit-themes-plus-cancel\").click(function() {\n\n\t\t\tXKit.extensions.themes_plus.load_theme();\n\n\t\t\t$(\"body\").animate({ paddingLeft: \"0px\" }, 600);\n\t\t\t$(\"#xkit-themes-plus-container\").animate({ left: \"-350px\" }, 600, function() {\n\t\t\t\t$(\"#xkit-themes-plus-container\").remove();\n\t\t\t\tXKit.tools.remove_css(\"themes_plus\");\n\t\t\t});\n\n\t\t});\n\n\t\t$(\"#xkit-themes-plus-save\").click(function() {\n\n\t\t\tXKit.extensions.themes_plus.current_theme = XKit.extensions.themes_plus.create_theme_obj_from_settings();\n\n\t\t\tXKit.extensions.themes_plus.save_theme();\n\n\t\t\t$(\"body\").animate({ paddingLeft: \"0px\" }, 600);\n\t\t\t$(\"#xkit-themes-plus-container\").animate({ left: \"-350px\" }, 600, function() {\n\t\t\t\t$(\"#xkit-themes-plus-container\").remove();\n\t\t\t\tXKit.tools.remove_css(\"themes_plus\");\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\tsave_theme: function() {\n\n\t\tvar save_str = \"XKIT-BTOA!!\" + window.btoa(unescape(encodeURIComponent(JSON.stringify(XKit.extensions.themes_plus.current_theme))));\n\t\tXKit.storage.set(\"themes_plus\", \"current_theme\", save_str);\n\n\t},\n\n\tstrip_html: function(txt) {\n\n\t\treturn txt.replace(/(<([^>]+)>)/ig, \"\");\n\n\t},\n\n\tcreate_theme_obj_from_settings: function() {\n\n\t\tvar m_theme_obj = {};\n\n\t\t$(\".xkit-themes-plus-option-checkbox\").each(function() {\n\n\t\t\tvar m_option_id = $(this).parentsUntil(\".xkit-themes-plus-option\").parent().attr('data-option');\n\t\t\tm_theme_obj[m_option_id] = $(this).hasClass(\"selected\");\n\n\t\t});\n\n\t\t$(\".xkit-themes-plus-option-color\").each(function() {\n\n\t\t\tvar m_option_id = $(this).parentsUntil(\".xkit-themes-plus-option\").parent().attr('data-option');\n\t\t\tm_theme_obj[m_option_id] = XKit.extensions.themes_plus.rgb_to_hex($(this).css(\"background-color\").replace('rgba', 'rgb'));\n\n\t\t});\n\n\t\t$(\".xkit-themes-plus-option-panel-text\").each(function() {\n\n\t\t\tvar m_option_id = $(this).parentsUntil(\".xkit-themes-plus-option\").parent().attr('data-option');\n\n\t\t\tvar m_val = $(this).val();\n\n\t\t\tif (m_val === \"http://\") { m_val = \"\"; }\n\n\t\t\tm_theme_obj[m_option_id] = m_val;\n\n\t\t});\n\n\t\tm_theme_obj.creator = \"theme_plus\";\n\t\tm_theme_obj.creator_version = XKit.installed.version(\"themes_plus\");\n\t\tm_theme_obj.id = XKit.tools.random_string() + new Date().getTime();\n\n\t\treturn m_theme_obj;\n\n\t},\n\n\trgb_to_hex: function(rgb) {\n\n\t\t// From: http://stackoverflow.com/questions/1740700/how-to-get-hex-color-value-rather-than-rgb-value\n\n\t\trgb = rgb.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);\n\t\tfunction hex(x) {\n\t\t\treturn (\"0\" + parseInt(x).toString(16)).slice(-2);\n\t\t}\n\t\treturn \"#\" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);\n\n\t},\n\n\tcpanel: function(div) {\n\n\t\tXKit.tools.add_css(\"#xkit-themes-plus-cp { padding-top: 71px; text-align: center; color: rgb(140,140,140); }\", \"themes_plus_cp\");\n\n\t\tif (XKit.installed.check(\"themes\") === true) {\n\t\t\tif (XKit.installed.enabled(\"themes\") === true) {\n\t\t\t\t$(div).html(\"
      Please remove Themes extension first.
      \");\n\t\t\t}\n\t\t}\n\n\t\tvar m_html = \"
      \" +\n\t\t\t\t\t\"Please click the button below to edit and view themes.
      Open Themes+ Control Panel
      \" +\n\t\t\t\t\"
      \";\n\n\t\t// Hackily append out of scope of preferences because that css is really\n\t\t// messed up\n\t\t$(div).after(m_html);\n\n\t\t$(\"#xkit-themes-plus-cp\").click(function() {\n\n\t\t\tXKit.extensions.themes_plus.cp();\n\n\t\t});\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.tools.remove_css(\"themes_plus_cp\");\n\t\tXKit.tools.remove_css(\"themes_plus\");\n\t\tXKit.tools.remove_css(\"themes_plus_current_theme\");\n\t\t$(\"#xkit-themes-plus-container\").remove();\n\t\t$(\"body\").animate({ paddingLeft: \"0px\" }, 600);\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBNkFCQjk2QTc0MjkxMUUzOTBFRUJGQkQ2OUI3MkJCMiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBNkFCQjk2OTc0MjkxMUUzOTBFRUJGQkQ2OUI3MkJCMiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","css":"#xkit-themes-plus-container {\n\n\tposition: fixed;\n\tleft: -250px;\n\twidth: 330px;\n\tbackground: rgba(0,0,0,0.57);\n\tbox-shadow: inset -2px 0px 2px 0px black;\n\tz-index: 80000000;\n\theight: 100%;\n\ttop: 0;\n\tborder-right: 2px solid rgba(0,0,0,0.46);\n\n}\n\n#xkit-themes-plus-install-info {\n\tborder: 1px solid rgb(190,190,190);\n\tborder-radius: 4px;\n\tpadding: 10px 14px;\n\tline-height: normal;\n\tmargin-top: 10px;\n}\n\n#xkit-themes-plus-install-info-title {\n\tfont-weight: bold;\n\tfont-size: 15px;\n\tmargin-bottom: 5px;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n\n#xkit-themes-plus-install-info-description {\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n\n#xkit-themes-plus-install-info-owner {\n\tfont-size: 12px;\n\tcolor: rgb(130,130,130);\n\tmargin-top: 8px;\n\tborder-top: 1px dotted rgb(200,200,200);\n\tpadding-top: 9px;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n\n#xkit-themes-plus-share-code {\n\n\theight: 203px;\n\tborder: 1px solid rgb(190,190,190);\n\tmargin-top: 10px;\n\n}\n\n#xkit-themes-plus-share-code-inner {\n\n\tfont-family: \"Courier New\", Courier, monospace;\n\tfont-size: 14px;\n\tbackground: rgb(244,244,244);\n\tpadding: 15px;\n\tword-wrap: break-word;\n\t-moz-user-select: text !important;\n\t-webkit-user-select: text !important;\n\tuser-select: text !important;\n\n}\n\n#xkit-themes-plus-container * {\n\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\n}\n\n#xkit-themes-plus-container input,\n#xkit-themes-plus-container textarea {\n\n\t-moz-user-select: text !important;\n\t-webkit-user-select: text !important;\n\tuser-select: text !important;\n\n}\n\n.xkit-themes-plus-option-color {\n\twidth: 16px;\n\theight: 15px;\n\tbackground: red;\n\tmargin-right: 14px;\n\tborder-radius: 3px;\n\tborder: 1px solid rgba(0,0,0,0.33);\n}\n\n#xkit-themes-plus-sidebar .pane .slider {\n\n\tbackground: rgba(255,255,255,0.66);\n\n}\n\n.xkit-themes-plus-option-panel.xkit-themes-plus-option-panel-flush-left {\n\tposition: absolute;\n\ttop: 10px;\n\tright: 0px;\n}\n\n.xkit-themes-plus-option:first-child {\n\tborder-top-left-radius: 4px;\n\tborder-top-right-radius: 4px;\n}\n\n.xkit-themes-plus-option:last-child {\n\tborder-bottom-left-radius: 4px;\n\tborder-bottom-right-radius: 4px;\n}\n\n.xkit-themes-plus-option {\n\tbackground: white;\n\tmargin-top: 1px;\n\tpadding: 10px 12px;\n\tposition: relative;\n}\n\n.xkit-themes-plus-option-title {\n\tfont-weight: bold;\n\tfont-size: 13px;\n\tmargin-bottom: 3px;\n}\n\n.xkit-themes-plus-option-panel-text {\n\tbox-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\twidth: 100%;\n\tborder: 1px solid rgb(160,160,160);\n\tpadding: 5px 10px;\n\tborder-radius: 4px;\n}\n\n.xkit-themes-plus-separator {\n\tcolor: rgba(255,255,255,0.77);\n\tpadding-bottom: 0px;\n\tmargin-bottom: 7px;\n\tmargin-top: 20px;\n\tpadding-left: 0px;\n\ttext-transform: uppercase;\n\tfont-size: 12px;\n}\n\n.xkit-themes-plus-big-ass-button {\n\tbackground: white;\n\tborder-radius: 5px;\n\tmargin-top: 15px;\n\tpadding: 7px 10px;\n\tcolor: rgb(110,110,110);\n\tcursor: pointer;\n\ttext-align: center;\n}\n\n#xkit-themes-plus-titlebar {\n\tbackground: rgba(255,255,255,0.38);\n\theight: 35px;\n\tpadding-top: 7px;\n\tpadding-left: 13px;\n\tpadding-right: 9px;\n}\n\n.xkit-themes-plus-titlebar-button.xkit-themes-plus-titlebar-button-right {\n\tmargin-right: 6px;\n\tfloat: right;\n}\n\n.xkit-themes-plus-titlebar-button.xkit-themes-plus-titlebar-button-right:last-child {\n\n}\n\n.xkit-themes-plus-titlebar-button {\n\tdisplay: inline-block;\n\theight: 24px;\n\tline-height: 24px;\n\tbackground: rgba(0,0,0,0.35);\n\tpadding: 0px 6px;\n\tfloat: left;\n\tmargin-right: 6px;\n\tborder-radius: 4px;\n\tborder: 1px solid rgba(0,0,0,0.36);\n\tbox-shadow: inset 0px 1px 0px rgba(255,255,255,0.22);\n\tcolor: rgba(255,255,255,0.66);\n\tfont-size: 12px;\n\ttext-shadow: 0px -1px 1px rgba(0,0,0,0.66);\n\tcursor: pointer;\n}\n\n.xkit-themes-plus-titlebar-button:hover {\n\tcolor: rgba(255,255,255,0.86);\n\tbackground: rgba(0,0,0,0.45);\n\tborder: 1px solid rgba(0,0,0,0.46);\n}\n\n.xkit-themes-plus-titlebar-button:active {\n\tcolor: rgba(255,255,255,0.46);\n\tbackground: rgba(0,0,0,0.55);\n\tborder: 1px solid rgba(0,0,0,0.66);\n\tbox-shadow: inset 0px 1px 2px 1px rgba(0,0,0,0.42);\n}\n\n.xkit-themes-plus-big-ass-button:hover {\n\tbackground-color: rgb(245,245,245);\n\tcolor: black;\n}\n\n.xkit-themes-plus-big-ass-button:active {\n\tbackground-color: rgb(215,215,215);\n\tcolor: black;\n\tbox-shadow: inset 0px 1px 2px 1px rgba(0,0,0,0.42);\n}\n\n#xkit-themes-plus-current {\n\tbackground: rgba(255,255,255,0.08);\n\tpadding: 10px 15px;\n\tborder-radius: 3px;\n\tcolor: white;\n\tborder: 1px solid white;\n}\n\n#xkit-themes-plus-sidebar-content-inner {\n\tpadding: 0px 15px 15px 15px;\n\tmargin-bottom: 45px;\n}\n\n#xkit-themes-plus-current-title {\n\tfont-weight: bold;\n\tfont-size: 16px;\n}\n\n#xkit-themes-plus-current-description {\n\tcolor: white;\n\tborder-bottom: 1px dotted white;\n\tpadding-bottom: 6px;\n\tmargin-bottom: 6px;\n}\n\n#xkit-themes-plus-current-owner {\n\tfont-size: 12px;\n\tcolor: rgba(255,255,255,0.66);\n}\n\n.colorpicker {\n\twidth: 356px;\n\theight: 176px;\n\toverflow: hidden;\n\tposition: absolute;\n\tbackground: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWQAAACwCAYAAAA4wxStAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABwtJREFUeNrs3U9rW1cawOFzZcWtpah1qCGJCa13A7OPod21UEqg60IplPkAA/NZBmbZVb9FKbMbZqDdjyjtQski6SKlSRVJxJGtnuORM3dC/0nnyD7jPg8cEkSu47y++nFyJV83i8UinGma5rX4y424duN6KQCwCU/jehTXt7HB3z1vcApyDPEg/v4Pcb1iTgDn6oe4vootHneWD4gxwMV4Zdng0F1epjiLcTeuj+N6L649cwLYiIdxfRbXp3HNU4NTi1OA91t/6E83b978cH9/P2xvbxsZwAYcHR3t3b9//6MHDx6kqxSfLB/eT0Hebf25O7du3QqPHz8ODx8+NDWADdjb2wuptTHId1pB3k11vtL6c7vdbleMATYoNTa19oUN8ZWO0QDUQZABBBkAQQaoUHfVA3Z2dsLBwUG4OhiYHsU9GY/DaDQKs9ls5WNff+ONMIjnZZPx96cbCYzj53Dv7t3guVHma2Yuv/1cXjnIYswmpXMrnWPD4XDlGF+/fr3I59Dr9U5/XTXKv9fnxq99zczlt5/L3XX+kuTLL75QD4q7fXi41pN3sDzmb//8V+i2bpi1qnnThD+/9ebzj+e5kf81M5cNXrKAGqX/Fp/uxp4ch+5JRpA7zf98PDhPgswlky43LDKOb4wQQQZBRpDhUukLMoIMdXDtF0GGSvSMAEEGQQZBhpZ+gY8xMUYEGerYIQsyggwFpBf1cu9mAYIMhXbIgowggyCDIMOZviAjyFCHdA055+cunBghggxl9AQZQQZBBkGGlr4gI8hQh3QNeSvj+GMjRJChjJ4gI8ggyCDI0NIXZAQZ6rCTeVrPjRBBhjJ6gowgQx36gowgQw1OwstxdTOOF2QEGYqY2h8jyCDIIMjQMhFkBBnqMAvehYwgQxWmFxjkJ+NxuDoYhNuHh7+7uad/u7msNpef0vEU5rIFOXetazQarfwEvCzRSf92c1ltLnbIXHqTC9whz2azMBwOfRHMZW2CzOV68gd3Q0aQoQpTQUaQQZBBkKFlIsgIMtQhXUNuMo5fGCGCDGVMBRlBBkEGQQZBRpChziCDIIMggyBDySC7wQuCDJUE+aoxIshQJsg5L8w1gowgQz1BBkEGQUaQQZAFGUGGDQQ55wZB3mGBIEMhT7dikDO2uR1FRpChkJ3gmgWCDFXoCzKCDHXoCTKCDIIMggwtO0aAIEMd+kaAIEMdegU+xrExIshQR5DHxoggQ750DTn3ZzgJMoIMBfSDH6qHIEMVeoKMIIMggyBDS7qGnHODoBMjRJCh3A5ZkBFkqEBfkBFksEMGQQZBRpChPulFva2M433bNIIMhfQFGUGGOvQEGUEGQQZBhpadzLN6boQIMpTRF2QEGerQE2QEGeqwPc87qzuKjCBDIRNbZAQZ6jAVZAQZ6jAL3veGIEM1O2RBRpChAhNBRpDBDhkEGQQZQYb6pBf13BAZQYYKTAQZQYY6TAUZQQZBBkGGlnQNuck4fmGECDKU2yELMoIMFZgIMoIMdsggyNAyMwIEGerZIYMgQwUmBT7GtjEiyFDHDlmQEWQoIF1DznlhLr0guGuMCDKU2SHnBhkEGQqYCDKCDHbIIMjwQpBzbhDUMUIEGUq4EuYxx+sHuSPICDKU0QsuWCDIIMggyCDICDJUpy/ICDLUYccIEGSoQ88IEGS4PEE+MkYEGfL1BRlBhjqka8i5P8Dpe2NEkCFfL/iJeggyCDIIMvxXX5ARZKhDuoacc3ugEyNEkKGMniAjyCDIIMggyAgy1BnkrYzjj40QQQZBBkFGkAUZQQZBBkHmUgc556SeGyGCDIIMgowgCzKCDOX1BRlBhjpsPY0r45W5hSIjyFDI1BYZQQZBBkGGF4LsjcgIMggyCDIIMoIMggyCDD8XZDdERpBBkEGQQZARZKjMRJARZKjDLK4m4/iFESLIUMZUkBFkEGQQZBBkBBkEGQQZfiHIIMggyCDIUDLILxsjggz5JoKMIEMd0jeG5Lww1xghggxlTAUZQQZBBkGGlokgI8hwoY6Pj0O32w3To27YWqx/y7bjpvP840H1QX4yHoerg0G4fXhoemxEOsdWNY7HXLt2LXzw9jtFPofxGp8DnHuQR6NRODg4OI0ybCLG6Rxb1d3lMYN4XjbN+tcdFovFaYzvrvE5wLkHeTabheFwaHJU5dmzZ+Gbr782CP6vdYwAQJABEGQAQQbgF4LcfsPl7OTk5PSVagA2IzV2Pp+n3z5qPfysu3zgteUDf79379776W1tAGzO8u2d/2g99Ci9YfNGXH9cPvBSXH+J693gcgbApqRvJ/08rr/G9XT52L+b9Eb4pmlup120GQFciHFs8Zdnu+Cv0gNmAnD+MV42OJzukM/EnfJ++M8ljFeD+14BbEoK7+O4vo0Nvn/24I8CDABMze9K75PmggAAAABJRU5ErkJggg==');\n\tfont-family: Arial, Helvetica, sans-serif;\n\tdisplay: none;\n\tz-index: 100000000;\n}\n.colorpicker_color {\n\twidth: 150px;\n\theight: 150px;\n\tleft: 14px;\n\ttop: 13px;\n\tposition: absolute;\n\tbackground: #f00;\n\toverflow: hidden;\n\tcursor: crosshair;\n}\n.colorpicker_color div {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 150px;\n\theight: 150px;\n\tbackground: url('data:image/png;base64,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');\n}\n.colorpicker_color div div {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 11px;\n\theight: 11px;\n\toverflow: hidden;\n\tbackground: url('data:image/gif;base64,R0lGODlhCwALAJECAAAAAP///////wAAACH5BAEAAAIALAAAAAALAAsAAAIflINoG+AeGFgGxEaXxVns2X2dh4CZJXBadDxQlihGAQA7');\n\tmargin: -5px 0 0 -5px;\n}\n.colorpicker_hue {\n\tposition: absolute;\n\ttop: 13px;\n\tleft: 171px;\n\twidth: 35px;\n\theight: 150px;\n\tcursor: n-resize;\n}\n.colorpicker_hue div {\n\tposition: absolute;\n\twidth: 35px;\n\theight: 9px;\n\toverflow: hidden;\n\tbackground: url('data:image/gif;base64,R0lGODlhIwAJAJEAADk5OVtbW////wAAACH5BAEAAAIALAAAAAAjAAkAAAInTISpy50WwHG0imiAtFxF+W2dFWaaODYheE6pU37uC2vZTNdQ3hkFADs=') left top;\n\tmargin: -4px 0 0 0;\n\tleft: 0px;\n}\n.colorpicker_new_color {\n\tposition: absolute;\n\twidth: 60px;\n\theight: 30px;\n\tleft: 213px;\n\ttop: 13px;\n\tbackground: #f00;\n}\n.colorpicker_current_color {\n\tposition: absolute;\n\twidth: 60px;\n\theight: 30px;\n\tleft: 283px;\n\ttop: 13px;\n\tbackground: #f00;\n}\n.colorpicker input {\n\tbackground-color: transparent;\n\tborder: 1px solid transparent;\n\tposition: absolute;\n\tfont-size: 10px;\n\tfont-family: Arial, Helvetica, sans-serif;\n\tcolor: #898989;\n\ttop: 4px;\n\tright: 11px;\n\ttext-align: right;\n\tmargin: 0;\n\tpadding: 0;\n\theight: 11px;\n}\n.colorpicker_hex {\n\tposition: absolute;\n\twidth: 72px;\n\theight: 22px;\n\tbackground: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAAAsCAIAAABJ6mlcAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHotAACAlQAA+NcAAIhSAABxRQAA6mYAADkHAAAh+QMnhVYAAAGaSURBVHja7Jixa8JAFMa/JAdmyGJB4iIdAhqySSfplH9Gi3+P0PjX3FSciuBQ3Iq4GFwP7GLpcCDXi1LRQF8e900fyQXej/eS3H1ekiRRFIGXlFIiiqL9fs8MrNPpCAC+74OdBIAgCHiCCSFueJLgm6mUqgEMwHa7pUPV6/VMkLvAyI2fAeLrd+ysZrOZZUwRBDNr8/VX8awArFYr01h3qcmsTQD4OhysFa9FoY2U8nTRWtYKQ2pgpwpbYegD+K5oMh4DyPM8z3NtqssIdsysTQCA511a2u/3LUNaBogAUMUq5nNzDqWUL5NJA7isH7R3rmN6/KSU2gBIBwPyDfvdsUujmKapZZo2ihWw6XSqr59MQ7i8v0cxyzLLMAG7cnvGEOx4PLLtGPXzGE8wpRTPMOeh3e7GMTOwXVmKbhy/L5fMwJ6GQ5dSNRHstswjo7eB/Fiv6wlz3hYLOlTPo5FLqVxKRUT1pFQEZVboUiqXUv0n1zXHFpdSUR5Fl1JxALtye8YQ7HOzYdsx6ucxnmC7snwkFujWEub8DAA5n9W+w+9WGgAAAABJRU5ErkJggg==') top;\n\tleft: 212px;\n\ttop: 142px;\n}\n.colorpicker_hex input {\n\tright: 6px;\n}\n.colorpicker_field {\n\theight: 22px;\n\twidth: 62px;\n\tbackground-position: top;\n\tposition: absolute;\n}\n.colorpicker_field span {\n\tposition: absolute;\n\twidth: 12px;\n\theight: 22px;\n\toverflow: hidden;\n\ttop: 0;\n\tright: 0;\n\tcursor: n-resize;\n}\n.colorpicker_rgb_r {\n\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAABCCAIAAACAQ/KpAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHotAACAlQAA+NcAAIhSAABxRQAA6mYAADkHAAAh+QMnhVYAAAOwSURBVHja7JlBSxtBFMffxmUTYwi2a1ghpqEY19hLDJ6kxyL4ESoeFAwIihZB8OZZyMG0nrTipxAsDQEvVVKoUTRtTBQbtGKIFoTdbHSzsYeNy7qbJkGZdJbmMYdh5g3zZ+bN7rzfEJ2dnTabDYxmHMeRNpstm80aTrrD4SABwGQygQGNBICmpiajSidJ8hEjUZ8QjuNQSQeA09NTRLpdLldVVU+SjjYeapGuj/WpqSmlLghCNBrd39+vs/SqJ9Akf2E05vF4Njc319bW1tfXc7lcIBBwOp0aH9TS1XPt7e3pZycBIC8I+pHxePz8/PzX2dnXaPTj6irDMPGDA6vVqjiYLRak0hVVPxIJAIjFYj1er3p2EgCKxaJ+pMfjcTgcZrO5t7e3paVla2uL53kLYrlqU1R1s2wylZLrbFfXg1gHgtCPnJyclCuXl5fz8/PJZNLtdpf1RGWquViWLX9My8qZmZnZ3d0dHBycm5uz2+2ujg6L2VzPY6qoShweyhVvd7f2mBI6k/teuFw/T04+bWzMzs46nc6yPigXvWRyiBMEcZhMqmc3lbZGU5QtI4jP4XA2m307NJS/uSnjgzRg7ktPTw8AeL1e9eyEz+e7vb3VjGJZNhKJ0DQtf1JaW1tFUUyn021tbYoPRVFI/6Z6VWqjKIqU90LTkUqlaJq2WCxy1/X1tSiKVqu1WCzW7a5WNSYJn89XKBRQ/KifaJVVkfL0jztzkiT921V/vHQs7utGlc5xnFHT6ufPnrUzjOGkX2QyZDvDfIvFDCe9z+9vEAFjEYFXqos/CvueSCBMq79sbyPS/bq/v0EEGkQAFyKA2ioTgZL0BhFoEIEGEcCaCJRPNUKh0NHREU3TBEHk8/nFxUVRFHmeb25urmOoP1Alq6+eJRmCCPw1wdOkThRFURSlv2kYMq0+SacbROA/JAIXmYzb5TJiWm3IrBQA7HY7pkSgz+9/MzBQwSESDuNLBKoyTXyJQE3S8SQCoigalQhUftXAmgjUtOp4EoGqsY4vEZBUtrCwID20kvS8IGiKTASOj49jOzvvQyGe5xmG+X11pfGpj/RgMAgAwWBQIx1fIiDdP4O9m57+sLQk16dVkYwvESioYn1iYkLfiC8RUB4fl5eX5cr4+LgxiIBUKMglMDYmi1xZWVEasSYCBUlSyujoKACMjIwoLVgTAc1r9fDwsKYFXyIgVXv+x5cI1HRzxJAIvHS7EUpHHjDlfpTGkF6suur4EoG7uwqdOUH4MwCllHKmGpTirAAAAABJRU5ErkJggg==');\n\ttop: 52px;\n\tleft: 212px;\n}\n.colorpicker_rgb_g {\n\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAABCCAIAAACAQ/KpAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHotAACAlQAA+NcAAIhSAABxRQAA6mYAADkHAAAh+QMnhVYAAAOzSURBVHja7JnPT+JAFMdfobBst1GoCh5Es0pQNtGGeCLG08a7d2MkkURjoht//A0uiVEOXhT/B68edI+rB7MhXNjSkKgRVJbIqbEqre6h0i2UUKI77DTLSw9kmMn78vhOp+9TYmBggKZpMFsIgkDSNF0oFEwnvauriwQAi8UCJgwSAKxWq1mlkyT5ipWod4ggCKikA8Dl5SUi3V6v11DVm6Sj9UMj0mt6fXh4eGRkxOfzFYvFTCZzcHDQZOmGO9Ci3GGqgmXZSCRSKpX29vaOjo7Gx8enp6er5qCWrs2VTCb12UkAuBfFqmWTk5P7+/vb29vt7e00Tefz+fn5+evra5fTqc5553Agla6q+slxAJBIJAJDQ9rsFgB4qgyXy8UwzMnxcQfDeNzuDxR1lcutra0Vb28lSVKnoa66mmjQ7ycIgiAILp3WZicBAAhCu6ajsxMAsrnce4ryDw6urq4q45ubmzzPN8/sGlV+v7+214nKK5fNAoDP57PbbLls9uv6+vLyMgBks1nx7k6dhlx5+UqXQyuyLL0yRFHkeT4cDltJUhTFs/Nzt9tdLsSfQF/0l1AsThBEmue12WsYBgB2dnYWFxfj8TjP8xRF9fT0cByXyWQYhgGCaL5hAoEAAAxptikAECzLPj4+6hfKsux0Ont7e202WzKZTKVSym9Qb7d2ux3paVpTlRp2u51U/ouah5kgCKenpw8PDwDQ39/vQHw31BvGYALLspIkoTio3xj1VZFK+tftOVmW/23VXy8di+d1s0oXBMGsbTXjcnV7PKaTfpPPk90ez49EwnTSR4PBFhEwFxH4VPlE8dcjxXEI2+rvJyeIdI+FQi0i0CICuBAB1FGfCLxUvUUEWkSgRQSwJgK1W437+/toNKonAg6Ho2l9SVUiRX1DXRL+RMCgwaNpuk4PNRYKmbKtPru4aBGB/5AI3OTzfV6vGdtqU3alANDW1oYpERgNBj9PTNSZ8O3wEF8iYMg08SUCDUnHkwiUSiWzEoH6bzWwJgINVR1PImDodXyJgKyJaDQqVwbWRECt+tbWFgBsbGysrKyYgwjIkqRcX5aWlKYuFoupg1gTAUnj9YWFBf0gCbr2XiUCV7mcQgR+FQqxWEwhAhRFNUl6+eXj7u6u8mFubk4HM7AkAqo3IrOzSup4PG5gGEyIgNYb4XAYAGZmZnSGwZIIVL2tnpqaqhrBlwjIRq//8SUCDT05YkgEPvb1IZSO3DBGpx6+0p8Mq44vEXh+rvPlnSj+HgA0S90s9ElKvAAAAABJRU5ErkJggg==');\n\ttop: 82px;\n\tleft: 212px;\n}\n.colorpicker_rgb_b {\n\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAABCCAIAAACAQ/KpAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHotAACAlQAA+NcAAIhSAABxRQAA6mYAADkHAAAh+QMnhVYAAANQSURBVHja7JpBSxtBGIa/3Wyt4pqwosaDUWrWmPS2eDF48FAM3urdg4IFIagFf4UgSKi56A+wf8CbBBQpHtKSg7CJ5hAXL0aPbrLFZLM9jG432ZgN1kln2v3wMG5mmIfhnc3MQ5hgMMjzPNBWqqpyPM/f3d1Rhz44OMgBAMuyQGFxAODxeGhF5zjuBSNx7xBVVXGhA8D19TUm7kAg4Ej1R+h489AOuj3r6+vrZvv8/Pz4+Ljz6I47sPkbRhTFVCp1e3vb29sbi8UMwzg9PW3oYxgGVnQrVSaTkSSpYXYOAH5qmn3k4eFhoVB4w3F9fX3BYPDrwcHAwIC1w9vubqzoJlU2l0P0kXDYOjsHALVazT5yfn6+XC57vd7p6elEIlEql/ubdcNXJtVkKHSZz6N2aGKiLjDAMPaRoihqmsaybE9Pj8/nEwShaTeMZZkuFAo1z3pTomQymc1mPSz7cWEhHo9/T6c7C/6bKndxgRrhycm6zQAAjK3QZ/6hodHRUUEQAKBwdVUzDHsfnIv+WCjiDMNcXF5aZ382MGtra5VKhef5kZGRk5OTv3BesFBFIhEACFu26VNgbOiJREJRlK6uLoZh7u/vZVn2+XxMZ7PeMB2id0bP5/OlUsn8d3x8vBvzq9AR/Zlt2qxTO6erQCBAIrpj6bpO6KrTcV6nFV1VVVqv1f2CMOz3U4d+Uyxyw37/j0yGOvQpSXKNAF1G4H39ieLVS87lMF6rv52dYeKeiUZdI/CPGQHc1doIPKK/zAjgrtZG4BHdNQKuEXCNgGsEXCPwmkZgJhql8lpdUBTXCPyHRuCmWBzDKbHwXaupvJUCgNfrJdQITEnSh7m5Fh1SR0fkGgFHp0muEWgLnUwjUKlUaDUCDw8PtBqBtladTCPgmHUWvWEaShRFRVHS6bQsy7FYbHZ21t6nA+hmbW1t6fVFtBEwV31nZwcAtre3Nzc36TACerWKGp83Nr7s7qL2hiXJ5BqBqiXr8Xjc/pBcI1B9WvW9vT3UWF1dpcMI6NUq+vu0soIg9/f3zYdEGwFrNpaXlwFgaWnJFhgijYAZGFSLi4sNT8g1Ano9KE1GoK2TI4FG4N3YGEZ07IFx+gYkF73muOrkGoGWPwEta9qvAQBPtPTdMmi31AAAAABJRU5ErkJggg==');\n\ttop: 112px;\n\tleft: 212px;\n}\n.colorpicker_hsb_h {\n\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAABCCAIAAACAQ/KpAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHotAACAlQAA+NcAAIhSAABxRQAA6mYAADkHAAAh+QMnhVYAAAN6SURBVHja7JnPSuNAGMC/aVJta1FqqO3BRhZrbfcixVP1uAi+gCcPCi4Igq6PUelFdr3oK/gIssfFi6V42cZNYREVLF6KxEbbJtnD1BCTtBHd2c6w+QhlJvnC/Jh++TO/oOnp6Wg0CqyFoih8NBq9u7tjDj0ej/MAEAgEgMHgAYDjOFbReZ5/w5mkrxBFUUihA8DV1RUh7lQq5Un1LnSy9eBFFcC1bovd3V1RFM3uysrKwsKCLYc0Otc3uugBR6TT6Uaj8fT0hLuTk5PBYLDRaFhzSKNbxzo/P7cRdgvmUVWdZ6qqqjabCAAAdE1rt9vNh4dIOGwmDIdCRNFNqqokAUClUslls9bReQDQdd155vLycrPZDPI8AIwLgmEYhmG4ZhIKc6zZTOaXLON2ZmbmxWUKCDnPTKfTqqrivyYcDuu6Dgi5ZpIKy1iZTMb9DuOKc3BwUK1WuUAAAIp7e4Zh9MokRf7ckC4ucCM7O+tA7zGXiYmJSCQCAKHhYZ7nUe9MMpPeHSuXzVYlCXet9D0LprsfHzJ/B1QwuVwOALKWyxQAuGQyqes6ehmyLJfL5UgkMjQ0hBC6vr4+OztrtVojIyNmDsdx9/f3hLDHxsZsVPF43NrlOM69YGRZFgQhFArhQzc3NwihWCw2kILpmTA3N9fpdEg8qN8Z/al4PPzb5lLTtMHO+tvRqXhfZxVdURRWl9XjsVgykWAO/bZe55OJRLlSYQ59Pp/3jQBbRuDjyzeKvx4/JYngsvrH6Skh7sVCwTcCvhGgxQiQjv5GoIvuGwHfCPhGgGoj4D7r+/v7tVpNEAR86Pj4uFarwYBm3Urvjc6EEehZ67alU9jtjr5YKDC5rP59eekbgf/QCNzW61OpFIvLaiZXpQAwOjpKqRGYz+c/LS31Sfh+ckKvEfB0mvQagVeh02kE2u02q0ag1WqxagQ8Z51eI6D1DaqNgBW0WCy6oz+qqm0zjQDumkbAlvNv0EulEgCUSiUbOr1GQHv+DPZlZ+frt2+4vbO9zYAR6Fju61tbW86d9BoB8+Pj4eEhbmxubtrvMMgRphEQRVEURasRsOUQLRi8fd7YwJBHR0fmTqqNgLU21tfXAWBtbc1RMFQaAdvX6tXVVdseeo2A5vX5n14j8Ko3RwqNwIepKYLoxAvG6/FHL7ruOev0GgHD6HOwqap/BgCyOj0SRJlwPQAAAABJRU5ErkJggg==');\n\ttop: 52px;\n\tleft: 282px;\n}\n.colorpicker_hsb_s {\n\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAABCCAIAAACAQ/KpAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHotAACAlQAA+NcAAIhSAABxRQAA6mYAADkHAAAh+QMnhVYAAAQZSURBVHja7JpBSNtgFMdfanRVgm0zpNUtk7VrV3fpiiDI8LTtpBXBowcLHQiCDoTZq8eCKOi8KHj0KB42bEB21NaC9DDZ2lqUaQ9TD2rJ7GqTdodolyYl6dy+Ltn6J4eQvo/3J335vrzfF8xmsxEEAVoTwzA4QRCnp6eas97S0oIDgE6nAw0KB4C6ujqtWsdx/BYjUT8hDMOgsg4AR0dHiHxTFKXo6reso62HSqxLa72xsXFoaIgkyUwmk0wmg8Fg9a0rPoHlZxi/3395eUnTtF6vHxgYaGpqWltbE8UUCgWk1oWuotGo2+0WZccB4HsmIxpmMpnm5ubC4bDBYMjlcm1tbQcHB60WizDmjl6P1HrR1edYjHff4XQKs+MAkM/nRcMSicTU1NTOzs7ux4/xeHx9fb1QKEjDkKqY7rHDkdjb488ddvvPirJYLCzLAoYJj1AolEwmzWazp7//+YsX6XT64uJCFFNfX59OpxH5NhgMQld3byTMrgMArPR4QFEejyceiy0sLHg8ntXVVZ/Px7KsKAy1ioniNxJl1wEAVirAsL6+PpvNZjQY7t+7941hAODk5CRfKJSEobZ+I77EMQyLJxLC7DgfJRyTSqU2NzffTE4eHh5ms1m73U7T9PXahmHVK3ZBro6ODgBwCh5TAMBcLtfV1ZV0IEmSra2tRqMxHA7v7u6SJGk2m4UBDQ0NSFfTsq6E2XH+v5D+dnZ2lkqlstksx3FWq1WPeCosWzAKAS6Xi2VZFAv1b0reFc6nv90zx3Hc373rt7euivd1rVpnGEarbTVpMllKZz1N6OvxMW4xm3eiUc1Z73S7a0RAW0TgSekbxR/Xp1gMYVu9GQoh8v2su7tGBP4xIoBa8kTg2vrtiABqyROBa+saJQJ42bZtZmbG6XR2dXUNe70AsLy8HIlEql3sAlcOh6NMRdWIQI0I/AoRKN9qrKysBINBngjMz8/zRKDKK5fIFe++oi5J/URArsEjCEK+gXrW3a3Jtvrgy5caEfgPicDX4+N2itJiW63JrhQAmpubVUoEOt3u5y9fygR82NhQLxFQZJrqJQIVWVcnEcjlclolAvK7GqomAhXddXUSAcVa1/EzjEh+v58kSZqmt7e3e3p6BgcHpTFVsF5UIBDgSqVqIlC867OzswAwPT09MTGhDSLA3WyDvR4fn3/7lj8fHxvTABFgBbU+OjoqvYiDpL2nKMr19On7d+8ikUggEPB6vT6fb2trq766E1Fx83FxcZE/GRkZkcAMVRIBjmX545XPx5tcWloqXlQ1ERDWhtfrBYDh4WHhRczT25vc35eOVPxG4JHVinQ1bTYaZQLS5+fqJQKc0va/eolARW+OKiQCD9vbEVpHXjBKK6B6recV77p6iYDsJ6CXmcyPAQBGu49cr2kIwAAAAABJRU5ErkJggg==');\n\ttop: 82px;\n\tleft: 282px;\n}\n.colorpicker_hsb_b {\n\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAABCCAIAAACAQ/KpAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHotAACAlQAA+NcAAIhSAABxRQAA6mYAADkHAAAh+QMnhVYAAANQSURBVHja7JpBSxtBGIa/3Wyt4pqwosaDUWrWmPS2eDF48FAM3urdg4IFIagFf4UgSKi56A+wf8CbBBQpHtKSg7CJ5hAXL0aPbrLFZLM9jG432ZgN1kln2v3wMG5mmIfhnc3MQ5hgMMjzPNBWqqpyPM/f3d1Rhz44OMgBAMuyQGFxAODxeGhF5zjuBSNx7xBVVXGhA8D19TUm7kAg4Ej1R+h489AOuj3r6+vrZvv8/Pz4+Ljz6I47sPkbRhTFVCp1e3vb29sbi8UMwzg9PW3oYxgGVnQrVSaTkSSpYXYOAH5qmn3k4eFhoVB4w3F9fX3BYPDrwcHAwIC1w9vubqzoJlU2l0P0kXDYOjsHALVazT5yfn6+XC57vd7p6elEIlEql/ubdcNXJtVkKHSZz6N2aGKiLjDAMPaRoihqmsaybE9Pj8/nEwShaTeMZZkuFAo1z3pTomQymc1mPSz7cWEhHo9/T6c7C/6bKndxgRrhycm6zQAAjK3QZ/6hodHRUUEQAKBwdVUzDHsfnIv+WCjiDMNcXF5aZ382MGtra5VKhef5kZGRk5OTv3BesFBFIhEACFu26VNgbOiJREJRlK6uLoZh7u/vZVn2+XxMZ7PeMB2id0bP5/OlUsn8d3x8vBvzq9AR/Zlt2qxTO6erQCBAIrpj6bpO6KrTcV6nFV1VVVqv1f2CMOz3U4d+Uyxyw37/j0yGOvQpSXKNAF1G4H39ieLVS87lMF6rv52dYeKeiUZdI/CPGQHc1doIPKK/zAjgrtZG4BHdNQKuEXCNgGsEXCPwmkZgJhql8lpdUBTXCPyHRuCmWBzDKbHwXaupvJUCgNfrJdQITEnSh7m5Fh1SR0fkGgFHp0muEWgLnUwjUKlUaDUCDw8PtBqBtladTCPgmHUWvWEaShRFRVHS6bQsy7FYbHZ21t6nA+hmbW1t6fVFtBEwV31nZwcAtre3Nzc36TACerWKGp83Nr7s7qL2hiXJ5BqBqiXr8Xjc/pBcI1B9WvW9vT3UWF1dpcMI6NUq+vu0soIg9/f3zYdEGwFrNpaXlwFgaWnJFhgijYAZGFSLi4sNT8g1Ano9KE1GoK2TI4FG4N3YGEZ07IFx+gYkF73muOrkGoGWPwEta9qvAQBPtPTdMmi31AAAAABJRU5ErkJggg==');\n\ttop: 112px;\n\tleft: 282px;\n}\n.colorpicker_submit {\n\tposition: absolute;\n\twidth: 22px;\n\theight: 22px;\n\tbackground: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAsCAIAAADuN9+nAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHotAACAlQAA+NcAAIhSAABxRQAA6mYAADkHAAAh+QMnhVYAAANeSURBVHja7JTfb9tUFMe/1/c6tuMfsdNkdbem6xZtbILS/ShIFG3ihYdJSNszSCDxvyHeYOrbNFaQ0OCh6yooo1PLoIvpaJvGsWM7cdzY4cFpSIMqQfIAk3bkB58rnY/uOffeDymXy4qiYNTwfZ8pilKtVkdGFItFBoDjOIwRDACldFwEY2xo1ch03hGDucOoUOvCFw+4wk+88L3ctln0jxBvzfh3zkeXZt+d1i8pzSw80felxY36zRXrLr+9olhDCGqaZjqONBZeDz56n7x36+OSykQ34GoRV+uKTfVU7sL0lbeNp2o9bu9JNjcQx2ahqIcf3G4t3vhEi6qgOjgdYhaainAK7oRWNxZv3W58OfGrvN/g3WON9E/kwjXv9NwVacZBkINkQi5CVKBpCCaR1UGMbE2eKnuv7VxfLXyTlnS7XQYgbLXSXCw3xNLsC5LkFF0RC0wxkc1D0+FOJEQLQt5pgJ8qZTZmQ7lXIogiA5AkSZq72mGgCW3EHkSdybpuZKUzRM6HVHI8OBKcDDxJcw+1fkmvERCSJjsJLLQJmAG4gAvkBYFKkg04R58bYQdJv6SH6Ge/77N1p6oUJjSEBsJJIADhABfYa8NuwY1gHTgW2+eH7gU5QjZ/lpY3f3mjoBroRGAJqAcQgoCixrCbYC/ASmWzKW3pQ7vo70p9om09tvSLl+OCQMBCkCwIgJDApajyeBYcWLXHk6fW/9bIUc6HvPaV9kj4bu7O+ahIGyAiACACPA5Wo7q+elfPPeD5YKB7UNM0kyQhRyHYAp51ntu/1ZokzE62RNNpZSqbuxv3H27fW8q1l1SlQgaCUkrm5+c7nU7/nsRxHMdxh0+C6Uz73ExHPYumxrY94fm2HFqURIwxSml/4yx9YP08/SGEsC5EC7AqQOWv0WcA8Om7wEknkr6Xf6uPYcQoyvF9f1z9TpmmoesjI+qOwwxdX11bGxlx/erVVwY/GXHtsvfhDW5x4VPNdmDV4Aaw1Vwk5abnSuWb8hdrXOvhqvr0xFn8NwbvIcYxeA/xyuD/J4MPW0vdUvGZ/8PuUmXBP/2moBfPkChy/qi++PpHe/lRDsuquj9YP4xIDS7sZPKft4NvHzw5tzVo8HxoURbF8TGDDyNeaoPXHedsqTSOfv8cAI6z+2gFO4OaAAAAAElFTkSuQmCC') top;\n\tleft: 322px;\n\ttop: 142px;\n\toverflow: hidden;\n}\n.colorpicker_focus {\n\tbackground-position: center;\n}\n.colorpicker_hex.colorpicker_focus {\n\tbackground-position: bottom;\n}\n.colorpicker_submit.colorpicker_focus {\n\tbackground-position: bottom;\n}\n.colorpicker_slider {\n\tbackground-position: bottom;\n}","title":"Themes+ (preview)","description":"Customize More","developer":"STUDIOXENIX","version":"0.2.7","details":"Themes+ lets you customize your dashboard to your liking by letting you choose the colors, the images and options yourself. You can also export and import the themes you and others made. Please note that this is the preview edition, so it's lacking some functionality.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/timestamps.json b/Extensions/dist/timestamps.json new file mode 100644 index 000000000..6fe0d1d8e --- /dev/null +++ b/Extensions/dist/timestamps.json @@ -0,0 +1 @@ +{"id":"timestamps","script":"//* TITLE Timestamps **//\n//* VERSION 2.11.5 **//\n//* DESCRIPTION See when a post has been made. **//\n//* DETAILS This extension lets you see when a post was made, in full date or relative time (eg: 5 minutes ago). It also works on asks, and you can format your timestamps. **//\n//* DEVELOPER New-XKit **//\n//* FRAME false **//\n//* BETA false **//\n//* SLOW true **//\n\n// depends on moment.js\n/* globals moment */\n\nXKit.extensions.timestamps = new Object({\n\n\trunning: false,\n\tslow: true,\n\n\tpreferences: {\n\t\tinbox: {\n\t\t\ttext: \"Show timestamps in the inbox\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\tposts: {\n\t\t\ttext: \"Show timestamps on posts\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\treblogs: {\n\t\t\ttext: \"Reblog timestamps\",\n\t\t\ttype: \"combo\",\n\t\t\tvalues: [\n\t\t\t\t\"Don't display any\", \"off\",\n\t\t\t\t\"Display only on the original post\", \"op\",\n\t\t\t\t\"Display on all comments\", \"all\"\n\t\t\t],\n\t\t\tdefault: \"op\",\n\t\t\tvalue: \"op\"\n\t\t},\n\n\t\tdisplay_title: {\n\t\t\ttext: \"Display options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\tformat_type_absolute: {\n\t\t\ttext: \"Absolute timestamps\",\n\t\t\ttype: \"combo\",\n\t\t\tvalues: [\n\t\t\t\t'None', \"none\",\n\t\t\t\t'Minimal: 9:30PM / June 12', \"xkit_rewritten\",\n\t\t\t\t'Custom (see below)', \"custom\"\n\t\t\t],\n\t\t\tdefault: \"xkit_rewritten\",\n\t\t\tvalue: \"xkit_rewritten\"\n\t\t},\n\t\tformat: {\n\t\t\ttext: 'Custom format, if selected (what is this?)',\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"MMMM Do YYYY, h:mm:ss a\",\n\t\t\tvalue: \"MMMM Do YYYY, h:mm:ss a\"\n\t\t},\n\t\tformat_type_relative: {\n\t\t\ttext: \"Relative timestamps\",\n\t\t\ttype: \"combo\",\n\t\t\tvalues: [\n\t\t\t\t'None', \"none\",\n\t\t\t\t'Auto: 2 hours ago / 3 days ago', \"auto\",\n\t\t\t],\n\t\t\tdefault: \"auto\",\n\t\t\tvalue: \"auto\"\n\t\t},\n\t\tdisplay_on_top: {\n\t\t\ttext: \"Display timestamps on the top of posts\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\tonly_on_hover: {\n\t\t\ttext: \"Hide timestamps until I hover over a post\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\n\t},\n\n\tcheck_quota: function() {\n\t\tif (XKit.storage.quota(\"timestamps\") <= 1024 || XKit.storage.size(\"timestamps\") >= 153600) {\n\t\t\tXKit.storage.clear(\"timestamps\");\n\t\t\tfor (let x of Object.keys(this.preferences)) {\n\t\t\t\tif (this.preferences[x].value !== this.preferences[x].default) {\n\t\t\t\t\tXKit.storage.set(\"timestamps\", `extension__setting__${x}`, this.preferences[x].value.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t\tXKit.storage.set(\"timestamps\", \"preference_conversion\", \"done\");\n\t\t}\n\n\t},\n\n\tconvert_preferences: function() {\n\t\t[\n\t\t\t[\"only_inbox\", \"false\", {inbox: true, posts: false}],\n\t\t\t[\"do_reblogs\", \"true\", {reblogs: \"all\"}],\n\t\t\t[\"only_original\", \"true\", {reblogs: \"op\"}]\n\t\t]\n\t\t.filter(([preference, defaultValue]) => XKit.storage.get(\"timestamps\", `extension__setting__${preference}`, defaultValue) === \"true\")\n\t\t.forEach(([preference, defaultValue, conversion]) => {\n\t\t\tObject.entries(conversion).forEach(([key, value]) => {\n\t\t\t\tXKit.storage.set(\"timestamps\", `extension__setting__${key}`, value.toString());\n\t\t\t\tthis.preferences[key].value = value;\n\t\t\t});\n\t\t});\n\n\t\tXKit.storage.set(\"timestamps\", \"preference_conversion\", \"done\");\n\t},\n\n\tget in_search() {\n\t\treturn XKit.interface.where().search;\n\t},\n\n\trun: function() {\n\t\tif (XKit.storage.get(\"timestamps\", \"preference_conversion\") !== \"done\") {\n\t\t\tthis.convert_preferences();\n\t\t}\n\n\t\tif (!XKit.interface.is_tumblr_page()) { return; }\n\n\t\tif (!this.preferences.inbox.value && XKit.interface.where().inbox) {\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.tools.init_css(\"timestamps\");\n\n\n\t\tif (this.preferences.format.value === \"\") {\n\t\t\tthis.preferences.format.value = \"MMMM Do YYYY, h:mm:ss a\";\n\t\t}\n\n\t\tthis.check_quota();\n\n\t\t$(document).on(\"click\", \".xkit-timestamp-failed-why\", function() {\n\t\t\tXKit.window.show(\"Timestamp loading failed.\", \"This might be caused by several reasons, such as the post being removed, becoming private, or the Tumblr server having a problem that it can't return the page required by XKit to load you the timestamp.\", \"error\", \"
      OK
      \");\n\t\t});\n\n\t\tif (XKit.page.react) {\n\t\t\tXKit.css_map.getCssMap()\n\t\t\t.then(() => {\n\t\t\t\tthis.posts_class = XKit.css_map.keyToCss(\"post\");\n\t\t\t\tthis.reblogs_class = XKit.css_map.keyToCss(\"reblog\");\n\t\t\t\tthis.reblog_headers_class = XKit.css_map.keyToCss(\"reblogHeader\");\n\t\t\t\tthis.blog_link_class = XKit.css_map.keyToCss(\"blogLink\");\n\t\t\t\tthis.note_count_class = XKit.css_map.keyToCss('noteCount');\n\n\t\t\t\tif (this.preferences.posts.value || (this.preferences.inbox.value && XKit.interface.where().inbox)) {\n\t\t\t\t\tthis.react_add_timestamps();\n\t\t\t\t\tXKit.post_listener.add(\"timestamps\", this.react_add_timestamps);\n\t\t\t\t}\n\n\t\t\t\tif (this.preferences.reblogs.value !== \"off\") {\n\t\t\t\t\tthis.react_add_reblog_timestamps();\n\t\t\t\t\tXKit.post_listener.add(\"timestamps\", this.react_add_reblog_timestamps);\n\t\t\t\t}\n\n\t\t\t\tif (this.preferences.only_on_hover.value) {\n\t\t\t\t\tXKit.tools.add_css(`.xtimestamp { display: none; } ${this.posts_class.split(\", \").map(x => x + \":hover .xtimestamp\").join(\", \")} { display: inline-block; }`, \"timestamps_on_hover\");\n\t\t\t\t} else {\n\t\t\t\t\tXKit.tools.add_css(\".xtimestamp { display: inline-block; }\", \"timestamps_on_hover\");\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.tools.add_css('#posts .post .post_content { padding-top: 0px; }', \"timestamps\");\n\n\t\tif (this.preferences.posts.value || (this.preferences.inbox.value && XKit.interface.where().inbox)) {\n\t\t\tthis.add_timestamps();\n\t\t\tXKit.post_listener.add(\"timestamps\", this.add_timestamps);\n\t\t}\n\n\t\tif (this.preferences.reblogs.value !== \"off\") {\n\t\t\tthis.add_reblog_timestamps();\n\t\t\tXKit.post_listener.add(\"timestamps\", this.add_reblog_timestamps);\n\t\t}\n\n\t\tif (this.preferences.only_on_hover.value) {\n\t\t\tXKit.tools.add_css(\".xtimestamp { display: none; } .post:hover .xtimestamp { display: block; }\", \"timestamps_on_hover\");\n\t\t}\n\t},\n\n\tadd_timestamps: function() {\n\t\tvar posts = $(\".posts .post:not(.queued)\").not(\".xkit_timestamps\");\n\n\t\tif (!posts || posts.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.extensions.timestamps.check_quota();\n\n\t\tposts.each(function() {\n\t\t\tvar post = $(this);\n\t\t\tpost.addClass(\"xkit_timestamps\");\n\n\t\t\tif (post.hasClass(\"fan_mail\")) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (post.attr('id') === \"new_post\" ||\n\t\t\t\t\tpost.find('.private_label').length > 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar post_id = post.attr('data-post-id');\n\t\t\tvar blog_name = post.attr('data-tumblelog-name');\n\n\t\t\tif (XKit.extensions.timestamps.in_search && !$(\"#search_posts\").hasClass(\"posts_view_list\")) {\n\t\t\t\tvar in_search_html = '
       
      ';\n\t\t\t\tpost.find(\".post-info-tumblelogs\").prepend(in_search_html);\n\t\t\t} else {\n\t\t\t\tvar normal_html = '
       
      ';\n\t\t\t\tpost.find(\".post_content\").prepend(normal_html);\n\t\t\t}\n\n\t\t\tvar note = $(\".xkit_timestamp_\" + post_id);\n\t\t\tXKit.extensions.timestamps.fetch_timestamp(post_id, blog_name, note);\n\t\t});\n\t},\n\n\tadd_reblog_timestamps: function() {\n\t\tvar selector = \".reblog-list-item\";\n\t\tif (XKit.extensions.timestamps.preferences.reblogs.value === \"op\") {\n\t\t\tselector += \".original-reblog-content\";\n\t\t}\n\n\t\t$(selector).not(\".xkit_timestamps\")\n\t\t.addClass(\"xkit_timestamps\")\n\t\t.each(function() {\n\t\t\tlet $this = $(this);\n\n\t\t\tlet $link = $this.find(\".reblog-header [data-peepr]\");\n\t\t\tif (!$link.length || !$link.attr(\"data-peepr\")) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet {tumblelog, postId} = JSON.parse($link.attr(\"data-peepr\"));\n\n\t\t\t$this.find(\".reblog-header\").append(`
       
      `);\n\t\t\tlet $timestamp = $(`.xkit_timestamp_${postId}`);\n\t\t\tXKit.extensions.timestamps.fetch_timestamp(postId, tumblelog, $timestamp);\n\t\t});\n\t},\n\n\tfetch_timestamp: function(post_id, blog_name, date_element) {\n\t\tif (this.fetch_from_cache(post_id, date_element)) {\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.svc.indash_blog({\n\t\t\ttumblelog_name_or_id: blog_name,\n\t\t\tpost_id: post_id,\n\t\t\tlimit: 1,\n\t\t\toffset: 0,\n\t\t\tshould_bypass_safemode: true,\n\t\t\tshould_bypass_tagfiltering: true\n\t\t})\n\t\t.then(response => {\n\t\t\tvar responseData = response.json().response;\n\t\t\tif (responseData.post_not_found_message !== undefined) {\n\t\t\t\tthrow 404;\n\t\t\t}\n\n\t\t\tvar timestamp = responseData.posts[0].timestamp;\n\t\t\tdate_element.html(this.format_date(timestamp));\n\t\t\tdate_element.removeClass(\"xtimestamp-loading\");\n\t\t\tXKit.storage.set(\"timestamps\", \"xkit_timestamp_cache_\" + post_id, timestamp);\n\t\t})\n\t\t.catch(() => this.show_failed(date_element));\n\t},\n\n\treact_add_timestamps: function() {\n\t\tconst {note_count_class, preferences, in_search} = XKit.extensions.timestamps;\n\t\tvar $posts = $(\"[data-id]:not(.xkit_timestamps)\");\n\t\t$posts.addClass(\"xkit_timestamps\");\n\n\t\t$posts.each(function() {\n\t\t\tvar $post = $(this);\n\n\t\t\tvar post_id = $post.attr(\"data-id\");\n\n\t\t\tvar xtimestamp_class = \"xtimestamp\";\n\t\t\tif (in_search) {\n\t\t\t\txtimestamp_class = \"xtimestamp-in-search\";\n\t\t\t}\n\t\t\tif (!preferences.display_on_top.value) {\n\t\t\t\txtimestamp_class += \" xtimestamp-bottom\";\n\t\t\t}\n\n\t\t\tvar xtimestamp_html = `
       
      `;\n\n\t\t\tif (preferences.display_on_top.value) {\n\t\t\t\t$(xtimestamp_html).insertAfter($post.find(\"header\"));\n\t\t\t} else {\n\t\t\t\txtimestamp_html = `${xtimestamp_html}`;\n\t\t\t\t$(xtimestamp_html).insertAfter($post.find(note_count_class));\n\t\t\t}\n\n\t\t\tvar note = $(\".xkit_timestamp_\" + post_id);\n\t\t\tXKit.extensions.timestamps.react_fetch_timestamp(post_id, note);\n\t\t});\n\t},\n\n\treact_add_reblog_timestamps: function() {\n\t\tconst {reblogs_class, reblog_headers_class, preferences} = XKit.extensions.timestamps;\n\t\tconst $posts = $(\"[data-id]:not(.xkit_reblog_timestamps)\");\n\n\t\t$posts\n\t\t.addClass(\"xkit_reblog_timestamps\")\n\t\t.each(async function() {\n\t\t\tconst $post = $(this);\n\t\t\tconst post_id = $post.attr(\"data-id\");\n\t\t\tconst {trail} = await XKit.interface.react.post_props(post_id);\n\t\t\tvar $reblogs = $post.find(reblogs_class);\n\n\t\t\tif (preferences.reblogs.value === \"op\") {\n\t\t\t\t$reblogs = $reblogs.first();\n\t\t\t}\n\n\t\t\t$reblogs.each(function(i) {\n\t\t\t\tif (trail[i] === undefined || trail[i].blog === undefined || trail[i].blog.active === false) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst $reblog = $(this);\n\t\t\t\tconst {uuid} = trail[i].blog;\n\t\t\t\tconst {id} = trail[i].post;\n\n\t\t\t\t$reblog.find(reblog_headers_class).append(`
       
      `);\n\t\t\t\tconst $xtimestamp = $(`.xkit_timestamp_${id}`);\n\n\t\t\t\tif (XKit.extensions.timestamps.fetch_from_cache(id, $xtimestamp) === true) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tXKit.tools.async_add_function(async ({uuid, id}) => { // eslint-disable-line no-shadow\n\t\t\t\t\t/* globals tumblr */\n\t\t\t\t\tconst {response: {timestamp}} = await tumblr.apiFetch(`/v2/blog/${uuid}/posts/${id}`);\n\t\t\t\t\treturn timestamp;\n\t\t\t\t}, {uuid, id}).then(timestamp => {\n\t\t\t\t\t$xtimestamp\n\t\t\t\t\t.removeClass(\"xtimestamp-loading\")\n\t\t\t\t\t.html(XKit.extensions.timestamps.format_date(timestamp));\n\n\t\t\t\t\tXKit.storage.set(\"timestamps\", `xkit_timestamp_cache_${id}`, timestamp);\n\t\t\t\t}).catch(() => {\n\t\t\t\t\tXKit.extensions.timestamps.show_failed($xtimestamp);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t},\n\n\treact_fetch_timestamp: async function(post_id, date_element) {\n\t\tvar {timestamp} = await XKit.interface.react.post_props(post_id);\n\n\t\tif (timestamp) {\n\t\t\tdate_element.html(this.format_date(timestamp));\n\t\t\tdate_element.removeClass(\"xtimestamp-loading\");\n\t\t\tif (XKit.extensions.timestamps.preferences.reblogs.value !== \"off\") {\n\t\t\t\tXKit.storage.set(\"timestamps\", \"xkit_timestamp_cache_\" + post_id, timestamp);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.show_failed(date_element);\n\t\t}\n\t},\n\n\tfetch_from_cache: function(post_id, date_element) {\n\t\tvar cached = XKit.storage.get(\"timestamps\", \"xkit_timestamp_cache_\" + post_id, \"\");\n\t\tif (cached === \"\") {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar cached_utc_seconds = parseFloat(cached);\n\t\tif (isNaN(cached_utc_seconds)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar cached_date = moment(new Date(cached_utc_seconds * 1000));\n\t\tif (!cached_date.isValid()) {\n\t\t\treturn false;\n\t\t}\n\n\t\tdate_element.html(this.format_date(cached_utc_seconds));\n\t\tdate_element.removeClass(\"xtimestamp-loading\");\n\t\treturn true;\n\t},\n\n\tshow_failed: function(obj) {\n\t\t$(obj).html(\"failed to load timestamp
      why?
      \");\n\t\t$(obj).removeClass(\"xtimestamp-loading\");\n\t},\n\n\tcpanel: function() {\n\t\t$(\"#xkit-timestamps-format-help\").click(XKit.tools.show_timestamps_help);\n\t},\n\n\tconstructMinimalTimeString: function(unixTime) {\n\t\tconst locale = document.documentElement.lang;\n\t\tconst date = new Date(unixTime * 1000);\n\t\tconst now = new Date();\n\n\t\tconst sameDate = date.toDateString() === now.toDateString();\n\t\tconst sameYear = date.getFullYear() === now.getFullYear();\n\n\t\tif (sameDate) {\n\t\t\treturn date.toLocaleTimeString(locale, {\n\t\t\t\thour: 'numeric',\n\t\t\t\tminute: 'numeric',\n\t\t\t});\n\t\t} else {\n\t\t\treturn date.toLocaleDateString(locale, {\n\t\t\t\tday: 'numeric',\n\t\t\t\tmonth: 'short',\n\t\t\t\tyear: sameYear ? undefined : 'numeric',\n\t\t\t});\n\t\t}\n\t},\n\n\tformat_date: function(timestamp) {\n\t\tconst absolute_type = this.preferences.format_type_absolute.value;\n\t\tconst relative_type = this.preferences.format_type_relative.value;\n\n\t\tvar absoluteText = '';\n\t\tvar relativeText = '';\n\t\tvar tooltip = '';\n\n\t\tconst date = moment(new Date(timestamp * 1000));\n\n\t\tif (absolute_type == \"xkit_rewritten\") {\n\t\t\tabsoluteText = this.constructMinimalTimeString(timestamp);\n\t\t} else if (absolute_type == \"custom\") {\n\t\t\tabsoluteText = date.format(this.preferences.format.value);\n\t\t} else {\n\t\t\ttooltip = date.format(this.preferences.format.value);\n\t\t}\n\n\t\tif (relative_type == \"auto\") {\n\t\t\trelativeText = date.from(moment());\n\t\t} else {\n\t\t\ttooltip = date.from(moment());\n\t\t}\n\n\t\tif (absoluteText && relativeText) {\n\t\t\treturn `${absoluteText} · ${relativeText}`;\n\t\t} else {\n\t\t\treturn `${relativeText}${absoluteText}`;\n\t\t}\n\t},\n\n\tdestroy: function() {\n\t\t$(\".xtimestamp\").remove();\n\t\t$(\".xtimestamp-bottom-container\").remove();\n\t\t$(\".xkit-fan-timestamp\").remove();\n\t\t$(\".with-xkit-timestamp\").removeClass(\"with-xkit-timestamp\");\n\t\t$(\".xkit_timestamps\").removeClass(\"xkit_timestamps\");\n\t\t$(\".xkit_reblog_timestamps\").removeClass(\"xkit_reblog_timestamps\");\n\t\tXKit.tools.remove_css(\"timestamps\");\n\t\tXKit.post_listener.remove(\"timestamps\");\n\t\tXKit.tools.remove_css(\"timestamps_on_hover\");\n\t}\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzAzOTU1OTQzODVBMTFFM0ExQ0FBQzk4RDE5Q0VGNzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzAzOTU1OTUzODVBMTFFM0ExQ0FBQzk4RDE5Q0VGNzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3MDM5NTU5MjM4NUExMUUzQTFDQUFDOThEMTlDRUY3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3MDM5NTU5MzM4NUExMUUzQTFDQUFDOThEMTlDRUY3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuKAlbAAAASdSURBVHja7FZLbBtlEN7df73e9SN+1HbjJk6a2E3oQ03SKBRSQkkfSlABiRSI1Es4cECVKOUhDsAFCQmpcKDiJYHoCcEBiR4aJKqWAkpbtaWQ5iURt8FJnCapXTu2Y+/au95d5o/bsF7b6SkHJH6PVv53vpn5Z/55LD3qfYVYz0UR67z+N/DARRMkuSaANLX62Z0+bpuXaXCRND6Qmlek2wlhZC47Gs7cmCJUZS0DZGUDTI3H0b/bdriNqXeWch397WI4kRocS3x/LRsMV1KCjto6sRMlBAf3vv+svb8d2bkCFA4u3orKsQzF0iRDY2Eba+qo51rr8xFBDEXK6ikfItOuQM1HzxsDrsI2cyWUvhAUFxJiKApbg9fB1DnNe/zWfU2w5VpqNn343MLbKHV2uEyIx+vf0L1im321nx4xbnHD/3yMj5+6lDwzLM5GdDCDx1H1dJvr6OP0BgtspWh6uu9zMRwpCZHjMa1HyGpyv95j6fIDT5xL3Pngp/g3Q3KKL/Vd4XPC8HR2bNH8aABZjcjMMH5P6sdRQiW0MAp+WjI9HLAdfAi0K4IU+/pSavC6DrBKrpf22ft281eDi+8NwvWAiHXvFvMjTSRVpJMiqCKyPNFE2fCtLv96M3n6Dx13lVwvH9z4Tq/7tf202758YSx9cYqQsQ3Hi50EjbRIiiwmrtWHj58Sls9OqEKOLAGQWPsB9/FugMVPXYZAwZv4V0PgMXZiTyPiGC2Yxna0V+e1wTMXiueCizoW43M5Bjrp6irQQhpQ5MR5qAA1LwNMGJm5lzOsgQl4sxNhTaGhojRFDhwfKbIsx9OYRZLOgS5ul69gm91aXYBFTpxb+vYy1PB9cTU7sQA1QVAkspu0OvUekGilGUiyqig4gma26snt7HavFqMKUvpiUFVUrSykKaHiBAK+9j1d0Li6FF6kTAyyssjKyZJM5OXoyZ+NzV41K1m6m82dDYBJnBmVlzI6QWOjC46Pj2hAWhZNFONAEWFiDDV2Q61TTvKqqvJ/TgujYXAoPTRJe6oAL83GFEHUClIW1rCpqtAU5ASvZdEkZJVmQXFxTjNT5+B21OYmF/4NHUWBJBYubIulLN1bKdaAA5DJ5ReTWi6F/dIQPxxekacsewO0167jViJ7XxtpNBSqR5HyWhbcOtISdHk5nsEtrM1nP9yu45Ylz5u9OLtWEifx3e9ksU50rLFHW9ny3TRpYbmdNXBRbJOHZJncxG0QrtQw3K8esD21Ay4Wa//hRuaXv3RgdMzfW+QvJNx8kmlwQ9ZDKOFobEudtJDMx9K6sEBrq373kKUrUJgN2WAk+vF5BXKkGEbe6jlZ0sIJg2+D5/h+dttKWanQ+ERxdom/PqMks7hBWhlTx2bGZ6dMxkJk5KQw/9ZpceZumXkwdeiTcpOYQE6Lc6CzMFLuTzQZt+IVrjZP+Cuh6Be/QeXf4+oNPPNZxXlPI661znGkw+h3lQXkbkaSg+P81b9xWVQc+sUZrVvCyGx2fA7qi2upZZo20g4TySAxFJPmE9nJO9JsHJoKdIg1lJChF75c5+8itL7fXg8I0X/AwD8CDADGhq6+h9gK5AAAAABJRU5ErkJggg==","css":".xkit-timestamp-failed-why {\n\tdisplay: inline-block;\n\tmargin-left: 4px;\n\tfont-weight: bold;\n\tcursor: pointer;\n\ttext-decoration: underline;\n}\n\n.post.fan_mail .message_body.with-xkit-timestamp {\n\n\tmargin-top: 15px;\n\n}\n\n.post.fan_mail .message.with-xkit-timestamp {\n\tbackground-position-y: 17px;\n}\n\n.xkit-fan-timestamp {\n\n\tfont-size: 11px;\n\tfont-family: \"Helvetica Neue\",\"Helvetica\",sans-serif;\n\tposition: absolute;\n\ttop: 14px;\n\tleft: 20px;\n\tline-height: 12px;\n\tcolor: rgb(70,70,70);\n\n}\n\n.xtimestamp {\n\tposition: relative;\n\ttop: -9px;\n\tcolor: rgb(168,177,184);\n\ttext-align: left;\n\tfont-weight: normal !important;\n\tfont-size: 11px;\n\tmargin-bottom: 10px;\n\tmargin-left: 20px;\n}\n\n.xkit--react .xtimestamp,\n.xkit--react .xtimestamp-in-search {\n\tposition: static;\n\tcolor: rgba(var(--black), 0.65);\n\tfont-size: 14px;\n\tline-height: 1em;\n\tpadding: 0 var(--post-padding);\n\tmargin-left: 0;\n\tmargin-bottom: var(--post-header-vertical-padding);\n}\n\n.xkit--react .xtimestamp {\n\tmargin-top: calc(var(--post-header-vertical-padding) / -2);\n}\n\n.xkit--react .xtimestamp.xtimestamp-reblog {\n\talign-self: center;\n\tflex-shrink: 9999;\n\tpadding-right: 0;\n\tmargin: 0;\n\tmargin-left: auto;\n}\n\n.xkit--react .xtimestamp.xtimestamp-bottom {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.xkit--react .xtimestamp-bottom-container {\n\tflex-grow: 1;\n\tflex-basis: 0;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tfont-size: 1rem; /* fixes buggy behavior with old blue enabled */\n}\n\n:not(:empty) + .xtimestamp-bottom-container {\n\tmargin-left: var(--post-padding);\n}\n\n\n.xtimestamp.xtimestamp-loading {\n\tbackground: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1 1'%3E%3Cpath d='M.9.5a.4.4 2 0 1-.247.37.4.4 0 0 1-.436-.087A.4.4 0 0 1 .13.347.4.4 0 0 1 .5.1' fill='none' stroke='%23888' stroke-width='.12' stroke-linecap='round' stroke-linejoin='round'%3E%3CanimateTransform attributeName='transform' attributeType='XML' type='rotate' from='0 .5 .5' to='360 .5 .5' dur='1s' repeatCount='indefinite'/%3E%3C/path%3E%3C/svg%3E\") center no-repeat;\n\tmin-height: 20px;\n\tmin-width: 20px;\n}\n\n.xtimestamp-in-search {\n\tposition: absolute;\n\ttop: 32px;\n\tcolor: rgb(168,177,184);\n\tfont-size: 10px;\n}\n\n.reblog-list-item .xtimestamp {\n float: right;\n top: 0;\n margin: 0;\n}\n","title":"Timestamps","description":"See when a post has been made.","developer":"New-XKit","version":"2.11.5","details":"This extension lets you see when a post was made, in full date or relative time (eg: 5 minutes ago). It also works on asks, and you can format your timestamps.","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/titles.json b/Extensions/dist/titles.json new file mode 100644 index 000000000..7a19b75cd --- /dev/null +++ b/Extensions/dist/titles.json @@ -0,0 +1 @@ +{"id":"titles","script":"//* TITLE Tab titles **//\n//* VERSION 1.0.1 **//\n//* DESCRIPTION Descriptive tab titles, rather than just “Tumblr” **//\n//* DEVELOPER 9999years **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.titles = new Object({\n\trunning: false,\n\n\t/* object mapping the first url folder component to a function which takes\n\t * an array of url components (like ['blog', 'xkit'] for '/blog/xkit') and\n\t * returns the new page title\n\t */\n\ttitleForPath: {\n\t\tblog: path => {\n\t\t\tif (path.length > 2) {\n\t\t\t\tconst [blogName, route] = path;\n\t\t\t\treturn {\n\t\t\t\t\t\"new\": `Post to ${blogName}`,\n\t\t\t\t\treview: `${blogName}’s flagged posts`,\n\t\t\t\t\tdelete: `Delete ${blogName}`\n\t\t\t\t}[route] || `${blogName}’s ${route}`;\n\t\t\t}\n\t\t\t// a plain blog page\n\t\t\treturn path[1];\n\t\t},\n\n\t\texplore: path => \"Explore: \" + {\n\t\t\t\"recommended-for-you\": \"Recommended for you\",\n\t\t\ttrending: \"Trending\",\n\t\t\t\"staff-picks\": \"Staff picks\",\n\t\t\ttext: \"Text posts\",\n\t\t\tphotos: \"Photo posts\",\n\t\t\tgifs: \"GIF posts\",\n\t\t\tquotes: \"Quote posts\",\n\t\t\tlinks: \"Link posts\",\n\t\t\tchats: \"Chat posts\",\n\t\t\taudio: \"Audio posts\",\n\t\t\tvideo: \"Video posts\",\n\t\t\tasks: \"Ask posts\"\n\t\t}[path[1]],\n\n\t\tdashboard: path => \"Dashboard\",\n\t\tinbox: path => \"Inbox\",\n\t\ttagged: path => `#${path[1]}`,\n\t\tsearch: path => `Search: ${path[1]}`,\n\t\tlikes: path => \"Likes\",\n\t\tfollowing: path => \"Following\",\n\n\t\t\"new\": path => path[1] == \"blog\"\n\t\t\t? \"Hoard a URL\"\n\t\t\t: `Post to ${XKit.interface.post_window.blog()}`,\n\n\t\treblog: path => `Reblog from ${XKit.interface.post_window.reblogging_from()}`,\n\t\t\"mega-editor\": path => `Mass editing ${path[1]}`\n\t},\n\n\t// trims text after a `|` in a string; used for titles like\n\t// \"Dashboard | Tumblr\"\n\ttrimTitle: title => title.split(\"|\")[0].trim(),\n\n\t// Gets a new page title from an array of directory names. This actually\n\t// has to be a function() and not a lambda because it uses `this`.\n\tgetTitle: function(pathComponents) {\n\t\tlet fn = this.titleForPath[pathComponents[0]];\n\t\tif (fn) {\n\t\t\treturn fn(pathComponents);\n\t\t} else {\n\t\t\t// unrecognized path; clean up title a bit anyways\n\t\t\treturn this.trimTitle(document.title);\n\t\t}\n\t},\n\n\tpathComponents: () => document.location.pathname\n\t\t\t.split(\"/\").filter(component => component),\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tdocument.title = this.getTitle(this.pathComponents());\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t}\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZBJREFUeNrs2r1Kw1AUB/Bz0tzcpklKERyKi1AHBREXJ1fByUHwCfoOzj5AfQFdFNyKDuLH6Aso+FEQOwkdAj5AbG9tuaYOTmloSy4Y/J81yc35He4XuWGqblCew6KcBwAAAAAAAP8bYM/ykNb02SVtJiNhU1GOXmEKoLUQYmtnsygdE/m/d8Kn51eyJ02Mp94LDYaVuUrn4SrwSyYAJ83ren2fyoHBMaC1juIuZCaU6hMzZiEAADAJYOZy4BlKyHWnWARmWgcs7ip10Dj2PTd5jup/7e1ury7XxjVwcXPXenljRySW5j5eBKQ0CrBUTx02jsbWKYpqS4spgLPz28vTJnl+8uUY5hZNrsQ/haKULmRZQqQ1W4rzCwLyvbStCgYxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQOwDnHeAkfTr/jUKhkGmxMv/lbDhcX1tZqM7rpI/MzPzYaofhB2XEMABgpp6iwWDsDVKOjuN1Nif9dvYdKM5MOpR+jq/1nx4DmEYBAAAAAAAAYML4FmAAcbFbUUX/O/UAAAAASUVORK5CYII=\n","title":"Tab titles","description":"Descriptive tab titles, rather than just “Tumblr”","developer":"9999years","version":"1.0.1","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/transparent_img_hover.json b/Extensions/dist/transparent_img_hover.json new file mode 100644 index 000000000..e2f31a650 --- /dev/null +++ b/Extensions/dist/transparent_img_hover.json @@ -0,0 +1 @@ +{"id":"transparent_img_hover","script":"//* TITLE Show transparency **//\n//* VERSION 1.0.1 **//\n//* DESCRIPTION Makes the backgrounds of images blue when you hover over them so you can see transparency without dragging the image. **//\n//* DEVELOPER 9999years **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.transparent_img_hover = new Object({\n\trunning: false,\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tXKit.tools.init_css(\"transparent_img_hover\");\n\t},\n\n\tdestroy: function() {\n\t\tXKit.tools.remove_css(\"transparent_img_hover\");\n\t\tthis.running = false;\n\t}\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIxJREFUeNrs2cENgCAMAEAwLqF76DhM4CCuIZM6gAmRiA/I9Vv6uNCkNMSwbKHnmELnAQAAAAAAAAAA0HHMVaev8yhkU0qFbM75fWFcdy0EAAAAAGASN5u1H2u1EAAAAADAqIBY9cX00078rLUTAwAAAADYie3EWghgvOe0GwAAAAAAAAAAAGgZtwADAMlbGW4WhitaAAAAAElFTkSuQmCC\n","css":".post img:hover {\n\tbackground-color: #001935 !important;\n}\n","title":"Show transparency","description":"Makes the backgrounds of images blue when you hover over them so you can see transparency without dragging the image.","developer":"9999years","version":"1.0.1","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/tweaks.json b/Extensions/dist/tweaks.json new file mode 100644 index 000000000..57e559603 --- /dev/null +++ b/Extensions/dist/tweaks.json @@ -0,0 +1 @@ +{"id":"tweaks","script":"//* TITLE Tweaks **//\n//* VERSION 6.0.13 **/\n//* DESCRIPTION Various little tweaks for your dashboard. **//\n//* DEVELOPER new-xkit **//\n//* DETAILS These are small little tweaks that allows you customize your dashboard. If you have used XKit 6, you will notice that some of the extensions have been moved here as options you can toggle. Keep in mind that some of the tweaks (the ones marked with a '*') can slow down your computer. **//\n//* FRAME false **//\n//* SLOW true **//\n//* BETA false **//\n\nXKit.extensions.tweaks = new Object({\n\n\trunning: false,\n\tslow: true,\n\thide_bubble_interval: 0,\n\n\tpreferences: {\n\n\t\t\"sep0\": {\n\t\t\ttext: \"Popular tweaks\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"no_mobile_banner\": {\n\t\t\ttext: \"Remove the mobile app banner\",\n\t\t\tdefault: true,\n\t\t\tvalue: true,\n\t\t\tmobile_only: true\n\t\t},\n\t\t\"wrap_tags\": {\n\t\t\ttext: \"Show all tags on posts by default\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"wrap_tags_one_line\": {\n\t\t\ttext: \"Show one line of tags on posts by default\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"grey_urls\": {\n\t\t\ttext: \"Make URLs grey again\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"fix_blockquotes\": {\n\t\t\ttext: \"Slim block quotes for easier reading\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"small_quotes\": {\n\t\t\ttext: \"Slim Quote post text on Dashboard\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"hide_share_menu\": {\n\t\t\ttext: \"Hide the share button on posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"hide_follows\": {\n\t\t\ttext: \"Hide the mini-follow buttons on posts and notifications\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"sep001\": {\n\t\t\ttext: \"Post / Post Editor tweaks\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"classic_post_titles\": {\n\t\t\ttext: \"Use 'Classic' (bold and smaller) post titles / headings\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"bold_links_new\": {\n\t\t\ttext: \"Use 'Classic' (bold) links on text posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"swap_buttons\": {\n\t\t\ttext: \"Swap Post/Save and Cancel buttons\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"tag_slot_separator\": {\n\t\t\ttext: \"Add a separator line for Tag section on editor\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"full_width_gifs\": {\n\t\t\ttext: \"Add a button in post editor options to toggle full-width GIFs\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"fullres_inline\": {\n\t\t\ttext: \"Show full-resolution inline images\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"sep1\": {\n\t\t\ttext: \"User Interface tweaks\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"slim_activity_feed\": {\n\t\t\ttext: \"Re-slim the Activity feed\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"old_sidebar_width\": {\n\t\t\ttext: \"Return the sidebar to its original width\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"old_photo_margins\": {\n\t\t\ttext: \"Use the old 500/245/160px photo dimensions on posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"show_new_on_secondary\": {\n\t\t\ttext: \"Show new post icons on secondary dashboard pages\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"real_red\": {\n\t\t\ttext: \"Use a real red on notifications and post like buttons\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"old_chat_posts\": {\n\t\t\ttext: \"Show Chat posts in classic interface\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"scroll_new_posts\": {\n\t\t\ttext: \"Scroll the new posts icons along with me\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"slim_popups\": {\n\t\t\ttext: \"Slim down the popup menus such as the user menu\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"always_show_move_to_top\": {\n\t\t\ttext: \"Always show 'Move to top' button on the queued posts page\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"border_asks\": {\n\t\t\ttext: \"Show border around ask posts and answers\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"wide_sources\": {\n\t\t\ttext: \"Increase max width of post sources to avoid shortening\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"sep2\": {\n\t\t\ttext: \"Dashboard tweaks\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"hide_like_animation\": {\n\t\t\ttext: \"Hide the like/unlike heart animation\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"pin_avatars\": {\n\t\t\ttext: \"Stop avatars from scrolling along with the post\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"no_footer_background\": {\n\t\t\ttext: \"Classic Post Footer look\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"dont_show_mine_on_dashboard\": {\n\t\t\ttext: \"Don't show my own posts on my dashboard\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"dont_show_liked_on_dashboard\": {\n\t\t\ttext: \"Don't show liked posts on my dashboard\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"hide_explore\": {\n\t\t\ttext: \"Hide explore button on trending posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"hide_explore_buttons\": {\n\t\t\ttext: \"Hide the explore link at the top of the page and in the sidebar\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"hide_notes\": {\n\t\t\ttext: \"Hide the notes on posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"hide_tags\": {\n\t\t\ttext: \"Hide the tags on posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"show_top_arrow\": {\n\t\t\ttext: \"Always show the scroll to top arrow\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"larger_top_arrow\": {\n\t\t\ttext: \"Make the scroll to top arrow larger\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"hide_bubble\": {\n\t\t\ttext: \"Hide the new post bubble when you are not in dashboard\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tslow: true\n\t\t},\n\t\t\"no_animate_scroll\": {\n\t\t\ttext: \"Don't animate scrolling when using J/K to move between posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"fix_small_text_on_reblogs\": {\n\t\t\ttext: \"Make small text in reblogs the same size as small text in own posts\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"responsive_dash\": {\n\t\t\ttext: \"Make the dashboard resize with the window\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"sep3\": {\n\t\t\ttext: \"Navigation and Search tweaks\",\n\t\t\ttype: \"separator\",\n\t\t},\n\t\t\"redirect_to_everything\": {\n\t\t\ttext: \"On popular tags, always show all posts, not just the popular ones\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\texperimental: true\n\t\t},\n\t\t\"hide_blog_search\": {\n\t\t\ttext: \"Hide blogs on the search bar suggestions\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"sep4\": {\n\t\t\ttext: \"Sidebar tweaks\",\n\t\t\ttype: \"separator\",\n\t\t\tdesktop_only: true,\n\t\t},\n\t\t\"slim_sidebar\": {\n\t\t\ttext: \"Slim sidebar buttons\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"hide_section_headers\": {\n\t\t\ttext: \"Hide section headers on sidebar\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"hide_radar\": {\n\t\t\ttext: \"Hide the Tumblr radar\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"hide_recommended\": {\n\t\t\ttext: \"Hide Recommended blogs\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\t\"hide_follower_count\": {\n\t\t\ttext: \"Hide your follower count in the account menu and on the sidebar\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\tnotification_badge_style: {\n\t\t\ttext: \"Notification badge style\",\n\t\t\tdefault: \"default\",\n\t\t\tvalue: \"default\",\n\t\t\tdesktop_only: true,\n\t\t\ttype: \"combo\",\n\t\t\tvalues: [\n\t\t\t\t\"Default\", \"default\",\n\t\t\t\t\"Hidden\", \"hidden\",\n\t\t\t\t\"White\", \"white\",\n\t\t\t\t\"Old Red (Palette-dependent)\", \"oldred\",\n\t\t\t\t\"Old Red (Always red)\", \"olderredder\",\n\t\t\t]\n\t\t},\n\t\thide_activity_notification_badge: {\n\t\t\ttext: \"Hide the activity notification badge\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\thide_post_highlight: {\n\t\t\ttext: \"Hide the post highlight that appears when using jk to scroll\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\tgrayscale_new_post_button: {\n\t\t\ttext: \"Turn the New Post button gray\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t\tsubtle_follow_button: {\n\t\t\ttext: \"Make the Follow button more subtle inside posts\",\n\t\t\tdefault: false,\n\t\t\tvalue: false,\n\t\t\tdesktop_only: true\n\t\t},\n\t},\n\n\tdefault_page_title: \"\",\n\n\taddShowTagsObserver: new MutationObserver(function(ms) {\n\t\tXKit.extensions.tweaks.process_wrap_tags_one_line();\n\t}),\n\n\trun: async function() {\n\t\tthis.running = true;\n\n\t\tawait XKit.css_map.getCssMap();\n\n\t\tthis.css_to_add = \"\";\n\n\t\tif (!XKit.interface.is_tumblr_page()) { return; }\n\n\t\tthis.addShowTagsObserver.disconnect();\n\t\tvar wrap_tags_all_lines = XKit.extensions.tweaks.preferences.wrap_tags.value;\n\t\tvar wrap_tags_one_line = XKit.extensions.tweaks.preferences.wrap_tags_one_line.value;\n\t\tif (wrap_tags_all_lines && XKit.interface.is_tumblr_page() && !XKit.interface.where().search) {\n\t\t\tXKit.tools.add_css(\".post_full .post_tags.fadeable { max-height: none; } .see-all-tags { display: none; }\", \"xkit_tweaks_collapsible_tag_display\");\n\t\t} else if (wrap_tags_all_lines && XKit.interface.where().search) {\n\t\t\t//fallback for search page\n\t\t\tXKit.extensions.tweaks.add_css(\".post .tags { width: 100% !important; display: block !important; overflow:visible; \" +\n\t\t\t\t\"height:auto; white-space: normal; } .post .footer_links.with_tags { overflow:visible !important; display: block !important;} \" +\n\t\t\t\t\".post .footer_links.with_tags span, .footer_links.with_tags .source_url { display:block !important; overflow:visible !important; } \" +\n\t\t\t\t\".source_url_gradient { display: none !important; } span.tags { white-space:normal !important; } \" +\n\t\t\t\t\"span.with_blingy_tag a.blingy { height:auto !important; display:inline-block !important; } .source_url, .post_tags_wrapper { display: block !important; } \",\n\t\t\t\"xkit_tweaks_wrap_tags\");\n\t\t\tXKit.extensions.tweaks.add_css(\".post.post_full .post_tags { white-space: normal !important; } .post .post_tags a { font-size: 12px; } .post_full .post_tags:after { background: none !important; }\", \"xkit_tweaks_wrap_tags_v2\");\n\t\t} else if (wrap_tags_one_line && XKit.interface.is_tumblr_page() && !XKit.interface.where().search) {\n\t\t\tXKit.tools.add_css(\".post_full .post_tags.fadeable { max-height: 21px; } .see-all-tags { display: block; }\", \"xkit_tweaks_collapsible_tag_display\");\n\t\t\t$('body').on('click', '.xkit_tweaks_show_all_tags_button', XKit.extensions.tweaks.show_all_tags_button_event);\n\t\t\tthis.addShowTagsObserver.observe($('body')[0], {\n\t\t\t\tchildList:true,\n\t\t\t\tsubtree:true\n\t\t\t});\n\t\t\tXKit.extensions.tweaks.process_wrap_tags_one_line();\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.slim_activity_feed.value) {\n\t\t\tXKit.tools.add_css(\n\t\t\t// Slim the height by 10px and put the icons back where they were\n\t\t\t\".ui_notes .activity-notification\" +\n\t\t\t\t\"{ padding: 10px; }\" +\n\n\t\t\t// Fit the activity text back where it was\n\t\t\t\".ui_notes .activity-notification .activity-notification__activity\" +\n\t\t\t\t\"{ transform: translate(-10px); }\" +\n\n\t\t\t// Remove ask responses (currently always blank, and messes up the activity dropdown)\n\t\t\t\".ui_notes .activity-notification .activity-notification__activity_response.is_part_answer\" +\n\t\t\t\t\"{ display: none; }\" +\n\n\t\t\t// Remove the speech bubble from conversational notes and put it back in the right place\n\t\t\t\".ui_notes .activity-notification .activity-notification__activity .activity-notification__activity_message.conversational\" +\n\t\t\t\t\"{ background-color: transparent !important; padding: 5px 0; }\" +\n\n\t\t\t// Put the nested style of additions/replies back\n\t\t\t\".ui_notes .activity-notification .activity-notification__activity .activity-notification__activity_message .activity-notification__activity_response blockquote\" +\n\t\t\t\t\"{ margin: 10px 0 5px 5px; padding-left: 15px; border-left: 3px solid #d9d9d9; }\" +\n\n\t\t\t// Let the post type icon shrink\n\t\t\t\".ui_notes .activity-notification .activity-notification__icon\" +\n\t\t\t\t\"{ padding: 0; min-width: 25px; }\" +\n\n\t\t\t// Allow user avatars to use the padding too\n\t\t\t\".ui_notes .activity-notification .activity-notification__avatar .ui_avatar,\" +\n\t\t\t\".ui_notes .activity-notification .activity-notification__avatar .flagged-post\" +\n\t\t\t\t\"{ margin: 0; }\" +\n\n\t\t\t// Shrink post type icons\n\t\t\t\".ui_notes .activity-notification .activity-notification__icon .ui_post_badge\" +\n\t\t\t\t\"{ width: 25px; height: 25px; }\" +\n\n\t\t\t// Adjust post type icons to display properly\n\t\t\t\".ui_notes .activity-notification .activity-notification__icon .ui_post_badge.regular\" +\n\t\t\t\t\"{ background-position: -784px -2px; }\" +\n\t\t\t\".ui_notes .activity-notification .activity-notification__icon .ui_post_badge.quote\" +\n\t\t\t\t\"{ background-position: -784px -30px; }\" +\n\t\t\t\".ui_notes .activity-notification .activity-notification__icon .ui_post_badge.ask_answer, \" +\n\t\t\t\".ui_notes .activity-notification .activity-notification__icon .ui_post_badge.note\" +\n\t\t\t\t\"{ background-position: -785px -170px; }\" +\n\t\t\t\".ui_notes .activity-notification .activity-notification__icon .ui_post_badge.link\" +\n\t\t\t\t\"{ background-position: -785px -58px; }\" +\n\t\t\t\".ui_notes .activity-notification .activity-notification__icon .ui_post_badge.conversation\" +\n\t\t\t\t\"{ background-position: -786px -85px; }\" +\n\t\t\t\".ui_notes .activity-notification .activity-notification__icon .ui_post_badge.audio\" +\n\t\t\t\t\"{ background-position: -785px -114px; }\" +\n\t\t\t\".ui_notes .activity-notification .activity-notification__icon .ui_post_badge.video\" +\n\t\t\t\t\"{ background-position: -785px -141px; }\" +\n\t\t\t\".ui_notes .activity-notification .activity-notification__icon .ui_post_badge.postcard, \" +\n\t\t\t\".ui_notes .activity-notification .activity-notification__icon .ui_post_badge.postcard.fanmail, \" +\n\t\t\t\".ui_notes .activity-notification .activity-notification__icon .ui_post_badge.ask\" +\n\t\t\t\t\"{ background-position: -749px -210px; }\" +\n\n\t\t\t// Fit the date headers in line with the slimmed notes\n\t\t\t\".ui_notes .date_header, .ui_notes .date_header.date_activity\" +\n\t\t\t\t\"{ padding: 0 10px; }\" +\n\n\t\t\t// Put the block button back\n\t\t\t\".ui_notes .activity-notification .activity-notification__icon .activity-notification__icon_block.badge\" +\n\t\t\t\t\"{ transform: translate(-13px, -5px); }\" +\n\n\t\t\t// Allow the activity dropdown to be slimmed properly\n\t\t\t\".activity-popover-notifications .ui_notes .activity-notification .activity-notification__avatar\" +\n\t\t\t\t\"{ height: 25px; }\" +\n\n\t\t\t// Put XKit-added stuff back where it was on old notes\n\t\t\t\".activity-notification div.retags { margin: 0 !important; padding-left: 41px !important; }\" +\n\t\t\t\".is_retags .activity-notification__activity_message.conversational { margin-bottom: 0 !important; }\" +\n\t\t\t\".xkit-activity-plus-timestamp { transform: translate(-13px); }\" +\n\t\t\t\".xkit-reply-button-pn.xkit-notes-activity { transform: translate(25px,-9px); }\",\n\t\t\t\"tweaks_slim_activity_feed\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.old_sidebar_width.value && !XKit.interface.where().following) {\n\t\t\tXKit.tools.add_css(\".right_column, .toastr .toast-kit, .small_links {width: 250px !important;} \" +\n\t\t\t\".left_column{margin-left:75px;} #sidebar_footer_nav{margin-left: -420px !important;} .pagination{padding-left:160px;}\",\n\t\t\t\"tweaks_old_sidebar_width\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.old_photo_margins.value) {\n\t\t\tXKit.post_listener.add(\"tweaks\", XKit.extensions.tweaks.old_photo_margins);\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.no_mobile_banner.value) { //mobile stuff\n\t\t\tXKit.tools.add_css(\".mobile_app_banner, .mobile-banner {display: none}\", \"tweaks_no_mobile_banner\");\n\t\t\t$(\".mobile_banner_active\").removeClass(\"mobile_banner_active\");\n\t\t\t$(\".mobile-app-banner-visible\").removeClass(\"mobile-app-banner-visible\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.grey_urls.value) {\n\t\t\tXKit.tools.add_css(\".xkit-outbox-link {color: #A1A1A1 !important; } .post_full .post_header .post_info .post_info_link:first-child {color: #A1A1A1 !important; } .post-form--header .tumblelog-select .caption {color: #A1A1A1 !important; } .post_brick .post_header .post_info_tumblelog {color: #A1A1A1 !important; }\", \"tweaks_grey_urls\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.hide_bubble.value && !XKit.interface.where().dashboard) {\n\n\t\t\tXKit.extensions.tweaks.default_page_title = document.title;\n\t\t\t$(\"#new_post_notice_container\").remove();\n\t\t\tthis.hide_bubble_interval = setInterval(function() {\n\t\t\t\tdocument.title = XKit.extensions.tweaks.default_page_title;\n\t\t\t}, 1000);\n\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.redirect_to_everything.value) {\n\t\t\tif (document.location.href.indexOf(\"://www.tumblr.com/tagged/\") !== -1 && $(\".tag_editors\").length > 0) {\n\t\t\t\tvar m_tag = document.location.href.replace(\"www.tumblr.com/tagged/\", \"\");\n\t\t\t\tm_tag = m_tag.replace(\"tumblr.com/tagged/\", \"\");\n\t\t\t\tm_tag = m_tag.replace(\"https://\", \"\");\n\t\t\t\tm_tag = m_tag.replace(\"http://\", \"\");\n\t\t\t\tm_tag = m_tag.replace(\"#\", \"\");\n\t\t\t\tvar redirect_me = true;\n\t\t\t\tif (m_tag.substring(m_tag.length - 1) === \"/\") {\n\t\t\t\t\tm_tag = m_tag.substring(0, m_tag.length - 1);\n\t\t\t\t}\n\t\t\t\tif (m_tag.indexOf(\"/\") !== -1) {\n\t\t\t\t\tvar m_array = m_tag.split(\"/\");\n\t\t\t\t\tif (m_array[m_array.length - 1] === \"everything\") {\n\t\t\t\t\t\t// Already on everything page.\n\t\t\t\t\t\tredirect_me = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (redirect_me === true) {\n\t\t\t\t\tdocument.location.href = \"http://tumblr.com/tagged/\" + m_tag + \"/everything\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t\tif (XKit.extensions.tweaks.preferences.show_new_on_secondary.value) {\n\n\t\t\ttry {\n\n\t\t\t\tif (document.location.href.indexOf('/dashboard') !== -1) {\n\n\t\t\t\t\tif (!XKit.browser().mobile) { // mobile stuff\n\t\t\t\t\t\tif ($(\"#new_post_buttons\").length > 0) {\n\n\t\t\t\t\t\t\t// Save this.\n\t\t\t\t\t\t\tvar m_to_save = $(\"#new_post_buttons\")[0].outerHTML;\n\t\t\t\t\t\t\tm_to_save = \"!\" + btoa(m_to_save);\n\t\t\t\t\t\t\tXKit.storage.set(\"tweaks\", \"new_post_buttons_html\", m_to_save);\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvar m_btn_html = XKit.storage.get(\"tweaks\", \"new_post_buttons_html\", \"\");\n\t\t\t\t\t\t\tif (m_btn_html !== \"\" || typeof m_btn_html !== \"undefined\") {\n\t\t\t\t\t\t\t\tif (m_btn_html.substring(0, 1) === \"!\") {\n\t\t\t\t\t\t\t\t\tm_btn_html = atob(m_btn_html.substring(1));\n\t\t\t\t\t\t\t\t\t$(\"#posts\").prepend(m_btn_html);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} catch (e) {\n\n\t\t\t\tconsole.log(\"Tweaks -> Can't run show_on_secondary, \" + e.message);\n\n\t\t\t}\n\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.border_asks.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".post-composer_note-post .note_item, .post_full.is_note .post-body .note_item, .post_full.is_note .post_body .note_item, .post_brick.is_note .note_item { border-color: #ccc } .post_full.is_note .nipple, .post-composer_note-post .nipple, .post_brick.is_note .nipple { border-left: 8px solid #ccc } .post_full.is_note .nipple::after, .post-composer_note-post .nipple::after, .post_brick.is_note .nipple::after { display: inline; position: absolute; content: ''; width: 0; height: 0; border-top: 8px solid transparent; border-bottom: 8px solid transparent; border-left: 8px solid #f2f2f2; right: 1px; top: -8px }\", \"xkit_tweaks_border_asks\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.wide_sources.value) {\n\t\t\tXKit.tools.add_css(\".post-source-link { max-width: 400px !important }\", \"xkit_tweaks_wide_sources\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.hide_radar.value) {\n\t\t\tif (XKit.page.react) {\n\t\t\t\t$(`${XKit.css_map.keyToCss('radar')}`).parent().hide();\n\t\t\t} else {\n\t\t\t\t$(\"#tumblr_radar\").css(\"display\", \"none\");\n\t\t\t\t$(\".radar_header\").parent().css(\"display\", \"none\");\n\t\t\t}\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.real_red.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\" .like.liked.post_control:after { background-position: 4px 3px !important; background-size: auto auto !important; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAARCAYAAAA/mJfHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDQzQ0MxODI5Qzc4MTFFMzg1NkE5NjNCNTgyRjU3NjEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDQzQ0MxODM5Qzc4MTFFMzg1NkE5NjNCNTgyRjU3NjEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpENDNDQzE4MDlDNzgxMUUzODU2QTk2M0I1ODJGNTc2MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpENDNDQzE4MTlDNzgxMUUzODU2QTk2M0I1ODJGNTc2MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Poem3hoAAAEdSURBVHjaYtypzQADjEBsDcQGQPweiLcD8TsGTCAExF5ALADEF4D4KBD/B0mwQBVoAPEKINZH0vQFiMuAeDqSWCYQdwExD5LYRSCOAOIbTEBCEIh3oxnEANUwDaoZBHqhfB40dfpQ/YIglxUCsQwDblAKxJZAbINHDUh/PshlPgyEgQ0RanxBhikyUAcoMjFQDzCCDHtEJcMeMUFjghpgF8iwuUD8h0KDQPrnggy7DsRTKDRsCizRgkA5EB8n06DjUP0MMMN+AbEfEJ8j0aBzUH2/kA0DgTdA7ADEa4g0aDVU/RuYAHo6+wzEoUCcBWVjA5+h8mHoanAlWlBJoQXE69DE10LFp2PThC8HPAHiYGgmXwSlQ6DiWAFAgAEALHgzuY5LA00AAAAASUVORK5CYII=); } #tab_switching .tab_notice, #header .tab .tab_notice, .popover_blogs .tab_notice, .blog_menu .selected_blog .tab_notice { background-color: #bb2502; }\", \"xkit_tweaks_real_red\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.no_footer_background.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".post_full .post_footer { margin-top: 13px; background: transparent !important; border-top: 1px solid #e3e3e3; }\", \"xkit_tweaks_no_footer_background\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.hide_blog_search.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".blog.search_results_section { display: none !important }\", \"xkit_tweaks_hide_blog_search\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.classic_post_titles.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".post-typography-update .post.is_conversation .post_content .post_title, .post-typography-update .post.is_regular .post_content .post_title, .post-typography-update .post .post-content .title-field *, .reblog-title { font-family: \\\"Helvetica Neue\\\", Helvetica, sans-serif !important; font-size: 22px !important; font-weight: bold !important; line-height: normal !important; min-height: 25px !important; } .post_title { font-size: 22px !important; line-height: normal !important; font-weight: bold !important; font-family: \\\"Helvetica Neue\\\", Helvetica, sans-serif !important; }\", \"xkit_tweaks_classic_post_titles\");\n\t\t\tXKit.extensions.tweaks.add_css(\".post .post_content h2 { font-size: 15px !important; line-height: normal !important; font-weight: bold !important; font-family: \\\"Helvetica Neue\\\", Helvetica, sans-serif !important; }\", \"xkit_tweaks_classic_post_titles\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.bold_links_new.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".post .post-content a, .post .post_content a { font-weight: bold !important; }\", \"xkit_tweaks_bold_links\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.swap_buttons.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".post_ask_answer_buttons_flipped .chrome.blue { margin-left: 0; } .post_ask_answer_buttons_flipped .chrome { margin-left: 0; margin-right: 5px; float: left; } .post_ask_answer_buttons_flipped .ask_cancel_button { float: right; margin-right: 0; } .post-form--controls .control.left { text-align: right; display: inline-block; width: auto; float: right; } .post-form--controls .control.right { text-align: left; display: inline-block; width: auto; float: left; } .post-forms--social-buttons .social-buttons { position: absolute; left: 50% }\", \"xkit_tweaks_bold_links\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.tag_slot_separator.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".post-form--tag-editor { border-top: 1px solid rgb(240,240,240); padding-top: 15px; }\", \"ffff\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.full_width_gifs.value) {\n\t\t\tXKit.interface.post_window_listener.add(\"tweaks-full-width-gifs\", XKit.extensions.tweaks.full_width_gifs_do_first);\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.fullres_inline.value) {\n\t\t\tXKit.extensions.tweaks.do_fullres_inline();\n\t\t\tXKit.post_listener.add(\"tweaks\", XKit.extensions.tweaks.do_fullres_inline);\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.show_top_arrow.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".elevator-wrapper { display: block !important; } .elevator { opacity: 1 !important; visibility: visible !important; transform: translateY(0px) translateZ(0px) !important; }\", \"xkit_tweaks_show_top_arrow\");\n\t\t\tXKit.tools.add_function(function() {\n\t\t\t\tTumblr.KeyCommands.elevate = function() {jQuery(\"html, body\").stop(true).animate({scrollTop:0}, \"slow\");};\n\t\t\t}, true, \"\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.larger_top_arrow.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".elevator-wrapper { transform: scale(2.5) translateZ(0px); }\", \"xkit_tweaks_larger_top_arrow\");\n\t\t\tXKit.tools.add_function(function() {\n\t\t\t\tTumblr.KeyCommands.elevate = function() {jQuery(\"html, body\").stop(true).animate({scrollTop:0}, \"slow\");};\n\t\t\t}, true, \"\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.no_animate_scroll.value) {\n\t\t\tXKit.tools.add_function(function() {\n\t\t\t\tTumblr.KeyCommands.animate_scroll = false;\n\t\t\t}, true, \"\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.fix_small_text_on_reblogs.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".is_reblog small { font-size: 12px !important; }\", \"xkit_tweaks_larger_small_text_on_reblogs\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.responsive_dash.value && XKit.interface.where().dashboard) {\n\t\t\tXKit.extensions.tweaks.add_css(\n\t\t\t\t\".l-container--two-column-dashboard {padding-left: 0px!important;padding-right: 0px!important;}\" +\n\t\t\t\t\"@media screen and (max-width: 899px) {\" +\n\t\t\t\t\t\".right_column {visibility: hidden;display: none;width: 0px!important;}\" +\n\t\t\t\t\t\"#sidebar_footer_nav {visibility: hidden;}\" +\n\t\t\t\t\t\".l-content {width: 625px;}\" +\n\t\t\t\t\t\".l-container--two-column-dashboard {width: 645px!important;}\" +\n\t\t\t\t\"}\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.slim_popups.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".tumblelog_menu_link { padding: 6px 10px 6px 34px !important; font-size: 13px !important; }\" +\n\t\t\t\t\t\t\".tumblelog_menu .tumblelog_menu_link:before { left: 7px !important; top: 5px !important; } \", \"xkit_tweaks_slim_popups\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.hide_like_animation.value) {\n\t\t\tif (XKit.page.react) {\n\t\t\t\tXKit.extensions.tweaks.add_css(`${XKit.css_map.keyToCss('postLikeHeartAnimation')} { display: none !important; }`, \"xkit_tweaks_hide_like_animation\");\n\t\t\t} else {\n\t\t\t\tXKit.extensions.tweaks.add_css(\" .post .post_animated_heart { display: none !important; width: 0 !important; }\", \"xkit_tweaks_hide_like_animation\");\n\t\t\t}\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.pin_avatars.value) {\n\t\t\tif (!XKit.browser().mobile) { // mobile stuff\n\t\t\t\tif (XKit.page.react) {\n\t\t\t\t\tlet stickyContainerSelector = XKit.css_map.keyToClasses('stickyContainer').map(cssClass => `.${cssClass} > div`).join(',');\n\t\t\t\t\tXKit.extensions.tweaks.add_css(`${stickyContainerSelector} {\n\t\t\t\t\t\tposition: unset !important;\n\t\t\t\t\t}`, 'xkit_pin_avatars');\n\t\t\t\t} else {\n\t\t\t\t\tXKit.extensions.tweaks.add_css(\".post_avatar.post-avatar--fixed { position: absolute !important; top: 0 !important; left: -85px !important; } .post_avatar.post-avatar--absolute { position: absolute; top: 0 !important; left: -85px !important; bottom: inherit !important; } .post_avatar.post-avatar--sticky .avatar-wrapper { position: absolute !important; top: 0px !important; height: auto; width: auto; } .post_avatar.post-avatar--sticky { height: 64px !important; }\", \"xkit_pin_avatars\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.small_quotes.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".post.is_quote .post_title.large, .post.is_quote .post_title.extra_large { font-size: 20px; line-height: 22px; }\", \"xkit_tweaks_small_quotes\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.hide_recommended.value) {\n\t\t\tif (XKit.page.react) {\n\t\t\t\t$(`${XKit.css_map.keyToCss('recommendedBlogs')}`).parent().hide();\n\t\t\t} else {\n\t\t\t\tXKit.extensions.tweaks.add_css(\".controls_section.recommended_tumblelogs { display: none !important; }\", \"xkit_tweaks_hide_recommended\");\n\t\t\t}\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.hide_share_menu.value) {\n\t\t\tXKit.tools.add_css(\".post_control.share { display: none; } \", \"xkit_tweaks_hide_share\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.hide_explore.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".post .explore-trending-badge-footer, .post .recommendation-reason-footer { display: none; } \", \"xkit_tweaks_hide_explore\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.hide_explore_buttons.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\"#discover_button, a[href=\\\"/explore\\\"] { display: none; } \", \"xkit_tweaks_hide_explore_buttons\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.hide_notes.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".post .post_notes { visibility: hidden; } \", \"xkit_tweaks_hide_notes\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.hide_tags.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".post .post_tags { display: none; } \", \"xkit_tweaks_hide_tags\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.hide_section_headers.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".controls_section li.section_header { display: none; } \", \"xkit_tweaks_hide_section_headers\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.always_show_move_to_top.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\"#posts .post .post_control.move_to_top { display: inline-block !important; } \", \"always_show_move_to_top\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.slim_sidebar.value) {\n\t\t\tvar moz_fix = \"\";\n\t\t\tif (XKit.browser().firefox) {\n\t\t\t\tmoz_fix = \" top: -5px !important; \";\n\t\t\t}\n\t\t\tvar m_css = \"li.section_header { height: 22px !important; line-height: 20px !important; font-size: 11px !important; } .activity canvas { zoom: 0.6; -moz-transform: scale(0.6); } .controls_section li { height: 25px; line-height: 19px; } .controls_section li a, .controls_section li .hide_overflow { line-height: 23px; font-size: 12px; } .controls_section li a { padding: 3px 13px 10px 40px; font-size: 13px; } .controls_section li>a:after { zoom: 0.80; -moz-transform: scale(0.77); left: 14px; top: -2px; \" + moz_fix + \" } .controls_section a .count { top: 3px !important; } .controls_section .sub_control.link_arrow { margin-top: -6px; } #popover_button_blogs { height: auto; } #fan_mail_controls, #fan_mail_controls li, #recommended_tumblelogs li, #tag_editors li, #tag_contributors li { height: auto; } .controls_section a .count { line-height: 19px; } .controls_section li .icon_left { top: 2px !important; position: absolute; left: 12px !important; font-size: 18px !important; line-height: 21px !important; }\" +\n\t\t\t\t\".controls_section.follow_list.recommended_tumblelogs>li, .controls_section.follow_list>li { height: auto !important; } .controls_section li a, .controls_section li .hide_overflow {line-height: 20px !important;}\" +\n\t\t\t\t\".controls_section li a {padding: 0 0 0 0; } .xtag .result_title {padding: 1px 0px 8px 40px !important; } .result_sub_title {padding: 1px 0px !important; } .controls_section a .count {top: 0px !important; } .identity .controls_section a .count {right: 15px; } .icon_plus.follow_icon { font-size: 24px; }\";\n\t\t\tif (!$(\"body\").hasClass(\"settings_actions_tumblelog\")) {\n\t\t\t\tXKit.extensions.tweaks.add_css(m_css, \"xkit_tweaks_slim_sidebar\");\n\t\t\t}\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.hide_follows.value) {\n\t\t\tif (XKit.page.react) {\n\t\t\t\tlet postFollowButtonSelectors = XKit.css_map.descendantSelector('post', 'followButton');\n\t\t\t\tXKit.extensions.tweaks.add_css(`${postFollowButtonSelectors} {\n\t\t\t\t\tdisplay: none !important;\n\t\t\t\t}`, 'xkit_tweaks_hide_follows');\n\t\t\t} else {\n\t\t\t\tXKit.extensions.tweaks.add_css(\".note a.follow {display: none !important; } .notification_follow, .reblog_follow_button { display: none !important; } #posts .notes_outer_container.popover .note a.follow { display: none !important; } #posts .notes_outer_container.popover .note.like a.block { right: 16px; }\", \"xkit_tweaks_hide_follows\");\n\t\t\t}\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.fix_blockquotes.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\"#posts .post_content blockquote { border-left: solid 2px #e7e7e7; padding-left: 8px; margin-left: 0px; }\", \"xkit_tweaks_fix_blockquotes\");\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.dont_show_liked_on_dashboard.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\"#posts .post.is_liked { display: none !important; }\", \"xkit_tweaks_dont_show_liked\");\n\t\t\tXKit.post_listener.add(\"tweaks\", XKit.extensions.tweaks.check_for_liked_posts);\n\t\t\tXKit.extensions.tweaks.check_for_liked_posts();\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.old_chat_posts.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\".post_full.is_conversation .conversation_lines { border: 1px solid rgb(200,200,200); padding: 0px; font: normal 14px/1.4 \\\"Helvetica Neue\\\",\\\"HelveticaNeue\\\",Helvetica,Arial,sans-serif; } li.chat_line { padding: 10px 17px !important; border-bottom: 1px solid rgb(200,200,200); } li.chat_line:last-child { border-bottom: 0; }\", \"xkit_tweaks_fix_blockquotes\");\n\t\t}\n\n\n\t\tif (XKit.extensions.tweaks.preferences.hide_follower_count.value) {\n\t\t\tXKit.extensions.tweaks.add_css(\n\t\t\t\t\".popover_menu_item_blog a[href*='/followers'] .blog-sub-nav-item-data { display: none; } \" +\n\t\t\t\t\"[data-blog-controls-count='follower_count'] .count { display: none; }\",\n\t\t\t\"xkit_tweaks_hide_follower_count\");\n\t\t}\n\n\t\tif (document.location.href.indexOf('/dashboard') !== -1) {\n\n\t\t\tif (XKit.extensions.tweaks.preferences.dont_show_mine_on_dashboard.value) {\n\t\t\t\tif (!XKit.browser().mobile) { //mobile stuff\n\t\t\t\t\tXKit.extensions.tweaks.add_css(\"#posts .post.is_mine { display: none !important; } #posts .post.new_post_buttons { display: block !important; }\", \"xkit_tweaks_dont_show_mine_on_dashboard\");\n\t\t\t\t\t//XKit.post_listener.add(\"tweaks_fix_hidden_post_height\", XKit.extensions.tweaks.fix_hidden_post_height);\n\t\t\t\t\tXKit.extensions.tweaks.fix_hidden_post_height();\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.scroll_new_posts.value) {\n\t\t\tif (!XKit.browser().mobile) { // mobile stuff\n\t\t\t\t$(window).scroll(function() {\n\t\t\t\t\tif ($(\"#new_post\").length > 0) {\n\t\t\t\t\t\tif ($(window).scrollTop() >= 200) {\n\t\t\t\t\t\t\t$(\"body\").addClass(\"xkit-new-post-scrolls-page\");\n\t\t\t\t\t\t\t$(\"#new_post\").addClass(\"xkit-new-post-scrolls\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$(\"#new_post\").removeClass(\"xkit-new-post-scrolls\");\n\t\t\t\t\t\t\t$(\"body\").removeClass(\"xkit-new-post-scrolls-page\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t$(\"#new_post\").click(function() {\n\t\t\t\t\t$('html, body').animate({\n\t\t\t\t\t\tscrollTop: 30\n\t\t\t\t\t}, 500);\n\n\t\t\t\t\t$(\"#new_post\").removeClass(\"xkit-new-post-scrolls\");\n\t\t\t\t\t$(\"body\").removeClass(\"xkit-new-post-scrolls-page\");\n\n\t\t\t\t});\n\t\t\t\tXKit.extensions.tweaks.add_css(\t\".xkit-new-post-scrolls-page #posts { padding-top: 85px; }\" +\n\t\t\t\t\t\t\"#new_post.xkit-new-post-scrolls { min-width: 540px; position: fixed; top: -5px; z-index: 100; opacity: 0.75; min-height: 88px !important; }\" +\n\t\t\t\t\t\t\"#new_post.xkit-new-post-scrolls:hover { opacity: 1; }\" +\n\t\t\t\t\t\t\"#new_post.xkit-new-post-scrolls #post_buttons { top: -5px !important; }\" +\n\t\t\t\t\t\t\"#new_post.xkit-new-post-scrolls .post_avatar { display: none; }\", \"xkit_tweaks_scroll_new_posts\");\n\t\t\t}\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.notification_badge_style.value !== \"default\" && XKit.page.react) {\n\t\t\tlet notificationBadgeSel = XKit.css_map.keyToClasses('notificationBadge').map(cls => `header a[tabindex=\"-1\"] > .${cls}, header span[tabindex=\"-1\"] > .${cls}`).join(', ');\n\t\t\tlet notificationBadgeStyle = '';\n\t\t\tswitch (XKit.extensions.tweaks.preferences.notification_badge_style.value) {\n\t\t\t\tcase \"hidden\":\n\t\t\t\t\tnotificationBadgeStyle = 'display: none !important;';\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"white\":\n\t\t\t\t\tnotificationBadgeStyle = 'background: rgb(var(--white-on-dark)) !important;';\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"oldred\":\n\t\t\t\t\tnotificationBadgeStyle = `background: rgb(var(--red)) !important;\n\t\t\t\t\t\tcolor: rgb(var(--white-on-dark)) !important;`;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"olderredder\":\n\t\t\t\t\tnotificationBadgeStyle = `background: #bb2502 !important;\n\t\t\t\t\t\tcolor: #fff !important;`;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tXKit.extensions.tweaks.add_css(`${notificationBadgeSel} {\n\t\t\t\t${notificationBadgeStyle}\n\t\t\t}`, 'xkit_tweaks_notification_badge_style');\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.hide_activity_notification_badge.value && XKit.page.react) {\n\t\t\tlet activityAriaLabel = await XKit.interface.translate('Activity');\n\t\t\tlet notificationBadgeSel = XKit.css_map.keyToClasses('notificationBadge').map(cssClass => `button[aria-label=\"${activityAriaLabel}\"] .${cssClass}`).join(',');\n\t\t\tXKit.extensions.tweaks.add_css(`${notificationBadgeSel} {\n\t\t\t\tdisplay: none !important;\n\t\t\t}`, 'xkit_tweaks_hide_activity_notification_badge');\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.hide_post_highlight.value && XKit.page.react) {\n\t\t\tconst ltoSel = XKit.css_map.keyToCss('listTimelineObjectInner');\n\t\t\tXKit.extensions.tweaks.add_css(`${ltoSel} {\n\t\t\t\tbox-shadow: none !important;\n\t\t\t}`, 'xkit_tweaks_hide_post_highlight');\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.grayscale_new_post_button.value && XKit.page.react) {\n\t\t\tlet postIconButtonSel = XKit.css_map.keyToClasses('postIconButton').map(cssClass => `.${cssClass} span`).join(',');\n\t\t\tXKit.extensions.tweaks.add_css(`${postIconButtonSel} {\n\t\t\t\tfilter: grayscale(100%);\n\t\t\t}`, 'xkit_tweaks_grayscale_new_post_button');\n\t\t}\n\n\t\tif (XKit.extensions.tweaks.preferences.subtle_follow_button.value && XKit.page.react) {\n\t\t\tlet followButtonSelectors = XKit.css_map.keyToClasses('followButton');\n\t\t\tlet postSelectors = XKit.css_map.keyToClasses('post');\n\t\t\tlet postFollowButtonSelectors = postSelectors.map(postCssClass => {\n\t\t\t\treturn followButtonSelectors.map(followCssClass => `.${postCssClass} .${followCssClass}`).join(', ');\n\t\t\t}).join(', ');\n\t\t\tXKit.extensions.tweaks.add_css(`${postFollowButtonSelectors} {\n\t\t\t\tcolor: rgba(var(--black), 0.4) !important;\n\t\t\t}`, 'xkit_tweaks_subtle_follow_button');\n\t\t}\n\n\t\tXKit.tools.add_css(XKit.extensions.tweaks.css_to_add, \"xkit_tweaks\");\n\t},\n\n\tshow_all_tags_button_event: function() {\n\t\t$(this).closest('.fadeable').removeClass('fadeable');\n\t\t$(this).remove();\n\t},\n\n\tprocess_wrap_tags_one_line: function() {\n\t\tvar unprocessedTags = $('.post_tags').not('.xkit_tweaks_wrap_tags_one_line_processed');\n\t\t$.each(unprocessedTags, function( index, value ) {\n\t\t\tif ($(value).children('.see-all-tags').length) {\n\t\t\t\t$(value).addClass('xkit_tweaks_wrap_tags_one_line_processed');\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t$(value).append(\"
      ... See all
      \");\n\t\t\t$(value).addClass('fadeable-source fade xkit_tweaks_wrap_tags_one_line_processed');\n\t\t});\n\t},\n\n\told_photo_margins: function() {\n\n\t\tXKit.tools.add_css(\".post_full.is_photoset .photoset .photoset_row .photoset_photo {margin-left: 0;}\", \"tweaks_old_photo_margins\");\n\n\t\t$(\".post_media_photo.image\").each(function() {\n\t\t\tif ($(this).attr(\"width\") > 500 ) {\n\t\t\t\t$(this).attr(\"style\", \"margin-left: 20px; width: 500px;\");\n\t\t\t\t$(this).attr(\"height\", \"auto\");\n\t\t\t}\n\t\t});\n\n\t\t$(\".photoset_row\").each(function() {\n\n\t\t\tvar photoset_row = $(this);\n\t\t\tvar ratio = 1;\n\t\t\tvar is_viscaps = $(this).hasClass('xkit-accesskit-viscaps');\n\n\t\t\tif (photoset_row.attr(\"class\") == \"photoset_row photoset_row_1\") {\n\t\t\t\tratio = 500.0 / 540.0;\n\t\t\t} else if (photoset_row.attr(\"class\") == \"photoset_row photoset_row_2\") {\n\t\t\t\tratio = 245.0 / 268.0;\n\t\t\t} else if (photoset_row.attr(\"class\") == \"photoset_row photoset_row_3\") {\n\t\t\t\tratio = 160.0 / 177.0;\n\t\t\t}\n\n\t\t\tvar photoHeight = parseInt(photoset_row.css(\"height\").slice(0, -2)) * ratio;\n\n\t\t\tphotoset_row.addClass(\"xkit-protected-photoset-row\");\n\n\t\t\tif (!is_viscaps) {\n\t\t\t\tphotoset_row.attr(\"style\", \"margin-left: 20px; margin-bottom: 10px; height: \" + photoHeight + \"px;\");\n\t\t\t} else {\n\t\t\t\tphotoset_row.attr(\"style\", \"margin-left: 20px; margin-bottom: 10px; min-height: \" + photoHeight + \"px;\");\n\t\t\t\tphotoset_row.find(\"div\").attr(\"style\", \"height: \" + photoHeight + \"px;\");\n\t\t\t}\n\n\t\t\tphotoset_row.find(\"img\").each(function() {\n\t\t\t\tvar img = $(this);\n\t\t\t\tvar imgstyle = img.css(\"width\");\n\t\t\t\tif (imgstyle == \"540px\") {\n\t\t\t\t\timg.attr(\"style\", \"width: 500px;\");\n\t\t\t\t} else if (imgstyle == \"268px\") {\n\t\t\t\t\timg.attr(\"style\", \"width: 245px; margin-right: 10px;\");\n\t\t\t\t} else if (imgstyle == \"177px\" || imgstyle == \"178px\") {\n\t\t\t\t\timg.attr(\"style\", \"width: 160px; margin-right: 10px;\");\n\t\t\t\t}\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\tcheck_for_liked_posts: function() {\n\n\t\tif (document.location.href.indexOf('/dashboard') === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar call_update_rect = false;\n\t\t$(\".posts .post\").not(\".xkit-tweaks-checked-for-likes\").each(function() {\n\t\t\t$(this).addClass(\"xkit-tweaks-checked-for-likes\");\n\t\t\tif ($(this).find(\".post_control.like\").hasClass(\"liked\")) {\n\t\t\t\t$(this).addClass(\"is_liked\");\n\t\t\t\tcall_update_rect = true;\n\t\t\t}\n\t\t});\n\n\t\tif (call_update_rect) {\n\t\t\tXKit.extensions.tweaks.fix_hidden_post_height();\n\t\t}\n\n\t},\n\n\tfix_hidden_post_height: function() {\n\n\t\tXKit.tools.add_function(function() {\n\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t}, true, \"\");\n\n\t},\n\n\tcss_to_add: \"\",\n\n\tadd_css: function(css, name) {\n\n\t\tXKit.extensions.tweaks.css_to_add += \" \\n \" + css;\n\n\t},\n\n\tdo_fullres_inline: function() {\n\t\t$('img[src*=\"tumblr_inline\"][src*=\"_540.\"], img[src*=\"tumblr_inline\"][src*=\"_500.\"]').each(function() {\n\t\t\tvar $img = $(this).parent();\n\t\t\t$img.html($img.html().replace(\"_540.\", \"_1280.\").replace(\"_500.\", \"_1280.\"));\n\t\t});\n\t},\n\n\tfull_width_gifs_do_first: function() {\n\t\t$(document.body).on(\"click\", \".post-settings\", function() {\n\t\t\tif (!$(\"#xkit-full-width-gifs\").length) {\n\t\t\t\t$(\".form-horizontal\").append(\"
      \");\n\t\t\t\t$(\"#xkit-full-width-gifs\").on(\"click\", function() {\n\t\t\t\t\tXKit.extensions.tweaks.full_width_gifs_do($(\"#xkit-full-width-gifs\").prop(\"checked\"));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t},\n\n\tfull_width_gifs_do: function(is_checked) {\n\t\tif (!is_checked) {\n\t\t\t$(\".editor-wrapper\").find(\".tmblr-full\").addClass(\"tweaks-full-width-gifs\");\n\t\t\t$(\".editor-wrapper\").find(\".tmblr-full\").removeClass(\"tmblr-full\");\n\t\t\t$(\".editor\").focus();\n\t\t\treturn;\n\t\t} else {\n\t\t\t$(\".editor-wrapper\").find(\".tweaks-full-width-gifs\").addClass(\"tmblr-full\");\n\t\t\t$(\".editor\").focus();\n\t\t\treturn;\n\t\t}\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tthis.addShowTagsObserver.disconnect();\n\n\t\tXKit.tools.remove_css(\"xkit_tweaks\");\n\t\tXKit.tools.remove_css(\"xkit_tweaks_collapsible_tag_display\");\n\t\tXKit.tools.remove_css(\"xkit_tweaks_wrap_tags\");\n\t\tXKit.tools.remove_css(\"xkit_tweaks_wrap_tags_v2\");\n\t\t$(\"body\").off(\"click\", '.xkit_tweaks_show_all_tags_button', XKit.extensions.tweaks.show_all_tags_button_event);\n\t\t$('.xkit_tweaks_show_all_tags_button').remove();\n\t\t$('.post_tags').removeClass('xkit_tweaks_wrap_tags_one_line_processed');\n\t\tXKit.tools.remove_css(\"tweaks_slim_activity_feed\");\n\t\tXKit.tools.remove_css(\"tweaks_old_sidebar_width\");\n\t\tXKit.tools.remove_css(\"tweaks_old_photo_margins\");\n\t\tXKit.tools.remove_css(\"tweaks_no_mobile_banner\");\n\t\tXKit.tools.remove_css(\"xkit_tweaks_larger_small_text_on_reblogs\");\n\t\tXKit.tools.remove_css(\"xkit_tweaks_hide_share\");\n\t\tXKit.tools.remove_css(\"xkit_tweaks_wide_sources\");\n\n\t\tXKit.post_listener.remove(\"tweaks\");\n\n\t\tclearInterval(this.hide_bubble_interval);\n\n\t\t$(\".xkit-small-blog-setting-link\").remove();\n\t\t$(\".small_links.by-xkit\").remove();\n\t\t$(\"#new_post_in_tracked_tags_bubble\").remove();\n\t\t$(\"#tumblr_radar\").css(\"display\", \"block\");\n\t\t$(\"#xkit_customize_button\").remove();\n\t\t$(\"a.spotlight\").parent().css(\"display\", \"block\");\n\t\t$(\"a.activity\").parent().css(\"display\", \"block\");\n\t\t$(\".radar_header\").parent().css(\"display\", \"block\");\n\t\t$(\".customize\").parent().css(\"display\", \"block\");\n\t\t$(\"xkit_post_tags_inner_add_back\").addClass(\"post_tags_inner\");\n\t\t$(\"xkit_post_tags_inner_add_back\").removeClass(\"xkit_post_tags_inner_add_back\");\n\t\tif (XKit.page.react) {\n\t\t\t$(`${XKit.css_map.keyToCss('radar')}`).parent().show();\n\t\t\t$(`${XKit.css_map.keyToCss('recommendedBlogs')}`).parent().show();\n\t\t}\n\n\t\tXKit.tools.remove_css(\"tweaks_grey_urls\");\n\t}\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","title":"Tweaks","description":"Various little tweaks for your dashboard.","developer":"new-xkit","version":"6.0.13","details":"These are small little tweaks that allows you customize your dashboard. If you have used XKit 6, you will notice that some of the extensions have been moved here as options you can toggle. Keep in mind that some of the tweaks (the ones marked with a '*') can slow down your computer.","frame":"false","beta":"false","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/unreverse2.json b/Extensions/dist/unreverse2.json new file mode 100644 index 000000000..9e18456da --- /dev/null +++ b/Extensions/dist/unreverse2.json @@ -0,0 +1 @@ +{"id":"unreverse2","script":"//* TITLE Unreverse **//\n//* VERSION 1.0.3 **//\n//* DESCRIPTION Places the post buttons on top **//\n//* DETAILS This extension places the reblog/like/reply/etc buttons on the top of the post. It is unsupported, and might cause problems with your dashboard. Please use with caution. **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.unreverse2 = new Object({\n\n\trunning: false,\n\n\trun: function() {\n\n\t\tif (XKit.interface.where().inbox === true) { return; }\n\n\t\tthis.running = true;\n\t\tXKit.tools.init_css(\"unreverse2\");\n\t\tXKit.post_listener.add(\"unreverse2\", XKit.extensions.unreverse2.do);\n\t\tXKit.extensions.unreverse2.do();\n\n\t\tif (XKit.storage.get(\"unreverse2\", \"shown_warning\", \"\") !== \"yas\") {\n\n\t\t\tXKit.window.show(\"Unsupported extension\", \"Unreverse is an unsupported extension, which might cause problems with your dashboard.

      You can still use it, but no support will be provided if you use it. If you experience any problems such as popup menus not opening, please disable this extension before contacting XKit support.\", \"warning\", \"
      OK
      \");\n\n\t\t\t$(\"#unreverse-warning-close-button\").click(function() {\n\t\t\t\tXKit.storage.set(\"unreverse2\", \"shown_warning\", \"yas\");\n\t\t\t\tXKit.window.close();\n\t\t\t});\n\n\t\t}\n\n\t},\n\n\tdo: function() {\n\n\t\t$(\".post.post_full\").not(\".unreverse-done\").each(function() {\n\t\t\t$(this).addClass(\"unreverse-done\");\n\t\t\t$(this).find(\".post_source\").clone().removeClass(\"post_source\").addClass(\"unreverse_post_source\").appendTo($(this).find(\".post_footer\"));\n\t\t});\n\n\t},\n\n\tdo_reverse: function() {\n\n\t\t$(\".unreverse_post_source\").remove();\n\n\t\t$(\".post.post_full.unreverse-done\").each(function() {\n\t\t\t$(this).removeClass(\"unreverse-done\");\n\t\t});\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.tools.remove_css(\"unreverse2\");\n\t\tXKit.extensions.unreverse2.do_reverse();\n\t\tXKit.post_listener.remove(\"unreverse2\");\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDNEY0MERFNjQyNUMxMUUzOTM4NEFERTg2NTAwRDBDNSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDNEY0MERFNTQyNUMxMUUzOTM4NEFERTg2NTAwRDBDNSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+L1xb2wAAA89JREFUeNrsWVtIVEEY/mb2KK5IktcgkagHN0uwhAwrWsx6inrPKAQjqBe7EL5V9FQ9BJV0oQtUFAXRjQgyAtuSIoI0qba0C5hmaZt5WV0v28x6O7ueOTu54p6J/ZmH4cx/Zv9/vv/yzVmSetYPlUUjUFuo4varj4BGSCwHoo2A4g4YPj26IppuDfnhakHNN3/3wFRDaLMjyue6dSF+eMmhF7jZFCZFKQuhycMKkmHHCScq8omhhePDGIHKZ9E0PTEOWxyYN4vP9xXgbQd51CzEgWRdGLZmdp5fQ9Zl80lTJ0pu+Qf9ohBiTlhy7Hb5O/q4iQuSUZBORGrWdaDLhwdfRo/ZkSJU06iF+8BP71hCJ0Jkp0Ys3MnG4z6eQmSnZmU6SnQTkZ2UQRP5OLYKRXPC6BRmIsEW9GRZBpLizF6ZcECso9nkIoj9NvsxkWQloaoY5dWo7zBYzZ3Ny/mSTLg9uPcZl99xZ7bnoSATjZ247saNjwIEyAQCIjtlk3j9fBwohLm3F9dh2yO8bg96uCgFp4qRmsDneal8LE7B2mzYtVHfDi7n88vvTUOImCSx9M2NWd81gN/9BqtpCdyI1h6+GrIhs3XE+nHZMD/09VIHrpg6EDKfEp0OqN1uwpFXBouX1iLVjrJqePpDqVS/RKP3DgoImC6ERHbK5kB8oAp87zWOorp2XHVjaBhxFMPBPd9ukyA/mvG2VBdCIjtlq1CnD1X1uOY2Xj1eh3Q7TjoNllzf0BOO1t/9JKhCOgSEVUgyiWua+T1j71I8/IqGX6GryfE4V4LewTF2pROm/LINzizhzozw3PlknKMySUxpAKmww+/HjjxsyuEvxE8aLE5YEvcPGb+7/zmetwrJws7H8PQZvxjSyAyHZpNoxcz78kUoy+XzKieHwvComJrhbr5h7HmKw0VYOTfoeXM3v3h87YbIBkp1fYBGUEaJTk8EJauwf3zCYscArKzF6izsykeanZedS+9w/wvavZA0QFhGJXPgTAM/j9IcVDzBB4/ASrF744lU24KNC+BqRpvX7Dj+pZFJk9HTb3issyrpE5f2sLsxgnmzUUozRCfSPjAirFwCsM0UASe6JIyUC0WHTgf3gWlAYIZFphOrj4DqNzKpRha1ECK6EIqkkVkBChJDwKoIaCogEOD9CiIgdSfWVGhklAhP2tL/kU0/mYtWCJmROfURoAo4QE2ulFSFEDK7kVmaTk/jx90YAjEE/t8bmeoIEEUQ+H+pROy70EzQaVW/C7la+QjpCZMcgNqiUcU9sHQOyCGgvAOIhVBU5a8AAwDZvtGnunBxuwAAAABJRU5ErkJggg==","css":".post_full .post_controls {\n\tposition: absolute;\n\ttop: 2px;\n\tright: 0px;\n\ttext-align: right;\n\twidth: 100%;\n\tpadding-right: 18px;\n\tdisplay: block;\n\tz-index: 0;\n\twidth: 60%;\n}\n\n.post_full .post_header {\n\n\tposition: relative;\n\tz-index: 1000;\n\twidth: 40%;\n\n}\n\n.unreverse_post_source {\n\n\tfloat: right;\n\tdisplay: block;\n\twidth: 350px;\n\tfont-size: 12px;\n\ttext-align: right;\n\n}\n\n.post_full .post_source { display: none !important; }\n\n.post .unreverse_post_source { font-weight: normal; }\n\n.post .unreverse_post_source .post_source_name_prefix {\n\n\tpadding-right: 6px;\n\n}\n\n.post .unreverse_post_source .post_source_link {\n\n\tcolor: #a7a7a7;\n\ttext-decoration: none;\n\n}\n\n.post .unreverse_post_source .post_source_link:hover{\n\n\tcolor: #969696;\n\n}\n","title":"Unreverse","description":"Places the post buttons on top","developer":"STUDIOXENIX","version":"1.0.3","details":"This extension places the reblog/like/reply/etc buttons on the top of the post. It is unsupported, and might cause problems with your dashboard. Please use with caution.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/vanilla_audio.json b/Extensions/dist/vanilla_audio.json new file mode 100644 index 000000000..d4e64372b --- /dev/null +++ b/Extensions/dist/vanilla_audio.json @@ -0,0 +1 @@ +{"id":"vanilla_audio","script":"//* TITLE Vanilla Audio **//\n//* VERSION 0.2.1 **//\n//* DESCRIPTION\tAdds an alternative audio player to audio posts. **//\n//* DETAILS This extension adds a native HTML5 audio player to every audio post, with an option for the default volume and the ability to loop the audio. **//\n//* DEVELOPER akunohomu **//\n//* FRAME false **//\n//* BETA true **//\n\nXKit.extensions.vanilla_audio = new Object({\n\n\trunning: false,\n\n\tpreferences: {\n\t\t\"default_volume\": {\n\t\t\ttext: \"Default volume\",\n\t\t\tdefault: 1.0,\n\t\t\tvalue: 1.0,\n\t\t\ttype: \"combo\",\n\t\t\tvalues: [\n\t\t\t\t\"100%\", 1.0,\n\t\t\t\t\"75%\", 0.75,\n\t\t\t\t\"50%\", 0.50,\n\t\t\t\t\"25%\", 0.25\n\t\t\t],\n\t\t\tdesktop_only: true\n\t\t}\n\t},\n\n\trun: function() {\n\t\t\"use strict\";\n\t\tthis.running = true;\n\t\tXKit.post_listener.add(\"vanilla_audio\", this.add_audio);\n\t\tthis.add_audio();\n\t},\n\n\tadd_audio: function() {\n\t\t\"use strict\";\n\t\t$(\".native-audio-container\").not(\".xkit-audio-added\").each(function(index) {\n\t\t\tvar $this = $(this);\n\t\t\t$this.addClass(\"xkit-audio-added\");\n\t\t\tvar url = $this.attr(\"data-stream-url\");\n\t\t\tvar key = $this.attr(\"data-post-key\");\n\t\t\tif (url && key) {\n\t\t\t\tvar player = $(\"\");\n\t\t\t\tplayer.prop(\"volume\", XKit.extensions.vanilla_audio.preferences.default_volume.value);\n\t\t\t\t$this.parent().after(player);\n\t\t\t}\n\t\t});\n\t},\n\n\tdestroy: function() {\n\t\t\"use strict\";\n\t\tXKit.post_listener.remove(\"vanilla_audio\");\n\t\t$(\".xkit-audio-added\").removeClass(\"xkit-audio-added\");\n\t\t$(\".xkit-audio-player\").remove();\n\t\tthis.running = false;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAADDpiTIAAAC+lBMVEUAAABaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpzhTbLAAAA/XRSTlMA/gL7AQb2/QT5DO8J8xAZFOt4FS+iDVQj5rP1oGXjIdbuZ4/k2EIXHjzh1OwgPu3FtHoWMKPKkeUkfgdEu4A126roKNCZEUzCComyHwXEdo1AyLZ8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\n","title":"Vanilla Audio","description":"Adds an alternative audio player to audio posts.","developer":"akunohomu","version":"0.2.1","details":"This extension adds a native HTML5 audio player to every audio post, with an option for the default volume and the ability to loop the audio.","frame":"false","beta":"true","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/vanilla_video.json b/Extensions/dist/vanilla_video.json new file mode 100644 index 000000000..7b723534c --- /dev/null +++ b/Extensions/dist/vanilla_video.json @@ -0,0 +1 @@ +{"id":"vanilla_video","script":"//* TITLE Vanilla Videos **//\n//* VERSION 1.0.1 **//\n//* DESCRIPTION Make the video player unexciting **//\n//* DETAILS Use the browser's native video controls. Only affects Tumblr's player. **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA true **//\n//* SLOW true **//\n\n'use strict';\n\nXKit.extensions.vanilla_video = {\n\n\tpreferences: {\n\t\t\"default_volume\": {\n\t\t\ttext: \"Default volume\",\n\t\t\tdefault: 1.0,\n\t\t\tvalue: 1.0,\n\t\t\ttype: \"combo\",\n\t\t\tvalues: [\n\t\t\t\t\"100%\", 1.0,\n\t\t\t\t\"75%\", 0.75,\n\t\t\t\t\"50%\", 0.50,\n\t\t\t\t\"25%\", 0.25,\n\t\t\t\t\"0% (muted)\", 0.0\n\t\t\t],\n\t\t},\n\t\t\"pause_on_click\": {\n\t\t\ttext: \"Play/pause the video by clicking on it\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"loop\": {\n\t\t\ttext: \"Loop by default\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"use_hd\": {\n\t\t\ttext: \"Use HD videos where available\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"background_color\": {\n\t\t\ttext: \"Background color (what is this?)\",\n\t\t\ttype: \"text\",\n\t\t\tdefault: \"#000000\",\n\t\t\tvalue: \"#000000\"\n\t\t},\n\t\t\"disable_preload\": {\n\t\t\ttext: \"Disable video preloading (may save data)\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t},\n\n\trunning: false,\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tif (this.preferences.background_color.value === \"\") {\n\t\t\tthis.preferences.background_color.value = \"#000000\";\n\t\t}\n\n\t\tif (XKit.page.react) {\n\t\t\tXKit.tools.add_css(\".xkit-vanilla-video ~ * {display: none !important;}\");\n\t\t\tXKit.post_listener.add('vanilla_video', this.replace_players);\n\t\t\tthis.replace_players();\n\t\t\treturn;\n\t\t}\n\n\t\tXKit.post_listener.add('vanilla_video', function() { setTimeout(XKit.extensions.vanilla_video.check, 10); });\n\t\tXKit.extensions.vanilla_video.check();\n\t},\n\n\treplace_players: function() {\n\t\tconst {preferences} = XKit.extensions.vanilla_video;\n\n\t\t$(\"video:not(.xkit-vanilla-video-done):not(.xkit-vanilla-video)\").each(function() {\n\t\t\tconst $this = $(this);\n\t\t\tconst $newPlayer = $this.clone();\n\t\t\tconst $parent = $this.parent();\n\n\t\t\t$this.addClass('xkit-vanilla-video-done');\n\n\t\t\t$newPlayer\n\t\t\t.addClass(\"xkit-vanilla-video\")\n\t\t\t.css({\n\t\t\t\t\"cursor\": \"auto\",\n\t\t\t\t\"background-color\": preferences.background_color.value,\n\t\t\t})\n\t\t\t.attr({\n\t\t\t\t\"controls\": true,\n\t\t\t\t\"loop\": preferences.loop.value ? \"true\" : null,\n\t\t\t\t\"preload\": preferences.disable_preload.value ? \"none\" : null,\n\t\t\t});\n\n\t\t\t$newPlayer[0].volume = preferences.default_volume.value;\n\t\t\t$newPlayer[0].pause();\n\t\t\t$newPlayer[0].currentTime = 0;\n\n\t\t\t$parent.prepend($newPlayer);\n\t\t});\n\t},\n\n\tcpanel: function() {\n\t\t$(\"#xkit-vanilla-video-color-help\").click(function() {\n\t\t\tXKit.window.show(\"Background color\", \"The Vanilla Videos extension allows you to set the background color used when videos do not fill the whole player, generally due to being very narrow. Any CSS color value works, for example:

      • #000000
      • #FF0000
      • rgba(0, 0, 0, 0)

      These would produce black, red, and transparent respectively.

      Please be careful while customizing the color. An improper value can cause issues. In that case, just delete the text you've entered completely and XKit will revert to the default color.\", \"info\", \"
      OK
      \");\n\t\t});\n\t},\n\n\tcheck: function() {\n\t\tvar doneClass = 'xvanilla_video-done';\n\t\t$('.posts .post').not('.' + doneClass).each(function() {\n\t\t\tvar post = $(this);\n\t\t\tpost.addClass(doneClass);\n\t\t\tvar videoEmbeds = post.find('.dockable_video_embed').add('.crt-video');\n\t\t\tvideoEmbeds.each(function() {\n\t\t\t\tvar videoEmbed = $(this);\n\t\t\t\tif (videoEmbed.attr('data-embed-service') !== 'tumblr_video' && !videoEmbed.hasClass('crt-video')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar sources = videoEmbed.find('video > source');\n\t\t\t\tvar newVideo = document.createElement('video');\n\t\t\t\tsources.each(function() {\n\t\t\t\t\tvar origVideo = this.parentElement;\n\t\t\t\t\tvar clonedSource = document.createElement('source');\n\t\t\t\t\tclonedSource.type = this.type;\n\t\t\t\t\tclonedSource.src = this.src;\n\t\t\t\t\tif (XKit.extensions.vanilla_video.preferences.use_hd.value) {\n\t\t\t\t\t\tclonedSource.src = clonedSource.src.replace(/\\/480$/, \"\");\n\t\t\t\t\t}\n\t\t\t\t\tnewVideo.poster = origVideo.poster;\n\t\t\t\t\tnewVideo.appendChild(clonedSource);\n\t\t\t\t});\n\t\t\t\tif ($(newVideo).find(\"source\").length === 0) {\n\t\t\t\t\t// remove doneClass?\n\t\t\t\t\treturn; // FIXME sometimes a page ends up with all broken videos (missing source) - not sure why. haven't seen it since I added this but might just be a coincidence\n\t\t\t\t}\n\t\t\t\tnewVideo.controls = true;\n\t\t\t\tnewVideo.style = \"width: 100%;\" +\n\t\t\t\t\t\t\t\t \"display: block;\" +\n\t\t\t\t\t\t\t\t \"margin: auto;\" +\n\t\t\t\t\t\t\t\t \"max-height: 600px;\" +\n\t\t\t\t\t\t\t\t \"background: \" + XKit.extensions.vanilla_video.preferences.background_color.value + \";\";\n\t\t\t\tnewVideo.volume = XKit.extensions.vanilla_video.preferences.default_volume.value;\n\t\t\t\tnewVideo.loop = XKit.extensions.vanilla_video.preferences.loop.value;\n\t\t\t\tif (XKit.extensions.vanilla_video.preferences.disable_preload.value) {\n\t\t\t\t\tnewVideo.preload = \"none\";\n\t\t\t\t}\n\t\t\t\tif (XKit.extensions.vanilla_video.preferences.pause_on_click.value) {\n\t\t\t\t\tnewVideo.addEventListener(\"click\", function() { this.paused ? this.play() : this.pause(); });\n\t\t\t\t}\n\t\t\t\tvideoEmbed.replaceWith(newVideo);\n\t\t\t});\n\t\t});\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\tXKit.tools.remove_css('vanilla_video');\n\t\tXKit.post_listener.remove('vanilla_video');\n\t\t$('.xkit-vanilla-video').remove();\n\t\t$('.xkit-vanilla-video-done').removeClass('xkit-vanilla-video-done');\n\t}\n};\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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","title":"Vanilla Videos","description":"Make the video player unexciting","developer":"new-xkit","version":"1.0.1","details":"Use the browser's native video controls. Only affects Tumblr's player.","frame":"false","beta":"true","slow":"true"} \ No newline at end of file diff --git a/Extensions/dist/video_downloader.json b/Extensions/dist/video_downloader.json new file mode 100644 index 000000000..bd734aabb --- /dev/null +++ b/Extensions/dist/video_downloader.json @@ -0,0 +1 @@ +{"id":"video_downloader","script":"//* TITLE Video Downloader **//\n//* VERSION 1.0.0 **//\n//* DESCRIPTION Adds a download button to the video player **//\n//* DETAILS Adds a simple download button to all videos using the fancy player. Does not support 3rd-party players or the native player. Disabled on beta dash (now supported natively) **//\n//* DEVELOPER tlitookilakin **//\n//* FRAME false **//\n//* BETA false **//\nXKit.extensions.video_downloader = new Object({\n\n\trunning: false,\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tif (!XKit.interface.is_tumblr_page() || XKit.page.react) {\n\t\t\treturn;\n\t\t}\n\t\tXKit.tools.init_css(\"video_downloader\");\n\t\tXKit.extensions.video_downloader.addButtons();\n\t\tXKit.post_listener.add(\"video_downloader\", XKit.extensions.video_downloader.addButtons);\n\t},\n\n\tdestroy: function() {\n\t\tXKit.post_listener.remove(\"video_downloader\");\n\t\tthis.running = false;\n\t},\n\t\n\tmakeButton: function(url) {\n\t\tvar el = document.createElement(\"a\");\n\t\tvar filename = url.split(\"/\").pop();\n\t\tel.classList.add(\"xvd-button\");\n\t\tel.setAttribute(\"href\", url);\n\t\tel.setAttribute(\"target\", \"_blank\");\n\t\tel.setAttribute(\"download\", filename);\n\t\tel.innerText = \"Download this video\";\n\t\treturn el;\n\t},\n\t\n\taddButtons: function() {\n\t\tsetTimeout(function() {\n\t\t\tvar vids = document.querySelectorAll(\".crt-video:not(.xvd-processed)\");\n\t\t\tfor (var vid of vids) {\n\t\t\t\tvid.classList.add(\"xvd-processed\");\n\t\t\t\tvar sauce = vid.getElementsByTagName(\"source\");\n\t\t\t\tif (sauce.length > 0) {\n\t\t\t\t\tvar src = sauce[0].getAttribute(\"src\");\n\t\t\t\t\tvar button = XKit.extensions.video_downloader.makeButton(src);\n\t\t\t\t\tvid.appendChild(button);\n\t\t\t\t}\n\t\t\t}\n\t\t}, 1500);\n\t}\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAEsmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjY0IgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iNjQiCiAgIGV4aWY6Q29sb3JTcGFjZT0iMSIKICAgdGlmZjpJbWFnZVdpZHRoPSI2NCIKICAgdGlmZjpJbWFnZUxlbmd0aD0iNjQiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjcyLjAiCiAgIHRpZmY6WVJlc29sdXRpb249IjcyLjAiCiAgIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiCiAgIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjAtMDMt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","css":".xvd-button {\n\tposition: absolute;\n\ttop: 2px;\n\tleft: 2px;\n\tdisplay: block;\n\toverflow: hidden;\n\theight: 32px;\n\twidth: 32px;\n\tmargin: 0px;\n\tpadding: 0px;\n\tpadding-left: 32px;\n\tbackground-image: none !important;\n\tz-index: 2;\n\tborder-radius: 6px;\n\topacity: .5;\n\ttransition: background-color .2s, opacity .2s;\n}\n.xvd-button:hover, .xvd-button:focus {\n\tbackground-color: rgba(0,0,0,.25);\n\topacity: 1;\n}\n.xvd-button::before {\n\tcontent: \"\";\n\tposition: absolute;\n\twidth: 32px;\n\theight: 32px;\n\tdisplay: block;\n\tleft: 0px;\n\tbackground-image: url(\"/images/dashboard_master_sprite.png\") !important;\n\tbackground-position: -237px -106px !important;\n\tbackground-size: 393px !important;\n\ttransform: scale(-1);\n}\n","title":"Video Downloader","description":"Adds a download button to the video player","developer":"tlitookilakin","version":"1.0.0","details":"Adds a simple download button to all videos using the fancy player. Does not support 3rd-party players or the native player. Disabled on beta dash (now supported natively)","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/view_my_tags.json b/Extensions/dist/view_my_tags.json new file mode 100644 index 000000000..cb69f309b --- /dev/null +++ b/Extensions/dist/view_my_tags.json @@ -0,0 +1 @@ +{"id":"view_my_tags","script":"//* TITLE View My Tags **//\n//* VERSION 0.4.5 **//\n//* DESCRIPTION Lets you view your recently used tags **//\n//* DEVELOPER STUDIOXENIX **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.view_my_tags = new Object({\n\n\trunning: false,\n\tapiKey: XKit.api_key,\n\turl: \"\",\n\n\tbutton_icon: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OEY5QzJBRTkzRTlGMTFFM0JFOUNFQjdCODYyOTc5RjMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OEY5QzJBRUEzRTlGMTFFM0JFOUNFQjdCODYyOTc5RjMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4RjlDMkFFNzNFOUYxMUUzQkU5Q0VCN0I4NjI5NzlGMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4RjlDMkFFODNFOUYxMUUzQkU5Q0VCN0I4NjI5NzlGMyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pr7xRK4AAAFxSURBVHjarJQ7SwNBFIV3fTXughYWglYBQVCxsTadf8NebASxNYW92vgPtBZsBBs7A5pGC58gsUkRQsDga43ruXAGJpM7u1Ey8GXuZGZOzp07kzBN06CfbSDocxsyQRiGeVZjZNP6i8PvnLUX+NEo16KcIc/xTYYUPgRXHNvcgsjs0dAEt8EwmBJXiugd01cFtaK8YiJBXwM/yvwMKHvTVxzWwR44UdzZ3Ej6XTqW4Ke1OHHGPh4kfZ9gqweB1FOoWBNc55llbW5npB+7gtLO/unSVD/qvkdBMAE+wCU4Bu+gyu/ajH1Oj+ynV2S4CGbBCpgEG2AeXIMGWAbnvA3utUtsZ/LRBM+MG+wr7MVZiXGBjm13j2DEFdwFRcZj4IkbKyxYlU9z1BG7FzHtpTSd+IUvZk1OBUyDHbBvrROxOfDV8feV0eQIyizEILOoc04qu2DE3KeX1Q6slJc6ronzjHsVXAVbYBycgk1XzAj+CjAAVzNAhdtS9LcAAAAASUVORK5CYII=\",\n\n\tpreferences: {\n\t\t\"sep0\": {\n\t\t\ttext: \"Options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"only_in_post_window\": {\n\t\t\ttext: \"Only show View My Tags button when I'm creating/editing a post\",\n\t\t\tvalue: false,\n\t\t\tdefault: false\n\t\t},\n\t\t\"sort_by_az\": {\n\t\t\ttext: \"Sort my tags alphabetically\",\n\t\t\tvalue: true,\n\t\t\tdefault: true\n\t\t},\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tif ($(\"#post_controls_avatar\").length === 1) {\n\t\t\t// For now, this will only work on pages where the user's avatar is visible\n\t\t\tthis.url = $(\"#post_controls_avatar\").attr(\"href\").replace(/https?:\\/\\//, '').replace(/\\//g, '');\n\t\t}\n\n\t\t$(\"body\").append(\"
      \");\n\n\t\tXKit.tools.init_css(\"view_my_tags\");\n\n\t\tXKit.interface.post_window.create_control_button(\"xkit-view-my-tags-window\", this.button_icon, \"View my Tags\");\n\t\tXKit.interface.post_window_listener.add(\"view_my_tags\", XKit.extensions.view_my_tags.post_window);\n\t\t$(document).on(\"click\", \".xkit-view-my-tags-window\", XKit.extensions.view_my_tags.post_window_icon);\n\n\t\tif (XKit.extensions.view_my_tags.url !== \"\") {\n\t\t\tvar api_url = \"https://api.tumblr.com/v2/blog/\" + XKit.extensions.view_my_tags.url + \"/posts?api_key=\" + XKit.extensions.view_my_tags.apiKey + \"&limit=20\";\n\n\t\t\tGM_xmlhttpRequest({\n\t\t\t\tmethod: \"GET\",\n\t\t\t\turl: api_url,\n\t\t\t\tjson: true,\n\t\t\t\tonload: function(response) {\n\t\t\t\t\tvar data = JSON.parse(response.responseText);\n\t\t\t\t\tvar user_tags_array = [];\n\t\t\t\t\tvar user_tags_hashmap = {};\n\t\t\t\t\tdata.response.posts.forEach(function(post) {\n\t\t\t\t\t\tpost.tags.forEach(function(tag) {\n\t\t\t\t\t\t\tif (!user_tags_hashmap.hasOwnProperty(tag)) {\n\t\t\t\t\t\t\t\tuser_tags_array.push(tag);\n\t\t\t\t\t\t\t\tuser_tags_hashmap[tag] = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\t$(\"#xkit-view-my-tags-data\").html(JSON.stringify(user_tags_array));\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar xf_html = '';\n\n\t\tif (XKit.extensions.view_my_tags.preferences.only_in_post_window.value === false) {\n\n\t\t\tif ($(\"#xstats_ul\").length > 0) {\n\n\t\t\t\txf_html = '
    23. ' +\n\t\t\t\t\t\t\t'
      View recent tags
      ' +\n\t\t\t\t\t\t'
    24. ';\n\n\t\t\t\t$(\"#xstats_ul\").append(xf_html);\n\n\t\t\t} else {\n\n\t\t\t\t$(\".controls_section_radar\").before(xf_html);\n\n\t\t\t}\n\n\t\t\t$(\"#view_my_tags_view\").click(function() {\n\t\t\t\tXKit.extensions.view_my_tags.show();\n\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t}\n\n\n\t},\n\n\tpost_window: function() {\n\n\t\tXKit.interface.post_window.add_control_button(\"xkit-view-my-tags-window\", \"data-in-window=\\\"true\\\"\");\n\n\t},\n\n\tpost_window_icon: function() {\n\n\t\tXKit.extensions.view_my_tags.show(true);\n\n\t},\n\n\tshow: function(in_post_window) {\n\n\t\tvar m_data = $(\"#xkit-view-my-tags-data\").html();\n\n\t\tif (m_data === \"\") {\n\t\t\tXKit.extensions.view_my_tags.show_error(\"VMT-509\");\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\n\t\t\tvar m_array = JSON.parse(m_data);\n\n\t\t\tconsole.log(m_array);\n\n\t\t\tvar m_html = \"
      \" +\n\t\t\t\t\"
      \";\n\n\t\t\tif (XKit.extensions.view_my_tags.preferences.sort_by_az.value === true) {\n\n\t\t\t\tm_array.sort();\n\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < m_array.length; i++) {\n\n\t\t\t\tif (!in_post_window) {\n\t\t\t\t\tm_html = m_html + \"
      \" + m_array[i] + \"
      \";\n\t\t\t\t} else {\n\t\t\t\t\tvar extra_tags = \"\";\n\t\t\t\t\tconsole.log(m_array[i] + \"=\" + XKit.interface.post_window.tag_exists(m_array[i]));\n\t\t\t\t\tif (XKit.interface.post_window.tag_exists(m_array[i]) === true) { extra_tags = \"xkit-view-tags-green\"; }\n\t\t\t\t\tm_html = m_html + \"
      \" + m_array[i] + \"
      \";\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tm_html = m_html + \"
      \";\n\n\t\t\tXKit.window.show(\"View My Tags\", m_html, \"info\", \"
      Close
      \");\n\n\t\t\t$(\"body\").css(\"overflow\", \"hidden\");\n\n\t\t\t$(\"#view-my-tags-window-outer\").nanoScroller();\n\n\t\t\t$(\"#xkit-close-message-view-my-tags\").click(function() {\n\n\t\t\t\t$(\"body\").css(\"overflow\", \"auto\");\n\t\t\t\tXKit.window.close();\n\n\t\t\t});\n\n\t\t\t$(\"#xkit-view-my-tags-search\").keyup(function() {\n\n\t\t\t\tvar m_value = $(this).val().toLowerCase();\n\t\t\t\tm_value = $.trim(m_value);\n\t\t\t\tif (m_value === \"\") {\n\t\t\t\t\t$(\".xkit-view-my-tags-tag\").removeClass(\"xkit-view-tags-hidden\");\n\t\t\t\t}\n\n\t\t\t\t$(\".xkit-view-my-tags-tag\").each(function() {\n\n\t\t\t\t\tif ($(this).html().toLowerCase().indexOf(m_value) !== -1) {\n\n\t\t\t\t\t\t$(this).removeClass(\"xkit-view-tags-hidden\");\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t$(this).addClass(\"xkit-view-tags-hidden\");\n\n\t\t\t\t\t}\n\n\t\t\t\t});\n\n\t\t\t\t$(\"#view-my-tags-window-outer\").nanoScroller();\n\n\t\t\t});\n\n\t\t\t$(\".xkit-view-my-tags-tag.xkit-with-ability-to-add-to-the-window-hoorray\").click(function() {\n\n\t\t\t\tif ($(this).hasClass(\"xkit-view-tags-green\")) {\n\n\t\t\t\t\tXKit.interface.post_window.remove_tag($(this).attr('data-the-tag'));\n\t\t\t\t\t$(this).removeClass(\"xkit-view-tags-green\");\n\n\t\t\t\t} else {\n\n\t\t\t\t\tXKit.interface.post_window.add_tag($(this).attr('data-the-tag'));\n\t\t\t\t\t$(this).addClass(\"xkit-view-tags-green\");\n\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t} catch (e) {\n\n\t\t\tXKit.extensions.view_my_tags.show_error(\"VMT-510: \" + e.message);\n\n\t\t}\n\n\t},\n\n\tshow_error: function(error_code) {\n\n\t\tXKit.window.show(\"Unable to retrieve tags\", \"View My Tags were unable to retrieve your latest tags.
      Please try again later.

      Error Code:
      \" + error_code, \"error\", \"
      OK
      \");\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t\t$(\"#view_my_tags_ul\").remove();\n\t\t$(\"#view_my_tags_view\").remove();\n\t\tXKit.interface.post_window_listener.remove(\"view_my_tags\");\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNzdGMTE3NDA3MjA2ODExODA4MzkyMjM2MzU5MTQ4NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCNzU1MTEyMzNFQUIxMUUzQkU5Q0VCN0I4NjI5NzlGMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCNzU1MTEyMjNFQUIxMUUzQkU5Q0VCN0I4NjI5NzlGMyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTFBRTczREVDNEM5OEM0RTE5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4MDgzOTIyMzYzNTkxNDg0Ii8+IDwvcmRmOkRlc2NyaXB0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","css":"#xkit-view-my-tags-data { display: none; }\n\n#view_my_tags_view:after {\n\tbackground: no-repeat 0px 45% url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qjc1NTExMjYzRUFCMTFFM0JFOUNFQjdCODYyOTc5RjMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qjc1NTExMjczRUFCMTFFM0JFOUNFQjdCODYyOTc5RjMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCNzU1MTEyNDNFQUIxMUUzQkU5Q0VCN0I4NjI5NzlGMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNzU1MTEyNTNFQUIxMUUzQkU5Q0VCN0I4NjI5NzlGMyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjwONR8AAAF7SURBVHjarJS/LwRBFMd3uAvHid+JhIjyJDrREaVWwSkVSv+RloSImoZIVAoNIXK5QoFChPh53MlZn9m8lcmYNUtuk0/e3NzsN2+/771RYRgGjXyaggY/GWO97Dm7opT6+EuGn56zc9iT/Y+gNrUMt9bZHij6RF0eHsEubMON9V+XT9QlWMMrnW1Fsg0covNJohnH3jiHO4idMJCQSLd4ukWMCkUSPzJUElthDIY8/mtPFyCbpsp6vzlF2+mvKJqipuBhCoEkT79byhQ8gSuPoPrl86Pqq3iWY1P5nSMswj28wDC8QU4SeIX2BPGyMi6HQYl9cCFCbVCCXriDdzl3DUsO0ZLZNrO6B6EKkxJbYAT6JdtzmIA1KaJZuEfYtxtbv7An61V4En/0GOZhVApTscQeYB3b6rZgzVhXJSv98oHs5WU0pyyxDainvQ+fZaZjs4+h4BKLipvyxp6W6dEZ7+hZFrHNePTiTkkrWJCKn8EMXMKpKRYLfgkwAB/Kd6TsaEyuAAAAAElFTkSuQmCC) !important;\n\tcontent: \"\\54\";\n\tfont-size: 0;\n\tline-height: 37px;\n\twidth: 20px;\n}\n\n#view-my-tags-window-outer {\n\theight: 230px;\n\tborder: 1px solid rgb(190,190,190);\n}\n\n.xkit-window-buttons {\n\tpadding-right: 5px !important;\n\tposition: relative;\n}\n\n.xkit-view-tags-hidden {\n\tdisplay: none;\n}\n\n#xkit-view-my-tags-search {\n\tdisplay: inline-block !important;\n\tposition: absolute !important;\n\twidth: 200px !important;\n\ttop: 1px !important;\n\tright: 10px !important;\n\theight: 28px !important;\n}\n\n.xkit-view-my-tags-tag {\n\tborder-bottom: 1px solid rgb(190,190,190);\n\tpadding: 5px 10px 5px 30px;\n\tfont-size: 13px;\n\tcolor: rgb(100,100,100);\n\tbackground: no-repeat 10px 50% url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUE5QjQwNjM0MDIzMTFFM0I3QjRGNERGODZCRDlCN0MiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUE5QjQwNjQ0MDIzMTFFM0I3QjRGNERGODZCRDlCN0MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QTlCNDA2MTQwMjMxMUUzQjdCNEY0REY4NkJEOUI3QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QTlCNDA2MjQwMjMxMUUzQjdCNEY0REY4NkJEOUI3QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pnn83d4AAAC4SURBVHjaYvz//z8DOYAFRKSmpmLT/R2IfYB4HzaNTHgM5QTiLUDsRIzGCUCsAKXxasbQOHv27IdIGnFqRtdYAPSvPIjG4Wx7dI3fYRqB+AEWjTDN22GaYRp9kDQzEBFgQmCNQH/tI1LzXyBOB+J3cD8SofkfEEcD8TK4U4EBQkgzSNNkIF4JE2AEJTmYRiRgDw0ITqjzQDatBBpMMOUcBGJPIP4CxHHINqGkVTyaQXH6DpskQIABAEopOUx68I3CAAAAAElFTkSuQmCC);\n}\n\n.xkit-view-my-tags-tag:last-child {\n\tborder-bottom: 0;\n}\n\n.xkit-view-my-tags-tag.xkit-with-ability-to-add-to-the-window-hoorray {\n\tcursor: pointer;\n\tcolor: rgb(130,130,130);\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0E5M0NCODA0MDkwMTFFM0I3QjRGNERGODZCRDlCN0MiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0E5M0NCODE0MDkwMTFFM0I3QjRGNERGODZCRDlCN0MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozQTkzQ0I3RTQwOTAxMUUzQjdCNEY0REY4NkJEOUI3QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozQTkzQ0I3RjQwOTAxMUUzQjdCNEY0REY4NkJEOUI3QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtTcm7wAAABDSURBVHjaYvz//z8DOYCRYo2pqanocjATGZEFZ8+eDaaZGMgE9NfIgsVPuPzKgOxnqtjISEyoDlzgkK2Rke5pFSDAAMwOFg3fpDNOAAAAAElFTkSuQmCC);\n}\n\n.xkit-view-my-tags-tag.xkit-with-ability-to-add-to-the-window-hoorray:hover {\n\tbackground-color: rgb(245,245,245);\n\tcolor: rgb(60,60,60);\n}\n\n.xkit-view-my-tags-tag.xkit-view-tags-green {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0E5M0NCODQ0MDkwMTFFM0I3QjRGNERGODZCRDlCN0MiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0E5M0NCODU0MDkwMTFFM0I3QjRGNERGODZCRDlCN0MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozQTkzQ0I4MjQwOTAxMUUzQjdCNEY0REY4NkJEOUI3QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozQTkzQ0I4MzQwOTAxMUUzQjdCNEY0REY4NkJEOUI3QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ph3txE0AAAA7SURBVHjaYvz//z8DOYCJgUxAkkarjgA620gVjSxI7ic2eBkpspEBFI/EYst2fzh7CIUqI93TKkCAAQAliDEh3dfaiAAAAABJRU5ErkJggg==);\n\tbackground-color: #d4f6e2;\n}\n\n.xkit-view-my-tags-tag.xkit-view-tags-green:hover {\n\tbackground-color: #abe1c1;\n}","title":"View My Tags","description":"Lets you view your recently used tags","developer":"STUDIOXENIX","version":"0.4.5","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/xcloud.json b/Extensions/dist/xcloud.json new file mode 100644 index 000000000..96534f352 --- /dev/null +++ b/Extensions/dist/xcloud.json @@ -0,0 +1 @@ +{"id":"xcloud","script":"//* TITLE XCloud **//\n//* VERSION 1.1.3 **//\n//* DESCRIPTION Sync XKit data on clouds, or back up locally **//\n//* DETAILS XCloud stores your XKit configuration on New XKit servers so you can back up your data and synchronize it with other computers and browsers easily.

      You can also export your data to a file to import elsewhere. **//\n//* DEVELOPER new-xkit **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.xcloud = new Object({\n\n\trunning: false,\n\tusername: \"\",\n\tpassword: \"\",\n\tserver: \"https://cloud.new-xkit.com\",\n\tgallery_available: {},\n\textensions_upgraded: false,\n\n\trun: function() {\n\t\tthis.running = true;\n\n\t\tXKit.tools.init_css(\"xcloud\");\n\t\tthis.load_user_login();\n\t\t$(\"#xkit-cp-tab-xcloud\").css(\"display\", \"block\");\n\t},\n\n\treload_welcome_panel: function() {\n\n\t\t$(\"#xcloud-welcome-panel\").remove();\n\t\t$(\"#xcloud-panel-right\").append(XKit.extensions.xcloud.return_panel_welcome(true));\n\n\n\t},\n\n\treturn_panel_welcome: function(is_reloading) {\n\n\t\tvar m_html = \"\";\n\n\t\tvar m_class = \"current\";\n\t\tif (is_reloading) {\n\t\t\tm_class = \"previous forced\";\n\t\t}\n\n\t\tif (XKit.extensions.xcloud.username === \"\") {\n\t\t\tXKit.extensions.xcloud.useoldserver = false;\n\t\t\tm_html =\t\"
      \" +\n\t\t\t\t\t\t\t\"
      Welcome to XCloud!
      \" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\t\"XCloud lets you synchronize your XKit data such as your blacklisted words \" +\n\t\t\t\t\t\t\t\t\"and posts, and your preferences across computers and browsers using XKit servers.\" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\t\"
      Sign In
      \" +\n\t\t\t\t\t\t\t\t\"
      Create Account
      \" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \";\n\n\t\t} else {\n\n\t\t\tm_html =\t\"
      \" +\n\t\t\t\t\t\t\t\"
      Welcome, \" + XKit.extensions.xcloud.username + \"!
      \" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\t\"Click Sync to upload your XKit settings to your XCloud.
      \" +\n\t\t\t\t\t\t\t\t\"Click Restore to restore your settings stored on your XCloud.
      \" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\t\"
      Sync
      \" +\n\t\t\t\t\t\t\t\t\"
      Restore
      \" +\n\t\t\t\t\t\t\t\t\"
      Logout
      \" +\n\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"
      \";\n\n\t\t}\n\n\t\treturn m_html;\n\n\t},\n\n\treturn_panel_upload: function() {\n\n\t\tvar m_html = \"\";\n\n\t\tm_html =\t\"
      Synchronize
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"Replace your XCloud data with your current XKit configuration.
      \" +\n\t\t\t\t\t\t\"Depending on your internet connection and the amount of extensions you have installed, this might take several minutes. It is highly recommended that you close other Tumblr tabs and not navigate away from this page.\" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\"
      Continue
      \" +\n\t\t\t\t\t\"
      Cancel
      \" +\n\t\t\t\t\t\"
      \";\n\n\t\treturn m_html;\n\n\t},\n\n\treturn_panel_restore: function() {\n\n\t\tvar m_html = \"\";\n\n\t\tm_html =\t\"
      Restore
      \" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\"Replace your XKit configuration with the one on XCloud.
      \" +\n\t\t\t\t\t\t\"Depending on your internet connection and the amount of extensions you have installed, this might take several minutes. It is highly recommended that you close other Tumblr tabs and not navigate away from this page.\" +\n\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\"
      Continue
      \" +\n\t\t\t\t\t\"
      Cancel
      \" +\n\t\t\t\t\t\"
      \";\n\n\t\treturn m_html;\n\n\t},\n\n\treturn_panel_signup: function() {\n\n\t\tvar m_html = \"\";\n\n\t\tm_html =\t\"
      Sign up
      \" +\n\t\t\t\t\t\"XCloud is free of charge and only needs a username and password.\" +\n\t\t\t\t\t\"\" +\n\t\t\t\t\t\"\" +\n\t\t\t\t\t\"
      Sign up!
      \" +\n\t\t\t\t\t\"
      Cancel
      \" +\n\t\t\t\t\t\"\";\n\n\t\treturn m_html;\n\n\t},\n\n\treturn_panel_login: function() {\n\n\t\tvar m_html = \"\";\n\n\t\tm_html =\t\"
      Sign In
      \" +\n\t\t\t\t\t\"Sign in to XCloud to restore/upload your XKit configuration.\" +\n\t\t\t\t\t\"\" +\n\t\t\t\t\t\"\" +\n\t\t\t\t\t\"
      Sign in
      \" +\n\t\t\t\t\t\"
      Cancel
      \" +\n\t\t\t\t\t\"\";\n\n\t\treturn m_html;\n\n\t},\n\n\tpanel: function() {\n\n\t\treturn `\n\t\t\t
      \n\t\t\t\t
       
      \n\t\t\t\t
      ${XKit.extensions.xcloud.return_panel_welcome()}
      \n\t\t\t\t
      \n\t\t\t\t\t
      \n\t\t\t\t\t\t

      \n\t\t\t\t\t\t\tLocal Backup about\n\t\t\t\t\t\t

      \n\t\t\t\t\t\t
      Export
      \n\t\t\t\t\t\t
      Import
      \n\t\t\t\t\t
      \n\t\t\t\t
      \n\t\t\t
      \n\t\t`;\n\n\t},\n\n\tworking_on: function() {\n\n\t\t$(\"#xcloud-panel-working\").remove();\n\t\t$(\"#xcloud-panel-right\").append(\"
      Please wait...
      \");\n\n\t},\n\n\tworking_off: function() {\n\n\t\t$(\"#xcloud-panel-working\").remove();\n\n\t},\n\n\tpanel_appended: function() {\n\t\tvar xcloud_url = this.server;\n\t\tvar self = this;\n\n\t\tvar aboutButton = $(\"#xcloud-local-about\");\n\t\taboutButton.unbind(\"click\");\n\t\taboutButton.bind(\"click\", function() {\n\t\t\tXKit.window.show(\n\t\t\t\t\"XCloud Local Backups\",\n\n\t\t\t\t\"Local backups allow you to import or export XCloud data as files on your computer.
      \" +\n\t\t\t\t\"This means you don't even need to sign up to transfer your XKit configuration elsewhere.
      \" +\n\t\t\t\t\"Additionally, unlike the cloud service, local backups do not limit the amount of data that can be transferred.

      \" +\n\t\t\t\t\"Export
      \" +\n\t\t\t\t\"The Export button will immediately download a file containing your XKit data. \" +\n\t\t\t\t\"This file is not human-readable; it is only for importing to XCloud.

      \" +\n\t\t\t\t\"Import
      \" +\n\t\t\t\t\"The Import button will open a file-open prompt in your browser. If you select an XCloud payload file that you've exported, \" +\n\t\t\t\t\"it will read and restore your settings from it.\",\n\n\t\t\t\t\"info\",\n\n\t\t\t\t'
      Got it!
      '\n\t\t\t);\n\t\t});\n\n\t\tvar exportPanel = $(\"#xcloud-local-export\");\n\t\texportPanel.unbind(\"click\");\n\t\texportPanel.bind(\"click\", function() {\n\t\t\tself.local_export();\n\t\t});\n\n\t\tvar importPanel = $(\"#xcloud-local-import\");\n\t\timportPanel.unbind(\"click\");\n\t\timportPanel.bind(\"click\", function() {\n\t\t\tself.local_import();\n\t\t});\n\n\t\t$(\"#xcloud-login\").unbind(\"click\");\n\t\t$(\"#xcloud-login\").bind(\"click\", function() {\n\n\t\t\tXKit.extensions.xcloud.change_panel(XKit.extensions.xcloud.return_panel_login());\n\n\t\t});\n\n\n\t\t$(\"#xcloud-signup-do\").unbind(\"click\");\n\t\t$(\"#xcloud-signup-do\").bind(\"click\", function() {\n\n\t\t\tvar m_username = $(\"#xcloud-login-username\").val();\n\t\t\tvar m_password = XKit.extensions.xcloud.md5($(\"#xcloud-login-password\").val());\n\n\t\t\tif ($.trim(m_username) === \"\" || $.trim($(\"#xcloud-login-password\").val()) === \"\") {\n\t\t\t\tXKit.window.show(\"Hey there!\", \"Please enter a username and password.\", \"error\", \"
      OK
      \");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($(\"#xcloud-login-password\").val().length <= 5) {\n\t\t\t\tXKit.window.show(\"Hey there!\", \"Please enter a password that is at least 6 characters long.\", \"error\", \"
      OK
      \");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tXKit.extensions.xcloud.working_on();\n\n\t\t\tvar registerRequest = {\n\t\t\t\turl: xcloud_url + \"/xcloud/register\",\n\n\t\t\t\tonerror: function() {\n\n\t\t\t\t\tXKit.extensions.xcloud.hide_overlay();\n\t\t\t\t\tXKit.window.show(\"Can't connect to server\", \"XKit was unable to contact XCloud servers.
      Error code: 1003
      Please try again or send a bug report.\", \"error\", \"
      OK
      \");\n\t\t\t\t\treturn;\n\n\t\t\t\t},\n\t\t\t\tonload: function(response) {\n\t\t\t\t\tXKit.extensions.xcloud.working_off();\n\n\t\t\t\t\tvar mdata = null;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmdata = JSON.parse(response.responseText);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tXKit.extensions.xcloud.hide_overlay();\n\t\t\t\t\t\tXKit.window.show(\"Can't connect to server\", \"XKit was unable to contact XCloud servers.
      Error code: 1001
      Please try again or send a bug report.\", \"error\", \"
      OK
      \");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (mdata.server_down) {\n\t\t\t\t\t\tXKit.window.show(\"Can't connect to server\", \"XKit was unable to contact XCloud servers.
      Please try again or send a bug report.\", \"error\", \"
      OK
      \");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (mdata.errors === \"false\") {\n\n\t\t\t\t\t\tXKit.extensions.xcloud.username = m_username;\n\t\t\t\t\t\tXKit.extensions.xcloud.password = m_password;\n\t\t\t\t\t\tXKit.extensions.xcloud.save_user_login();\n\t\t\t\t\t\tXKit.extensions.xcloud.reload_welcome_panel();\n\t\t\t\t\t\tXKit.extensions.xcloud.change_panel(\"
      Horray!
      XCloud account created successfully.
      Start using XCloud
      \");\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar err_desc = \"\";\n\t\t\t\t\t\tvar err_title = \"\";\n\t\t\t\t\t\tif (mdata.error_code === \"102\") {\n\t\t\t\t\t\t\terr_desc = \"
      Usernames can only have letters and numbers.\";\n\t\t\t\t\t\t\terr_title = \"Invalid Username\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (mdata.error_code === \"202\") {\n\t\t\t\t\t\t\terr_desc = \"
      Please enter a password.\";\n\t\t\t\t\t\t\terr_title = \"No Password\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (mdata.error_code === \"100\") {\n\t\t\t\t\t\t\terr_desc = \"
      Please pick another username.\";\n\t\t\t\t\t\t\terr_title = \"Username Taken\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tXKit.window.show(\"Unable to sign up\", \"\" + err_title + \" (code: \" + mdata.error_code + \")\" + err_desc, \"error\", \"
      OK
      \");\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif (XKit.extensions.xcloud.useoldserver) {\n\t\t\t\tregisterRequest.method = \"GET\";\n\t\t\t\tregisterRequest.url += \"?username=\" + m_username + \"&password=\" + m_password;\n\t\t\t\tregisterRequest.json = false;\n\t\t\t} else {\n\t\t\t\tregisterRequest.method = \"POST\";\n\t\t\t\tregisterRequest.json = true;\n\t\t\t\tregisterRequest.data = JSON.stringify({\"username\": m_username, \"password\": m_password});\n\t\t\t}\n\n\t\t\tGM_xmlhttpRequest(registerRequest);\n\n\t\t});\n\n\t\t$(\"#xcloud-login-do\").unbind(\"click\");\n\t\t$(\"#xcloud-login-do\").bind(\"click\", function() {\n\n\t\t\tvar m_username = $(\"#xcloud-login-username\").val();\n\t\t\tvar m_password = XKit.extensions.xcloud.md5($(\"#xcloud-login-password\").val());\n\n\t\t\tif ($.trim(m_username) === \"\" || $.trim($(\"#xcloud-login-password\").val()) === \"\") {\n\t\t\t\tXKit.window.show(\"Hey there!\", \"Please enter a username and password.\", \"error\", \"
      OK
      \");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($(\"#xcloud-login-password\").val().length <= 5) {\n\t\t\t\tXKit.window.show(\"Hey there!\", \"Please enter a password that is at least 6 characters long.\", \"error\", \"
      OK
      \");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tXKit.extensions.xcloud.working_on();\n\n\t\t\tvar authorizationRequest = {\n\t\t\t\tmethod: \"GET\",\n\t\t\t\tjson: false,\n\t\t\t\turl: xcloud_url + \"/xcloud/auth\",\n\t\t\t\tonerror: function() {\n\n\t\t\t\t\tXKit.extensions.xcloud.hide_overlay();\n\t\t\t\t\tXKit.window.show(\"Can't connect to server\", \"XKit was unable to contact XCloud servers.
      Error code: 1003
      Please try again or send a bug report.\", \"error\", \"
      OK
      \");\n\t\t\t\t\treturn;\n\n\t\t\t\t},\n\t\t\t\tonload: function(response) {\n\n\n\n\t\t\t\t\tXKit.extensions.xcloud.working_off();\n\n\t\t\t\t\tvar mdata = null;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmdata = JSON.parse(response.responseText);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tXKit.extensions.xcloud.hide_overlay();\n\t\t\t\t\t\tXKit.window.show(\"Can't connect to server\", \"XKit was unable to contact XCloud servers.
      Error code: 1001
      Please try again or send a bug report.\", \"error\", \"
      OK
      \");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (mdata.server_down) {\n\t\t\t\t\t\tXKit.window.show(\"Can't connect to server\", \"XKit was unable to contact XCloud servers.
      Please try again or send a bug report.\", \"error\", \"
      OK
      \");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (mdata.errors === \"false\") {\n\n\t\t\t\t\t\tXKit.extensions.xcloud.username = m_username;\n\t\t\t\t\t\tXKit.extensions.xcloud.password = m_password;\n\t\t\t\t\t\tXKit.extensions.xcloud.save_user_login();\n\t\t\t\t\t\tXKit.extensions.xcloud.reload_welcome_panel();\n\t\t\t\t\t\tXKit.extensions.xcloud.change_panel(\"
      Horray!
      Signed in successfully.
      Start using XCloud
      \");\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar err_desc = \"\";\n\t\t\t\t\t\tvar err_title = \"\";\n\t\t\t\t\t\tif (mdata.error_code === \"102\") {\n\t\t\t\t\t\t\terr_desc = \"
      Usernames can only have letters and numbers.\";\n\t\t\t\t\t\t\terr_title = \"Invalid Username\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (mdata.error_code === \"202\") {\n\t\t\t\t\t\t\terr_desc = \"
      Please enter a password.\";\n\t\t\t\t\t\t\terr_title = \"No Password\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (mdata.error_code === \"100\") {\n\t\t\t\t\t\t\terr_desc = \"
      Please pick another username.\";\n\t\t\t\t\t\t\terr_title = \"Username taken.\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (mdata.error_code === \"400\") {\n\t\t\t\t\t\t\terr_desc = \"
      Please check your username and try again.\";\n\t\t\t\t\t\t\terr_title = \"Invalid Username\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (mdata.error_code === \"602\") {\n\t\t\t\t\t\t\terr_desc = \"
      Please check your password and try again.
      If you have changed your password, you might need to log out of XCloud and sign back in.\";\n\t\t\t\t\t\t\terr_title = \"Wrong Password\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tXKit.window.show(\"Unable to sign in\", \"\" + err_title + \" (code: \" + mdata.error_code + \")\" + err_desc, \"error\", \"
      OK
      \");\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif (XKit.extensions.xcloud.useoldserver) {\n\t\t\t\tauthorizationRequest.url += \"?username=\" + m_username + \"&password=\" + m_password;\n\t\t\t} else {\n\t\t\t\tauthorizationRequest.headers = {\"Authorization\": \"Basic \" + btoa(m_username + \":\" + m_password), \"Content-Type\": \"application/json\" };\n\t\t\t\tauthorizationRequest.json = true;\n\t\t\t}\n\n\t\t\tGM_xmlhttpRequest(authorizationRequest);\n\n\t\t});\n\n\t\t$(\"#xcloud-signup\").unbind(\"click\");\n\t\t$(\"#xcloud-signup\").bind(\"click\", function() {\n\n\t\t\tXKit.extensions.xcloud.change_panel(XKit.extensions.xcloud.return_panel_signup());\n\n\t\t});\n\n\t\t$(\"#xcloud-start-using\").unbind(\"click\");\n\t\t$(\"#xcloud-start-using\").bind(\"click\", function() {\n\n\t\t\tXKit.extensions.xcloud.change_panel_back();\n\n\t\t});\n\n\t\t$(\"#xcloud-login-cancel, #xcloud-signup-cancel\").unbind(\"click\");\n\t\t$(\"#xcloud-login-cancel, #xcloud-signup-cancel\").bind(\"click\", function() {\n\n\t\t\tXKit.extensions.xcloud.change_panel_back();\n\n\t\t});\n\n\t\t$(\"#xcloud-logout\").unbind(\"click\");\n\t\t$(\"#xcloud-logout\").bind(\"click\", function() {\n\n\t\t\tXKit.extensions.xcloud.change_panel(\"
      Sign out?
      You sure you want to log out of XCloud?
      Yes, sign me out.
      Cancel
      \");\n\n\t\t});\n\n\t\t$(\"#xcloud-logout-confirm\").unbind(\"click\");\n\t\t$(\"#xcloud-logout-confirm\").bind(\"click\", function() {\n\n\t\t\tXKit.extensions.xcloud.username = \"\";\n\t\t\tXKit.extensions.xcloud.password = \"\";\n\t\t\tXKit.extensions.xcloud.save_user_login();\n\t\t\tXKit.extensions.xcloud.reload_welcome_panel();\n\t\t\tXKit.extensions.xcloud.change_panel(\"
      Signed out
      Signed out of XCloud.
      Go back
      \");\n\n\t\t});\n\n\t\t$(\"#xcloud-upload\").unbind(\"click\");\n\t\t$(\"#xcloud-upload\").bind(\"click\", function() {\n\n\t\t\tXKit.extensions.xcloud.change_panel(XKit.extensions.xcloud.return_panel_upload());\n\n\t\t});\n\n\t\t$(\"#xcloud-restore\").unbind(\"click\");\n\t\t$(\"#xcloud-restore\").bind(\"click\", function() {\n\n\t\t\tXKit.extensions.xcloud.change_panel(XKit.extensions.xcloud.return_panel_restore());\n\n\t\t});\n\n\t\t$(\"#xcloud-upload-do\").unbind(\"click\");\n\t\t$(\"#xcloud-upload-do\").bind(\"click\", function() {\n\n\t\t\tXKit.extensions.xcloud.start_upload();\n\n\t\t});\n\n\t\t$(\"#xcloud-restore-do\").unbind(\"click\");\n\t\t$(\"#xcloud-restore-do\").bind(\"click\", function() {\n\n\t\t\tXKit.extensions.xcloud.start_fetch();\n\n\t\t});\n\n\t},\n\n\tlocal_export: function() {\n\t\tXKit.tools.make_file(\"xcloud_payload.txt\", this.create_export_data(false)[0]);\n\t\tsetTimeout(function() { XKit.extensions.xcloud.hide_overlay(); }, 100);\n\t},\n\n\tlocal_import: function() {\n\t\tvar self = this;\n\t\tvar element = document.createElement('input');\n\t\telement.setAttribute('type', 'file');\n\t\telement.addEventListener(\"change\", function() {\n\t\t\tXKit.extensions.xcloud.show_overlay(true);\n\t\t\tif (this.files.length === 1) {\n\t\t\t\tvar reader = new FileReader();\n\t\t\t\treader.addEventListener('loadend', function(result) {\n\t\t\t\t\tself.process_restore({\"data\":result.currentTarget.result});\n\t\t\t\t});\n\t\t\t\treader.readAsText(this.files[0]);\n\t\t\t}\n\n\t\t}, false);\n\t\tdocument.body.appendChild(element);\n\t\telement.click();\n\t\tdocument.body.removeChild(element);\n\t},\n\n\n\tshow_overlay: function(fetch_mode) {\n\n\t\t$(\"#xcloud-overlay-background\").remove();\n\t\t$(\"#xcloud-overlay\").remove();\n\n\t\tif (fetch_mode) {\n\n\t\t\t$(\"body\").append(\t\"
       
      \" +\n\t\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\t\t\"
       
      \" +\n\t\t\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\t\t\t\"
      Receiving transmission
      \" +\n\t\t\t\t\t\t\t\t\t\t\"
      Do not navigate away from this page
      \" +\n\t\t\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\t\"
      \");\n\n\t\t} else {\n\n\t\t\t$(\"body\").append(\t\"
       
      \" +\n\t\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\t\t\"
       
      \" +\n\t\t\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\t\t\t\"
      Transmitting to Mothership
      \" +\n\t\t\t\t\t\t\t\t\t\t\"
      Do not navigate away from this page
      \" +\n\t\t\t\t\t\t\t\t\t\"
      \" +\n\t\t\t\t\t\t\t\t\"
      \");\n\n\t\t}\n\n\t\t$(\"#xcloud-overlay-background\").animate({ opacity: 1 }, 400);\n\t\t$(\"#xcloud-overlay\").fadeIn('slow');\n\n\t},\n\n\thide_overlay: function() {\n\n\t\t$(\"#xcloud-overlay-background\").fadeOut('fast');\n\t\t$(\"#xcloud-overlay\").fadeOut('slow', function() { $(this).remove(); $(\"#xcloud-overlay-background\").remove(); });\n\n\t},\n\n\tstart_fetch: function() {\n\t\tvar xcloud_url = this.server;\n\t\tXKit.extensions.xcloud.show_overlay(true);\n\n\t\tvar m_username = XKit.extensions.xcloud.username;\n\t\tvar m_password = XKit.extensions.xcloud.password;\n\n\t\tvar fetchRequest = {\n\t\t\tmethod: \"GET\",\n\t\t\turl: xcloud_url + \"/xcloud/fetch\",\n\t\t\tjson: false,\n\t\t\tonerror: function() {\n\n\t\t\t\tXKit.extensions.xcloud.hide_overlay();\n\t\t\t\tXKit.window.show(\"Can't connect to server\", \"XKit was unable to contact XCloud servers.
      Error code: 1003
      Please try again or send a bug report.\", \"error\", \"
      OK
      \");\n\t\t\t\treturn;\n\n\t\t\t},\n\t\t\tonload: function(response) {\n\n\t\t\t\tvar data = JSON.parse(response.responseText);\n\t\t\t\tif (data.server_down) {\n\t\t\t\t\tXKit.extensions.xcloud.hide_overlay();\n\t\t\t\t\tXKit.window.show(\"Can't connect to server\", \"XKit was unable to contact XCloud servers.
      Please try again or send a bug report.\", \"error\", \"
      OK
      \");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (data.errors === \"false\") {\n\t\t\t\t\tXKit.extensions.xcloud.process_restore(data);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tXKit.extensions.xcloud.hide_overlay();\n\t\t\t\t\tvar err_desc = \"\";\n\t\t\t\t\tif (data.error_code === \"102\") {\n\t\t\t\t\t\terr_desc = \"
      Usernames can only have letters and numbers.\";\n\t\t\t\t\t}\n\t\t\t\t\tif (data.error_code === \"202\") {\n\t\t\t\t\t\terr_desc = \"
      Please enter a password.\";\n\t\t\t\t\t}\n\t\t\t\t\tif (data.error_code === \"100\") {\n\t\t\t\t\t\terr_desc = \"
      Please pick another username.\";\n\t\t\t\t\t}\n\t\t\t\t\tif (data.error_code === \"800\") {\n\t\t\t\t\t\terr_desc = \"
      Click Sync from XCloud menu to synchronize your data with XCloud servers before restoring.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tXKit.extensions.xcloud.change_panel_back();\n\t\t\t\t\tXKit.window.show(\"Unable to restore\", \"\" + data.error_str + \" (code: \" + data.error_code + \")\" + err_desc, \"error\", \"
      OK
      \");\n\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (XKit.extensions.xcloud.useoldserver) {\n\t\t\tfetchRequest.url += \"?username=\" + m_username + \"&password=\" + m_password;\n\t\t} else {\n\t\t\tfetchRequest.headers = {\"Authorization\": \"Basic \" + btoa(m_username + \":\" + m_password), \"Content-Type\": \"application/json\" };\n\t\t\tfetchRequest.json = true;\n\t\t}\n\n\n\t\tGM_xmlhttpRequest(fetchRequest);\n\n\t},\n\n\textensions_to_download: [],\n\textensions_to_download_enabled: [],\n\textensions_to_download_count: 0,\n\terrors_list: [],\n\n\tprocess_restore: function(mdata) {\n\n\t\tvar m_obj = null;\n\t\ttry {\n\t\t\tmdata.data = mdata.data.substring(3, mdata.data.length - 3);\n\t\t\tm_obj = JSON.parse(XKit.extensions.xcloud.base64_decode(mdata.data));\n\t\t} catch (e) {\n\t\t\tXKit.extensions.xcloud.process_error(\"Unable to parse JSON\");\n\t\t\tthis.hide_overlay();\n\t\t\treturn;\n\t\t}\n\n\n\n\t\tif (m_obj.identifier !== \"XCLOUD\") {\n\t\t\tXKit.extensions.xcloud.process_error(\"Invalid Identifier\");\n\t\t\tthis.hide_overlay();\n\t\t\treturn;\n\t\t}\n\n\t\t$(\"#xcloud-overlay-title\").html(\"Restoring settings...\");\n\n\t\tXKit.extensions.xcloud.errors_list = [];\n\t\tXKit.extensions.xcloud.extensions_to_download = [];\n\t\tXKit.extensions.xcloud.extensions_to_download_enabled = [];\n\t\tXKit.extensions.xcloud.extensions_to_download_count = 0;\n\n\t\tvar m_installed = XKit.installed.list();\n\t\tvar full_list = [];\n\n\t\tfor (var ext in m_obj.settings) {\n\n\t\t\tvar mext = m_obj.settings[ext];\n\n\t\t\tvar extension_name = mext.extension;\n\n\t\t\tconsole.log(\"Restoring settings of \" + extension_name);\n\n\t\t\tvar extension_settings = {};\n\t\t\ttry {\n\t\t\t\t//Check if the payloads is using utf8.\n\t\t\t\tif (m_obj.use_utf8) {\n\t\t\t\t\textension_settings = JSON.parse(XKit.extensions.xcloud.b64_to_utf8(mext.preferences));\n\t\t\t\t} else {\n\t\t\t\t\textension_settings = JSON.parse(XKit.extensions.xcloud.base64_decode(mext.preferences));\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tXKit.extensions.xcloud.errors_list.push(\"Unable to restore settings of \" + extension_name);\n\t\t\t}\n\t\t\tvar extension_enabled = mext.enabled;\n\n\t\t\tvar install_this = false;\n\n\t\t\tif (m_installed.indexOf(extension_name) == -1) {\n\t\t\t\tinstall_this = true;\n\t\t\t}\n\n\t\t\tif (install_this) {\n\t\t\t\tconsole.log(\" |-- Need to install \" + extension_name);\n\t\t\t\tXKit.extensions.xcloud.extensions_to_download.push(extension_name);\n\t\t\t\tXKit.extensions.xcloud.extensions_to_download_enabled.push(extension_enabled);\n\t\t\t} else {\n\t\t\t\tconsole.log(\" |-- Skipping \" + extension_name + \", already installed.\");\n\t\t\t}\n\n\t\t\tfull_list.push(extension_name);\n\n\n\t\t\tif (extension_name !== \"xcloud\") {\n\t\t\t\tXKit.tools.set_setting(\"xkit_extension_storage__\" + extension_name, JSON.stringify(extension_settings));\n\t\t\t}\n\n\t\t}\n\n\t\tfor (var i = 0; i < m_installed.length; i++) {\n\n\t\t\tif (m_installed[i].substring(0, 5) === \"xkit_\") { continue; }\n\t\t\tif (full_list.indexOf(m_installed[i]) == -1) {\n\n\t\t\t\tXKit.installed.remove(m_installed[i]);\n\t\t\t\tXKit.storage.clear(m_installed[i]);\n\t\t\t\tconsole.log(\"Removed \" + m_installed[i]);\n\n\t\t\t}\n\n\t\t}\n\n\n\n\t\t$(\"#xcloud-overlay-title\").html(\"Restoring extensions...\");\n\t\t$(\"#xcloud-overlay-message\").html(XKit.progress.add(\"xcloud-restore-process\"));\n\n\n\t\t//Grab the gallery to check available extensions.\n\t\t//We want to exclude unavailable extensions since the install script will make the whole thing partially succeed.\n\t\tXKit.download.page('gallery.php', function(gallery_json) {\n\t\t\tif (gallery_json.errors) {\n\t\t\t\tXKit.extensions.xcloud.hide_overlay();\n\t\t\t\tXKit.window.show(\"Could not restore\", \"Couldn't download extension data from the XKit servers.

      Please try again or send a bug report.\", \"error\", \"
      OK
      \");\n\t\t\t} else {\n\t\t\t\tXKit.extensions.xcloud.extensions_upgraded = false;\n\n\t\t\t\tvar extension_array = [];\n\t\t\t\t$.each(gallery_json.extensions, function(index, value) {\n\t\t\t\t\textension_array.push(value.name);\n\t\t\t\t});\n\n\t\t\t\tXKit.extensions.xcloud.gallery_available = extension_array;\n\t\t\t\tXKit.extensions.xcloud.process_download_extension_next();\n\t\t\t}\n\t\t});\n\n\n\n\t},\n\n\tprocess_download_extension_next: function() {\n\n\t\tif (XKit.extensions.xcloud.extensions_to_download_count >= XKit.extensions.xcloud.extensions_to_download.length) {\n\t\t\tXKit.extensions.xcloud.process_complete();\n\t\t\treturn;\n\t\t}\n\n\t\tvar perc = Math.round((XKit.extensions.xcloud.extensions_to_download_count * 100) / XKit.extensions.xcloud.extensions_to_download.length);\n\n\t\tvar m_name = XKit.extensions.xcloud.extensions_to_download[XKit.extensions.xcloud.extensions_to_download_count];\n\n\t\tXKit.progress.value(\"xcloud-restore-process\", perc);\n\n\t\tif ($.inArray(m_name, XKit.extensions.xcloud.gallery_available) >= 0) {\n\t\t\tconsole.log(\"XCloud restore -> \" + m_name);\n\t\t\tXKit.install(m_name, function(mdata) {\n\t\t\t\tif (mdata.server_down || mdata.errors) {\n\t\t\t\t\tXKit.extensions.xcloud.errors_list.push(\"Unable to restore extension \" + m_name);\n\t\t\t\t} else if (XKit.extensions.xcloud.extensions_to_download_enabled[XKit.extensions.xcloud.extensions_to_download_count] === false) {\n\t\t\t\t\tXKit.installed.disable(XKit.extensions.xcloud.extensions_to_download[XKit.extensions.xcloud.extensions_to_download_count]);\n\t\t\t\t}\n\n\t\t\t\tXKit.extensions.xcloud.extensions_to_download_count++;\n\t\t\t\tXKit.extensions.xcloud.process_download_extension_next();\n\t\t\t});\n\t\t} else {\n\t\t\tconsole.log(\"XCloud skip -> \" + m_name);\n\t\t\tXKit.extensions.xcloud.extensions_upgraded = true;\n\t\t\tXKit.extensions.xcloud.extensions_to_download_count++;\n\t\t\tXKit.extensions.xcloud.process_download_extension_next();\n\t\t}\n\n\n\n\n\t},\n\n\tprocess_complete: function() {\n\n\t\tvar message = \"\";\n\n\t\tif (XKit.extensions.xcloud.extensions_upgraded) {\n\t\t\tmessage = \"XCloud successfully restored your settings and your XKit configuration has been synced with our servers.
      Please refresh the page to continue.\";\n\t\t} else {\n\t\t\tmessage = \"XCloud successfully restored your settings.
      Please refresh the page to continue.\";\n\t\t}\n\n\t\tXKit.extensions.xkit_preferences.close();\n\t\tXKit.extensions.xcloud.hide_overlay();\n\t\tXKit.window.show(\"Restore complete\", message, \"info\");\n\t},\n\n\tprocess_error: function(txt) {\n\n\t\tXKit.window.show(\"Could not restore\", \"Invalid/corrupt XCloud data received.
      \" + txt + \"

      Please try again or send a bug report.\", \"error\", \"
      OK
      \");\n\t},\n\n\tcreate_export_data: function(limit_data) {\n\n\t\tXKit.extensions.xcloud.show_overlay();\n\n\t\t// Get list of installed extensions:\n\t\tvar installed = XKit.installed.list();\n\n\t\tvar to_send = {};\n\t\tto_send.settings = [];\n\n\t\tvar skipping = [];\n\t\tvar skipping_size = [];\n\n\t\tfor (var i = 0; i < installed.length; i++) {\n\n\t\t\t// Skip internal extensions.\n\t\t\tif (installed[i].substring(0, 5) === \"xkit_\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\n\t\t\tvar m_data;\n\n\t\t\t//XCloud data was being pushed up with user's md5 hash which is kind of a security issue.\n\t\t\t//\tInstead we'll just not upload the XCloud extension. We know the user will have it when they restore.\n\t\t\tif (installed[i] === \"xcloud\") {\n\t\t\t\tm_data = this.utf8_to_b64(JSON.stringify({}));\n\t\t\t} else {\n\t\t\t\tm_data = this.utf8_to_b64(JSON.stringify(XKit.storage.get_all(installed[i])));\n\t\t\t}\n\n\t\t\tvar m_to_add = {};\n\t\t\tm_to_add.extension = installed[i];\n\t\t\tm_to_add.preferences = m_data;\n\t\t\tm_to_add.enabled = XKit.installed.enabled(installed[i]);\n\n\t\t\tif (limit_data && (m_data.length / 1024 / 1024) >= 1.5) {\n\t\t\t\tskipping.push(m_to_add.extension);\n\t\t\t\tskipping_size.push((m_data.length / 1024 / 1024));\n\t\t\t} else {\n\t\t\t\tto_send.settings.push(m_to_add);\n\t\t\t}\n\n\t\t}\n\n\n\t\tto_send.identifier = \"XCLOUD\";\n\n\t\t//Add this flag to the payload so we know we can unescape the payload.\n\t\tto_send.use_utf8 = true;\n\n\n\t\tto_send = JSON.stringify(to_send);\n\t\tconsole.log(\"Original size = \" + (to_send.length / 1024 / 1024) + \" megabytes\");\n\n\t\t//We need to base64 encode it without utf8 support so it's compatible with the old payload.\n\t\tto_send = \"XCS\" + XKit.extensions.xcloud.base64_encode(to_send) + \"XCE\";\n\n\t\treturn [to_send, skipping];\n\t},\n\n\tstart_upload: function() {\n\t\tXKit.extensions.xcloud.show_overlay();\n\t\tvar payload_pair = this.create_export_data(true);\n\t\tvar to_send = payload_pair[0];\n\t\tvar skipping = payload_pair[1];\n\n\t\tif ((to_send.length / 1024 / 1024) >= 5) {\n\n\t\t\tXKit.window.show(\n\t\t\t\t\"Unable to back up data.\",\n\n\t\t\t\t\"The backup data file is bigger than 5 megabytes, which is the maximum the XCloud servers can handle.

      \" +\n\t\t\t\t\"Please use XCloud Local Backup instead.\",\n\n\t\t\t\t\"error\",\n\n\t\t\t\t'
      OK
      '\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif (skipping.length > 0) {\n\t\t\tvar m_html = \"\";\n\n\t\t\tXKit.window.show(\n\t\t\t\t\"Skipping some extensions\",\n\n\t\t\t\t\"The following extensions will not be backed up to XCloud because they are storing more than 1.5 megabytes of data, making the backup bigger than XCloud servers can handle.\" +\n\t\t\t\tm_html +\n\t\t\t\t\"To save your configuration without any filesize limits, please use XCloud Local Backup.\",\n\n\t\t\t\t\"warning\",\n\n\t\t\t\t'
      Continue
      ' +\n\t\t\t\t'
      Cancel
      '\n\t\t\t);\n\n\t\t\t$(\"#xkit-xcloud-backup-skip-continue\").click(function() {\n\t\t\t\tXKit.window.close();\n\t\t\t\tXKit.extensions.xcloud.send_upload_data(to_send);\n\t\t\t});\n\t\t} else {\n\t\t\tXKit.extensions.xcloud.send_upload_data(to_send);\n\t\t}\n\n\n\t},\n\n\tsend_upload_data: function(to_send) {\n\t\tvar xcloud_url = this.server;\n\t\tvar m_username = encodeURIComponent(XKit.extensions.xcloud.username);\n\t\tvar m_password = encodeURIComponent(XKit.extensions.xcloud.password);\n\n\t\tconsole.log(\"Uploading upload object. Size = \" + (to_send.length / 1024 / 1024) + \" megabytes\");\n\n\t\tvar uploadRequest = {\n\t\t\tmethod: \"POST\",\n\t\t\turl: xcloud_url + \"/xcloud/upload/\",\n\t\t\tonerror: function() {\n\n\t\t\t\tXKit.extensions.xcloud.hide_overlay();\n\t\t\t\tXKit.window.show(\"Can't connect to server\", \"XKit was unable to contact XCloud servers.
      Error code: 1003
      Please try again or send a bug report.\", \"error\", \"
      OK
      \");\n\t\t\t\treturn;\n\n\t\t\t},\n\t\t\tonload: function(response) {\n\n\t\t\t\tvar mdata = null;\n\t\t\t\ttry {\n\t\t\t\t\tmdata = JSON.parse(response.responseText);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tXKit.extensions.xcloud.hide_overlay();\n\t\t\t\t\tXKit.window.show(\"Can't connect to server\", \"XKit was unable to contact XCloud servers.
      Error code: 1001
      Please try again or send a bug report.\", \"error\", \"
      OK
      \");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (mdata.errors === \"false\") {\n\t\t\t\t\tXKit.extensions.xcloud.hide_overlay();\n\t\t\t\t\tXKit.extensions.xcloud.change_panel(\"
      All done!
      Your XKit settings are now in sync with XCloud.
      OK
      \");\n\t\t\t\t} else {\n\t\t\t\t\tXKit.extensions.xcloud.hide_overlay();\n\t\t\t\t\tvar err_desc = \"\";\n\t\t\t\t\tvar err_title = \"\";\n\t\t\t\t\tif (mdata.error_code === \"102\") {\n\t\t\t\t\t\terr_desc = \"
      Usernames can only have letters and numbers.\";\n\t\t\t\t\t\terr_title = \"Invalid Username\";\n\t\t\t\t\t}\n\t\t\t\t\tif (mdata.error_code === \"202\") {\n\t\t\t\t\t\terr_desc = \"
      Please enter a password.\";\n\t\t\t\t\t\terr_title = \"No Password\";\n\t\t\t\t\t}\n\t\t\t\t\tif (mdata.error_code === \"100\") {\n\t\t\t\t\t\terr_desc = \"
      Please pick another username.\";\n\t\t\t\t\t\terr_title = \"Username taken.\";\n\t\t\t\t\t}\n\t\t\t\t\tif (mdata.error_code === \"400\") {\n\t\t\t\t\t\terr_desc = \"
      Please check your username and try again.\";\n\t\t\t\t\t\terr_title = \"Invalid Username\";\n\t\t\t\t\t}\n\t\t\t\t\tif (mdata.error_code === \"602\") {\n\t\t\t\t\t\terr_desc = \"
      Please check your password and try again.
      If you have changed your password, you might need to log out of XCloud and sign back in.\";\n\t\t\t\t\t\terr_title = \"Wrong Password\";\n\t\t\t\t\t}\n\n\t\t\t\t\tXKit.window.show(\"Unable to complete synchronization\", \"\" + err_title + \" (code: \" + mdata.error_code + \")\" + err_desc, \"error\", \"
      OK
      \");\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\n\t\tif (XKit.extensions.xcloud.useoldserver) {\n\t\t\tuploadRequest.data = \"username=\" + m_username + \"&password=\" + m_password + \"&\" + \"data=\" + to_send;\n\t\t\tuploadRequest.json = false;\n\t\t} else {\n\t\t\tuploadRequest.headers = {\"Authorization\": \"Basic \" + btoa(m_username + \":\" + m_password)};\n\t\t\tuploadRequest.data = JSON.stringify({\"data\": to_send });\n\t\t\tuploadRequest.json = true;\n\t\t}\n\n\t\tGM_xmlhttpRequest(uploadRequest);\n\n\t},\n\n\tchange_panel_back: function() {\n\n\t\t$(\".xcloud-panel.current\").animate({ left: \"100%\" }, 450 );\n\n\n\t\tif ($(\"#xcloud-welcome-panel\").hasClass(\"forced\")) {\n\t\t\t$(\"#xcloud-welcome-panel\").css(\"left\", \"-100%\");\n\t\t\t$(\"#xcloud-welcome-panel\").removeClass(\"forced\");\n\t\t}\n\n\t\t$(\"#xcloud-welcome-panel\").animate({ left: \"0\" }, 450, function() {\n\t\t\t$(\".xcloud-panel.current\").remove();\n\t\t\t$(\"#xcloud-welcome-panel\").addClass(\"current\");\n\t\t\t$(\"#xcloud-welcome-panel\").removeClass(\"previous\");\n\t\t\tXKit.extensions.xcloud.panel_appended();\n\t\t});\n\n\t},\n\n\tchange_panel: function(html) {\n\n\t\t$(\"#xcloud-panel-right\").append(\"
      \" + html + \"
      \");\n\n\t\t$(\".xcloud-panel.current\").animate({ left: \"-100%\" }, 450);\n\t\t$(\".xcloud-panel.next\").animate({ left: \"0\" }, 450, function() {\n\t\t\t$(\".xcloud-panel.current\").addClass(\"previous\");\n\t\t\t$(\".xcloud-panel.previous\").removeClass(\"current\");\n\t\t\t$(\".xcloud-panel.next\").addClass(\"current\");\n\t\t\t$(\".xcloud-panel.next\").removeClass(\"next\");\n\t\t\tXKit.extensions.xcloud.panel_appended();\n\t\t\t$(\".xcloud-panel.previous\").not(\"#xcloud-welcome-panel\").remove();\n\t\t});\n\n\t},\n\n\tsave_user_login: function() {\n\n\t\tXKit.storage.set(\"xcloud\", \"username\", XKit.extensions.xcloud.username);\n\t\tXKit.storage.set(\"xcloud\", \"password\", \"[\" + XKit.extensions.xcloud.password + \"]\");\n\t\tXKit.storage.set(\"xcloud\", \"useoldserver\", XKit.extensions.xcloud.useoldserver + \"\");\n\n\t},\n\n\tload_user_login: function() {\n\n\t\t//Unfortunately due to a bug in xkit.js we have to do a get_all instead of just a get.\n\t\tvar stored_data = XKit.storage.get_all(\"xcloud\");\n\t\tXKit.extensions.xcloud.username = stored_data.username && stored_data.username.value ? stored_data.username.value : \"\";\n\t\tXKit.extensions.xcloud.password = stored_data.password && stored_data.password.value ? stored_data.password.value : \"\";\n\n\t\t//default use old server so users upgrading won't have to relogin.\n\t\tXKit.extensions.xcloud.useoldserver = XKit.storage.get(\"xcloud\", \"useoldserver\", \"true\") === \"true\";\n\n\t\tif (XKit.extensions.xcloud.password.substring(0, 1) === \"[\") {\n\t\t\tif (XKit.extensions.xcloud.password.substring(XKit.extensions.xcloud.password.length - 1) === \"]\") {\n\t\t\t\tXKit.extensions.xcloud.password = XKit.extensions.xcloud.password.substring(1, XKit.extensions.xcloud.password.length - 1);\n\t\t\t}\n\t\t}\n\n\t},\n\n\tdestroy: function() {\n\t\tthis.running = false;\n\t},\n\n\tutf8_to_b64: function(str) {\n\t\treturn this.base64_encode(encodeURI(str));\n\t},\n\n\tb64_to_utf8: function(str) {\n\t\treturn decodeURI(this.base64_decode(str));\n\t},\n\n\n\tmd5: function(str) {\n\t\t/* eslint-disable id-length */\n\n\t\t// http://kevin.vanzonneveld.net\n\t\t// + original by: Webtoolkit.info (http://www.webtoolkit.info/)\n\t\t// + namespaced by: Michael White (http://getsprink.com)\n\t\t// + tweaked by: Jack\n\t\t// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n\t\t// + input by: Brett Zamir (http://brett-zamir.me)\n\t\t// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n\t\t// - depends on: utf8_encode\n\t\t// * example 1: md5('Kevin van Zonneveld');\n\t\t// * returns 1: '6e658d4bfcb59cc13f96c14450ac40b9'\n\t\tvar xl;\n\n\t\tvar rotateLeft = function(lValue, iShiftBits) {\n\t\t\treturn (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));\n\t\t};\n\n\t\tvar addUnsigned = function(lX, lY) {\n\t\t\tvar lX4, lY4, lX8, lY8, lResult;\n\t\t\tlX8 = (lX & 0x80000000);\n\t\t\tlY8 = (lY & 0x80000000);\n\t\t\tlX4 = (lX & 0x40000000);\n\t\t\tlY4 = (lY & 0x40000000);\n\t\t\tlResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);\n\t\t\tif (lX4 & lY4) {\n\t\t\t\treturn (lResult ^ 0x80000000 ^ lX8 ^ lY8);\n\t\t\t}\n\t\t\tif (lX4 | lY4) {\n\t\t\t\tif (lResult & 0x40000000) {\n\t\t\t\t\treturn (lResult ^ 0xC0000000 ^ lX8 ^ lY8);\n\t\t\t\t} else {\n\t\t\t\t\treturn (lResult ^ 0x40000000 ^ lX8 ^ lY8);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn (lResult ^ lX8 ^ lY8);\n\t\t\t}\n\t\t};\n\n\t\tvar _F = function(x, y, z) {\n\t\t\treturn (x & y) | ((~x) & z);\n\t\t};\n\t\tvar _G = function(x, y, z) {\n\t\t\treturn (x & z) | (y & (~z));\n\t\t};\n\t\tvar _H = function(x, y, z) {\n\t\t\treturn (x ^ y ^ z);\n\t\t};\n\t\tvar _I = function(x, y, z) {\n\t\t\treturn (y ^ (x | (~z)));\n\t\t};\n\n\t\tvar _FF = function(a, b, c, d, x, s, ac) {\n\t\t\ta = addUnsigned(a, addUnsigned(addUnsigned(_F(b, c, d), x), ac));\n\t\t\treturn addUnsigned(rotateLeft(a, s), b);\n\t\t};\n\n\t\tvar _GG = function(a, b, c, d, x, s, ac) {\n\t\t\ta = addUnsigned(a, addUnsigned(addUnsigned(_G(b, c, d), x), ac));\n\t\t\treturn addUnsigned(rotateLeft(a, s), b);\n\t\t};\n\n\t\tvar _HH = function(a, b, c, d, x, s, ac) {\n\t\t\ta = addUnsigned(a, addUnsigned(addUnsigned(_H(b, c, d), x), ac));\n\t\t\treturn addUnsigned(rotateLeft(a, s), b);\n\t\t};\n\n\t\tvar _II = function(a, b, c, d, x, s, ac) {\n\t\t\ta = addUnsigned(a, addUnsigned(addUnsigned(_I(b, c, d), x), ac));\n\t\t\treturn addUnsigned(rotateLeft(a, s), b);\n\t\t};\n\n\t\tvar convertToWordArray = function(word) {\n\t\t\tvar lWordCount;\n\t\t\tvar lMessageLength = word.length;\n\t\t\tvar lNumberOfWords_temp1 = lMessageLength + 8;\n\t\t\tvar lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;\n\t\t\tvar lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;\n\t\t\tvar lWordArray = new Array(lNumberOfWords - 1);\n\t\t\tvar lBytePosition = 0;\n\t\t\tvar lByteCount = 0;\n\t\t\twhile (lByteCount < lMessageLength) {\n\t\t\t\tlWordCount = (lByteCount - (lByteCount % 4)) / 4;\n\t\t\t\tlBytePosition = (lByteCount % 4) * 8;\n\t\t\t\tlWordArray[lWordCount] = (lWordArray[lWordCount] | (word.charCodeAt(lByteCount) << lBytePosition));\n\t\t\t\tlByteCount++;\n\t\t\t}\n\t\t\tlWordCount = (lByteCount - (lByteCount % 4)) / 4;\n\t\t\tlBytePosition = (lByteCount % 4) * 8;\n\t\t\tlWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);\n\t\t\tlWordArray[lNumberOfWords - 2] = lMessageLength << 3;\n\t\t\tlWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;\n\t\t\treturn lWordArray;\n\t\t};\n\n\t\tvar wordToHex = function(lValue) {\n\t\t\tvar wordToHexValue = \"\",\n\t\t\t\twordToHexValue_temp = \"\",\n\t\t\t\tlByte, lCount;\n\t\t\tfor (lCount = 0; lCount <= 3; lCount++) {\n\t\t\t\tlByte = (lValue >>> (lCount * 8)) & 255;\n\t\t\t\twordToHexValue_temp = \"0\" + lByte.toString(16);\n\t\t\t\twordToHexValue = wordToHexValue + wordToHexValue_temp.substr(wordToHexValue_temp.length - 2, 2);\n\t\t\t}\n\t\t\treturn wordToHexValue;\n\t\t};\n\n\t\tvar x = [],\n\t\t\tk, AA, BB, CC, DD, a, b, c, d, S11 = 7,\n\t\t\tS12 = 12,\n\t\t\tS13 = 17,\n\t\t\tS14 = 22,\n\t\t\tS21 = 5,\n\t\t\tS22 = 9,\n\t\t\tS23 = 14,\n\t\t\tS24 = 20,\n\t\t\tS31 = 4,\n\t\t\tS32 = 11,\n\t\t\tS33 = 16,\n\t\t\tS34 = 23,\n\t\t\tS41 = 6,\n\t\t\tS42 = 10,\n\t\t\tS43 = 15,\n\t\t\tS44 = 21;\n\n\t\tstr = XKit.extensions.xcloud.utf8_encode(str);\n\t\tx = convertToWordArray(str);\n\t\ta = 0x67452301;\n\t\tb = 0xEFCDAB89;\n\t\tc = 0x98BADCFE;\n\t\td = 0x10325476;\n\n\t\txl = x.length;\n\t\tfor (k = 0; k < xl; k += 16) {\n\t\t\tAA = a;\n\t\t\tBB = b;\n\t\t\tCC = c;\n\t\t\tDD = d;\n\t\t\ta = _FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);\n\t\t\td = _FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);\n\t\t\tc = _FF(c, d, a, b, x[k + 2], S13, 0x242070DB);\n\t\t\tb = _FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);\n\t\t\ta = _FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);\n\t\t\td = _FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);\n\t\t\tc = _FF(c, d, a, b, x[k + 6], S13, 0xA8304613);\n\t\t\tb = _FF(b, c, d, a, x[k + 7], S14, 0xFD469501);\n\t\t\ta = _FF(a, b, c, d, x[k + 8], S11, 0x698098D8);\n\t\t\td = _FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);\n\t\t\tc = _FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);\n\t\t\tb = _FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);\n\t\t\ta = _FF(a, b, c, d, x[k + 12], S11, 0x6B901122);\n\t\t\td = _FF(d, a, b, c, x[k + 13], S12, 0xFD987193);\n\t\t\tc = _FF(c, d, a, b, x[k + 14], S13, 0xA679438E);\n\t\t\tb = _FF(b, c, d, a, x[k + 15], S14, 0x49B40821);\n\t\t\ta = _GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);\n\t\t\td = _GG(d, a, b, c, x[k + 6], S22, 0xC040B340);\n\t\t\tc = _GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);\n\t\t\tb = _GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);\n\t\t\ta = _GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);\n\t\t\td = _GG(d, a, b, c, x[k + 10], S22, 0x2441453);\n\t\t\tc = _GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);\n\t\t\tb = _GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);\n\t\t\ta = _GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);\n\t\t\td = _GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);\n\t\t\tc = _GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);\n\t\t\tb = _GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);\n\t\t\ta = _GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);\n\t\t\td = _GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);\n\t\t\tc = _GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);\n\t\t\tb = _GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);\n\t\t\ta = _HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);\n\t\t\td = _HH(d, a, b, c, x[k + 8], S32, 0x8771F681);\n\t\t\tc = _HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);\n\t\t\tb = _HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);\n\t\t\ta = _HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);\n\t\t\td = _HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);\n\t\t\tc = _HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);\n\t\t\tb = _HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);\n\t\t\ta = _HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);\n\t\t\td = _HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);\n\t\t\tc = _HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);\n\t\t\tb = _HH(b, c, d, a, x[k + 6], S34, 0x4881D05);\n\t\t\ta = _HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);\n\t\t\td = _HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);\n\t\t\tc = _HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);\n\t\t\tb = _HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);\n\t\t\ta = _II(a, b, c, d, x[k + 0], S41, 0xF4292244);\n\t\t\td = _II(d, a, b, c, x[k + 7], S42, 0x432AFF97);\n\t\t\tc = _II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);\n\t\t\tb = _II(b, c, d, a, x[k + 5], S44, 0xFC93A039);\n\t\t\ta = _II(a, b, c, d, x[k + 12], S41, 0x655B59C3);\n\t\t\td = _II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);\n\t\t\tc = _II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);\n\t\t\tb = _II(b, c, d, a, x[k + 1], S44, 0x85845DD1);\n\t\t\ta = _II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);\n\t\t\td = _II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);\n\t\t\tc = _II(c, d, a, b, x[k + 6], S43, 0xA3014314);\n\t\t\tb = _II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);\n\t\t\ta = _II(a, b, c, d, x[k + 4], S41, 0xF7537E82);\n\t\t\td = _II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);\n\t\t\tc = _II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);\n\t\t\tb = _II(b, c, d, a, x[k + 9], S44, 0xEB86D391);\n\t\t\ta = addUnsigned(a, AA);\n\t\t\tb = addUnsigned(b, BB);\n\t\t\tc = addUnsigned(c, CC);\n\t\t\td = addUnsigned(d, DD);\n\t\t}\n\n\t\tvar temp = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);\n\n\t\treturn temp.toLowerCase();\n\t\t/* eslint-enable id-length */\n\t},\n\n\tutf8_encode: function(argString) {\n\t\t// http://kevin.vanzonneveld.net\n\t\t// + original by: Webtoolkit.info (http://www.webtoolkit.info/)\n\t\t// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n\t\t// + improved by: sowberry\n\t\t// + tweaked by: Jack\n\t\t// + bugfixed by: Onno Marsman\n\t\t// + improved by: Yves Sucaet\n\t\t// + bugfixed by: Onno Marsman\n\t\t// + bugfixed by: Ulrich\n\t\t// + bugfixed by: Rafal Kukawski\n\t\t// + improved by: kirilloid\n\t\t// + bugfixed by: kirilloid\n\t\t// * example 1: utf8_encode('Kevin van Zonneveld');\n\t\t// * returns 1: 'Kevin van Zonneveld'\n\n\t\tif (argString === null || typeof argString === \"undefined\") {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tvar string = (argString + ''); // .replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n\t\tvar utftext = '',\n\t\t\tstart, end, stringl = 0;\n\n\t\tstart = end = 0;\n\t\tstringl = string.length;\n\t\tfor (var i = 0; i < stringl; i++) {\n\t\t\tvar c1 = string.charCodeAt(i);\n\t\t\tvar enc = null;\n\n\t\t\tif (c1 < 128) {\n\t\t\t\tend++;\n\t\t\t} else if (c1 > 127 && c1 < 2048) {\n\t\t\t\tenc = String.fromCharCode(\n\t\t\t\t\t(c1 >> 6) | 192,\n\t\t\t\t\t( c1 & 63) | 128\n\t\t\t\t);\n\t\t\t} else if (c1 & 0xF800 != 0xD800) {\n\t\t\t\tenc = String.fromCharCode(\n\t\t\t\t\t(c1 >> 12) | 224,\n\t\t\t\t\t((c1 >> 6) & 63) | 128,\n\t\t\t\t\t( c1 & 63) | 128\n\t\t\t\t);\n\t\t\t} else { // surrogate pairs\n\t\t\t\tif (c1 & 0xFC00 != 0xD800) { throw new RangeError(\"Unmatched trail surrogate at \" + i); }\n\t\t\t\tvar c2 = string.charCodeAt(++i);\n\t\t\t\tif (c2 & 0xFC00 != 0xDC00) { throw new RangeError(\"Unmatched lead surrogate at \" + (i - 1)); }\n\t\t\t\tc1 = ((c1 & 0x3FF) << 10) + (c2 & 0x3FF) + 0x10000;\n\t\t\t\tenc = String.fromCharCode(\n\t\t\t\t\t(c1 >> 18) | 240,\n\t\t\t\t\t((c1 >> 12) & 63) | 128,\n\t\t\t\t\t((c1 >> 6) & 63) | 128,\n\t\t\t\t\t( c1 & 63) | 128\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (enc !== null) {\n\t\t\t\tif (end > start) {\n\t\t\t\t\tutftext += string.slice(start, end);\n\t\t\t\t}\n\t\t\t\tutftext += enc;\n\t\t\t\tstart = end = i + 1;\n\t\t\t}\n\t\t}\n\n\t\tif (end > start) {\n\t\t\tutftext += string.slice(start, stringl);\n\t\t}\n\n\t\treturn utftext;\n\t},\n\n\tbase64_encode: function(data) {\n\t\t// http://kevin.vanzonneveld.net\n\t\t// + original by: Tyler Akins (http://rumkin.com)\n\t\t// + improved by: Bayron Guevara\n\t\t// + improved by: Thunder.m\n\t\t// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n\t\t// + bugfixed by: Pellentesque Malesuada\n\t\t// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n\t\t// + improved by: Rafa Kukawski (http://kukawski.pl)\n\t\t// * example 1: base64_encode('Kevin van Zonneveld');\n\t\t// * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='\n\t\t// mozilla has this native\n\t\t// - but breaks in 2.0.0.12!\n\t\t//if (typeof this.window['btoa'] == 'function') {\n\t\t// return btoa(data);\n\t\t//}\n\t\tvar b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\t\tvar o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n\t\t\tac = 0,\n\t\t\tenc = \"\",\n\t\t\ttmp_arr = [];\n\n\t\tif (!data) {\n\t\t\treturn data;\n\t\t}\n\n\t\tdo { // pack three octets into four hexets\n\t\t\to1 = data.charCodeAt(i++);\n\t\t\to2 = data.charCodeAt(i++);\n\t\t\to3 = data.charCodeAt(i++);\n\n\t\t\tbits = o1 << 16 | o2 << 8 | o3;\n\n\t\t\th1 = bits >> 18 & 0x3f;\n\t\t\th2 = bits >> 12 & 0x3f;\n\t\t\th3 = bits >> 6 & 0x3f;\n\t\t\th4 = bits & 0x3f;\n\n\t\t\t// use hexets to index into b64, and append result to encoded string\n\t\t\ttmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n\t\t} while (i < data.length);\n\n\t\tenc = tmp_arr.join('');\n\n\t\tvar padding = data.length % 3;\n\n\t\treturn (padding ? enc.slice(0, padding - 3) : enc) + '==='.slice(padding || 3);\n\n\t},\n\n\tbase64_decode: function(data) {\n\t\t// http://kevin.vanzonneveld.net\n\t\t// + original by: Tyler Akins (http://rumkin.com)\n\t\t// + improved by: Thunder.m\n\t\t// + input by: Aman Gupta\n\t\t// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n\t\t// + bugfixed by: Onno Marsman\n\t\t// + bugfixed by: Pellentesque Malesuada\n\t\t// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n\t\t// + input by: Brett Zamir (http://brett-zamir.me)\n\t\t// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n\t\t// * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==');\n\t\t// * returns 1: 'Kevin van Zonneveld'\n\t\t// mozilla has this native\n\t\t// - but breaks in 2.0.0.12!\n\t\t//if (typeof this.window['atob'] == 'function') {\n\t\t// return atob(data);\n\t\t//}\n\t\tvar b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\t\tvar o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n\t\t\tac = 0,\n\t\t\tdec = \"\",\n\t\t\ttmp_arr = [];\n\n\t\tif (!data) {\n\t\t\treturn data;\n\t\t}\n\n\t\tdata += '';\n\n\t\tdo { // unpack four hexets into three octets using index points in b64\n\t\t\th1 = b64.indexOf(data.charAt(i++));\n\t\t\th2 = b64.indexOf(data.charAt(i++));\n\t\t\th3 = b64.indexOf(data.charAt(i++));\n\t\t\th4 = b64.indexOf(data.charAt(i++));\n\n\t\t\tbits = h1 << 18 | h2 << 12 | h3 << 6 | h4;\n\n\t\t\to1 = bits >> 16 & 0xff;\n\t\t\to2 = bits >> 8 & 0xff;\n\t\t\to3 = bits & 0xff;\n\n\t\t\tif (h3 == 64) {\n\t\t\t\ttmp_arr[ac++] = String.fromCharCode(o1);\n\t\t\t} else if (h4 == 64) {\n\t\t\t\ttmp_arr[ac++] = String.fromCharCode(o1, o2);\n\t\t\t} else {\n\t\t\t\ttmp_arr[ac++] = String.fromCharCode(o1, o2, o3);\n\t\t\t}\n\t\t} while (i < data.length);\n\n\t\tdec = tmp_arr.join('');\n\n\t\treturn dec;\n\t}\n\n});\n","file":"found","server":"up","errors":false,"icon":"data:image/png;base64,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\n","css":"#xcloud-panel {\n\tposition: absolute;\n\ttop: 0; left: 0;\n\twidth: 100%; height: 100%;\n\tbackground: rgb(0,186,240);\n}\n\n#xcloud-panel input[type=text],\n#xcloud-panel input[type=password] {\n\t-webkit-user-select: text !important;\n\t-o-user-select: text !important;\n\t-moz-user-select: text !important;\n\tuser-select: text !important;\n}\n\n#xcloud-overlay-title {\n\tfont-size: 16px;\n\tfont-weight: bold;\n\ttext-align: center;\n\tpadding: 3px 15px;\n}\n\n#xcloud-overlay-text {\n\theight: 70px;\n\twidth: 100%;\n\tposition: absolute;\n\tbottom: 17px;\n\tleft: 0px;\n}\n\n#xcloud-overlay-message {\n\tfont-size: 13px;\n\ttext-align: center;\n\tcolor: rgb(100,100,100);\n\tpadding: 0px 15px;\n}\n\n#xcloud-overlay-background {\n\tz-index: 21474845;\n\tbackground: rgba(0,186,240,0.8);\n\tposition: fixed;\n\ttop: 0; left: 0;\n\twidth: 100%; height: 100%;\n\topacity: 0;\n}\n\n#xcloud-overlay-background,\n#xcloud-overlay * {\n\tuser-select: none;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\tcursor: default;\n}\n\n#xcloud-overlay {\n\twidth: 300px;\n\tz-index: 21474855;\n\theight: 300px;\n\tposition: fixed;\n\ttop: 50%; left: 50%;\n\tmargin-top: -150px;\n\tmargin-left: -150px;\n\tbackground: white;\n\tborder-radius: 6px;\n\tbox-shadow: 0px 1px 3px rgba(0,0,0,0.33);\n\tdisplay: none;\n}\n\n#xcloud-panel-working {\n\tposition: absolute;\n\ttop: 0; left: 0;\n\twidth: 100%; height: 100%;\n\tpadding: 20px;\n\tz-index: 1000;\n\tbackground: rgba(255,255,255,0.87);\n\ttext-align: center;\n\tline-height: 250px;\n\ttext-shadow: 0px 1px 0px white;\n\tcolor: rgb(50,50,50);\n\tfont-weight: bold;\n}\n\n/*#xcloud-upload {\n\n\tbackground: #e3f6ff 10px 50% no-repeat url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODEzMjA5NTlFREUwMTFFMkJBMUVENTQ4MDZFNjIwNTIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODEzMjA5NUFFREUwMTFFMkJBMUVENTQ4MDZFNjIwNTIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4MTMyMDk1N0VERTAxMUUyQkExRUQ1NDgwNkU2MjA1MiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MTMyMDk1OEVERTAxMUUyQkExRUQ1NDgwNkU2MjA1MiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpCSRJAAAABgSURBVHjaxJJBDgAhCAPthq/yKh5b9bAXF4FEk+1FiA6RpiDZVqnqW85LzMLMPu+etheXswwz6UMYSZ9+OxU8w6oSx+nttOE4QjjYkVd3/g+WYkjKMJwBuB7Po5B0AQYA0KoaF0G9fP8AAAAASUVORK5CYII=');\n\ttext-align: left;\n\tpadding-left: 33px;\n}\n\n#xcloud-restore {\n\n\tbackground: #e3f6ff 10px 50% no-repeat url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODEzMjA5NURFREUwMTFFMkJBMUVENTQ4MDZFNjIwNTIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODEzMjA5NUVFREUwMTFFMkJBMUVENTQ4MDZFNjIwNTIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4MTMyMDk1QkVERTAxMUUyQkExRUQ1NDgwNkU2MjA1MiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MTMyMDk1Q0VERTAxMUUyQkExRUQ1NDgwNkU2MjA1MiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmQRVqgAAABeSURBVHjaYvz//z8DOkhNTQVRyBKMs2fPxlDHxEABwKX5PwE+Xs2MBPgEnc2ITyNYAluAEQtYsIQ0TtOAIc6IVzMep/6nS1TRXjMLkYmEaM2MWAxgpHrypCiRAAQYAHOyGBuMMaEDAAAAAElFTkSuQmCC');\n\ttext-align: left;\n\tpadding-left: 33px;\n}\n\n#xcloud-logout {\n\n\ttext-align: left;\n\tpadding-left: 33px;\n\n}*/\n\n.xcloud-information {\n\tfont-size: 13px;\n\tcolor: rgb(120,120,120);\n}\n\n.xcloud-welcome-button {\n\tborder: 1px solid rgb(200,200,200);\n\theight: 60px;\n\tline-height: 59px;\n\ttext-align: left;\n\tbackground-color: rgb(242,242,242);\n\tbox-shadow: inset 0px 2px 2px rgba(255,255,255,0.6), 0px 1px 2px rgba(0,0,0,0.22);\n\tpadding-left: 55px;\n\tfloat: left;\n\tfont-weight: bold;\n\tbackground-position: 15px 50%;\n\tcolor: black;\n\tbackground-repeat: no-repeat;\n\tcursor: pointer;\n}\n\n.xcloud-welcome-button:hover {\n\tbackground-color: rgb(254,254,254);\n}\n\n.xcloud-welcome-button:active {\n\tbackground-color: rgb(240,240,240);\n\tposition: relative;\n\ttop: 1px;\n\tbox-shadow: inset 0px 2px 1px rgba(0,0,0,0.18);\n}\n\n#xcloud-upload {\n\twidth: 33%;\n\tborder-radius: 6px 0px 0px 6px;\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTg1NDMxNDRFRTc4MTFFMjlDQzREN0VDNzIxQUU5MkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTg1NDMxNDVFRTc4MTFFMjlDQzREN0VDNzIxQUU5MkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3QUMzNTlFQkVFMzAxMUUyOUNDNEQ3RUM3MjFBRTkyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3QUMzNTlFQ0VFMzAxMUUyOUNDNEQ3RUM3MjFBRTkyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvSqtAQAAAFkSURBVHja5FdtDcIwEF0J/8HBQMFwACgAB4CCSkDCJDAHwwE4ABR0KAAH5ZqUpGnuuuvoAgmXvDDY2rf76LtDaK2zb9gg+5L1SiyEyMmbJtQcgK0AB4Ayyzwoe2/lPF8CLuR+TEKMjIJ5Vjrf82hi64X+EBLbW1BVDfkxpFvv5wZwtHBtbTFBtjoDx5KVY8TTB/Xm3rqa8HrUGmqbU5+0YJAWgXBvOMQqljTgrVl/aiVGvN1wj1ssQrlVfZEaDJDqfFuVQLn2AG2hQpI5do9BAtW8OtcTlBjR1WcC4ufvdidI+D0Q9q425nrcONeLBMQLYu9s6MnnNHFE11Sx9pZjKFbpVXIVbBJGrazMPRAJrJnyWXjrFUerJSH0Mc3Cf+k5hzgniGsGqURIS/YgAPm5wMcMSV3sIFDB/jv2sBcIdwxKdncimrrsMOzNo9oiMhDsu463bQgNe6aCb72d87/77/QSYAAkYJQIWVbyKwAAAABJRU5ErkJggg==);\n}\n\n.xcloud-welcome-buttons {\n\tposition: absolute;\n\tbottom: 30px; left: 0;\n\twidth: 100%;\n\theight: 60px;\n\tpadding: 15px;\n}\n\n#xcloud-signup {\n\twidth: 50%;\n\tborder-radius: 0px 6px 6px 0px;\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qjc0NkZGMjlFRTdBMTFFMjlDQzREN0VDNzIxQUU5MkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qjc0NkZGMkFFRTdBMTFFMjlDQzREN0VDNzIxQUU5MkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxODU0MzE0RUVFNzgxMUUyOUNDNEQ3RUM3MjFBRTkyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNzQ2RkYyOEVFN0ExMUUyOUNDNEQ3RUM3MjFBRTkyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrNXHUwAAAFVSURBVHja7FdtEcIwDKUYqIQhAQk4AAfDwSQgAQnDQSWAgyEBFHAoGMldepTSjyRwwA9yl2t3Tfua5fWtM+M4Tr5h08mX7LeBjTG9ZnGYZ8EduX0YxBqXHKzBMGxrsdE8BBpoLvoQjnMyXkUtK1NoDuDzbBBj54527JSZjvRsH+IYi4QLWAbwsgaaBCawNsg0dkfjNjHPUr8tgT4Bg/UZsJz30esdAvBl6Q3lWNwxMm5y7GWVRFJjLZHEwCVWc0B9KbTAniidENSWhEesXExQnLP1BEyBc+WvF4BuSidABCwlEsV2FLNlCYgWFDPNnAh1jdVEijcjPcd1wb/rc8cu3RsyRdB9MN6qBeRF9iZZzP06cdnrdd3HX+i5EWWs1d6UukmBnUrwK0cn5fGd6xT0j+ALCLrW7lgUs4P2zL6XxX8ScFFDpZmBrzmgWjP/X5hP2U2AAQBew89PQOu3DQAAAABJRU5ErkJggg==);\n}\n\n#xcloud-beta-tag {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFwAAABcCAYAAADj79JYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qjc0NkZGMzFFRTdBMTFFMjlDQzREN0VDNzIxQUU5MkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qjc0NkZGMzJFRTdBMTFFMjlDQzREN0VDNzIxQUU5MkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCNzQ2RkYyRkVFN0ExMUUyOUNDNEQ3RUM3MjFBRTkyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNzQ2RkYzMEVFN0ExMUUyOUNDNEQ3RUM3MjFBRTkyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pky/u8YAAAYBSURBVHja7Ns9bBxF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);\n\twidth: 92px; height: 92px;\n\tposition: absolute;\n\ttop: 0; left: 0;\n}\n\n#xcloud-login {\n\twidth: 50%;\n\tborder-right: 0;\n\tborder-radius: 6px 0px 0px 6px;\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qjc0NkZGMkRFRTdBMTFFMjlDQzREN0VDNzIxQUU5MkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qjc0NkZGMkVFRTdBMTFFMjlDQzREN0VDNzIxQUU5MkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCNzQ2RkYyQkVFN0ExMUUyOUNDNEQ3RUM3MjFBRTkyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNzQ2RkYyQ0VFN0ExMUUyOUNDNEQ3RUM3MjFBRTkyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpMNYkQAAAGJSURBVHja5FfRTcQwDCWI/8IEZYOyQY8NboRuwG1wZYJjg+sGsEHLBD2++eA2aG+C4CAHRcFJ7RAEEpae0qp2nGc7Tqq01me/IepPOFZKVTBcA25wtM+Xjs0MOACOiI9nmOflO46T6cM8SqJ/7r0PAb0OsMKRkgEXvpWs9BMgxlB7GD2dkdAxdiVgAhSufghcxksyYERMLazFjJGRJrAH1Dh++Y52O3x/5DCmHPcB5yH0RAoKaahTwj1AURW47aw0KaGuhYxrwmYUhzqSZx3JL7UbSmmoJeG2eiviWyNpILkcm7b6JMoxhq5ihroK6NZJOY7k+9Xm1fm+X+p2ORz3ruNQQ7FtNKfj1nM8OR2LTEVo3gtBo7gn6uMKTyUzbAibB8Atu7i4jB0d07neAqzvJPuYxdhZ/Cmyb1uISPkjjB3dXewgSS2uluGYHfKsjBcOmSl7jr3UPQfa5czp1ZRsBbqN7wivwiLHB49xx2B9wrtXh/Yz7mlRVRfOtWbNuU9xoP7dv9O7AAMAoiKXND9VrSAAAAAASUVORK5CYII=);\n}\n\n#xcloud-restore {\n\twidth: 33%;\n\tfloat: left;\n\tborder-left: 0;\n\tborder-right: 0;\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTg1NDMxNDhFRTc4MTFFMjlDQzREN0VDNzIxQUU5MkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTg1NDMxNDlFRTc4MTFFMjlDQzREN0VDNzIxQUU5MkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxODU0MzE0NkVFNzgxMUUyOUNDNEQ3RUM3MjFBRTkyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxODU0MzE0N0VFNzgxMUUyOUNDNEQ3RUM3MjFBRTkyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvUxYBMAAACtSURBVHjaYvz//z/DQADGUYsJamBkxKoBaA7jqMWjFo9aPGoxXSwGacCJgeA9SAmZGKRXHqfZBCzWp8Bye7xm45OEWh5PhqXxBM0lpABqeT4JlvYTZSYxiqCWzyfC0vlEm0esQqjl+/FYeh6I+WllMT/UAnRL75NiKckWI1n+Hi3b6JNsDqkasGQze3LMQCm5cJVK1ALIpdvwtBhmEczc4e9joi0e7UnQEgAEGACk29nbMOCY0wAAAABJRU5ErkJggg==);\n}\n\n#xcloud-logout {\n\twidth: 34%;\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTg1NDMxNENFRTc4MTFFMjlDQzREN0VDNzIxQUU5MkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTg1NDMxNERFRTc4MTFFMjlDQzREN0VDNzIxQUU5MkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxODU0MzE0QUVFNzgxMUUyOUNDNEQ3RUM3MjFBRTkyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxODU0MzE0QkVFNzgxMUUyOUNDNEQ3RUM3MjFBRTkyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnwfdXQAAAE5SURBVHja7FeBDYMgEJQuoBvQEbqBK3QDR3AER3AEVugGHUFHaCfQTkCflDYfAvwDaYxNSS5RfO76r39QobWuthiHaqOxL2EhxALQFksWR847NoL4HjjEb5UaMpSAgRE3mFiWsil1DDB6E/YK/cxpDM98T/ISoooQiM2rLGGcaaZwNPOQqHQITMu0DOHWxuLnMkVYOYuxaB0SRuJkyX2iLvHoeY6zWjwco8NRc4Q7TqmIj9J9VZ0b4+vjI7qeIeieag52zRzgZBnIWmBO6y4tsyngblKFb+j6xPZex9vN2gCn36updmJ+1entRBkIQzTPQDiWSYjmW2Zok7AllIEfOhZvEpGSvzEBrhZTIEZl78eRzCmUHQScUiqGoOJ6e9IpE/rTtNrZ472mTy/A9fjq8fb/FyZnPAUYAE0UiCqn+zYDAAAAAElFTkSuQmCC);\n\tborder-radius: 0px 6px 6px 0px;\n}\n\n#xcloud-login-username {\n\tdisplay: block;\n\tborder: 1px solid rgb(180,180,180);\n\tpadding: 8px 12px;\n\twidth: 100%;\n\tmargin: 0px;\n\tborder-radius: 6px 6px 0px 0px;\n\tfont-size: 14px;\n\tmargin-top: 15px;\n}\n\n.xcloud-inline-button {\n\tdisplay: block;\n\tmargin: 10px 0px;\n\ttext-align: center;\n\tborder-radius: 6px;\n\tpadding: 7px;\n\tfont-size: 13px;\n}\n\n#xcloud-login-password {\n\tdisplay: block;\n\tborder: 1px solid rgb(180,180,180);\n\tborder-top: 0;\n\tpadding: 8px 12px;\n\twidth: 100%;\n\tmargin: 0px;\n\tborder-radius: 0px 0px 6px 6px;\n\tfont-size: 14px;\n\n}\n\n.xcloud-separator {\n\tmargin-top: 17px;\n\tborder-bottom: 1px solid rgb(200,200,200);\n\tpadding-bottom: 5px;\n\tmargin-bottom: 4px;\n\tfont-size: 13px;\n\tfont-weight: bold;\n}\n\n.xcloud-title {\n\tfont-size: 19px;\n\tcolor: #009cc9;\n\tfont-weight: bold;\n\tmargin-bottom: 7px;\n}\n\n.xcloud-panel input {\n\t-o-user-select: all !important;\n\t-webkit-user-select: all !important;\n\t-moz-user-select: all !important;\n\tuser-select: all !important;\n}\n\n.xcloud-panel {\n\n\tposition: absolute;\n\ttop: 0; left: 0;\n\twidth: 100%; height: 100%;\n\tpadding: 20px;\n\n}\n\n.xcloud-panel.previous.forced {\n\tleft: -100%;\n}\n\n.xcloud-panel.next {\n\tleft: 100%;\n}\n\n#xcloud-panel-left {\n\n\tposition: absolute;\n\tbackground: no-repeat 50% 20% url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJ8AAACJCAYAAAAylOpmAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODQ0RUZDNzlFRDM3MTFFMzgyMjlCNERBRjBFRjNEOEUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODQ0RUZDN0FFRDM3MTFFMzgyMjlCNERBRjBFRjNEOEUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4NDRFRkM3N0VEMzcxMUUzODIyOUI0REFGMEVGM0Q4RSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4NDRFRkM3OEVEMzcxMUUzODIyOUI0REFGMEVGM0Q4RSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Piqgx40AAAbgSURBVHja7J17iFRV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);\n\tleft: 0px;\n\ttop: 0px;\n\twidth: 200px;\n\theight: 300px;\n\tmargin: 30px;\n\tmargin-left: 14px !important;\n}\n\n\n.xcloud-local-button {\n\tdisplay: block;\n\theight: 30px;\n\twidth: 100%;\n\tcursor: pointer;\n\n\tline-height: 30px;\n\ttext-align: center;\n\tcolor: black;\n\tfont-weight: bold;\n\n\tborder: 1px solid rgb(200,200,200);\n\tbox-shadow: inset 0px 2px 2px rgba(255,255,255,0.6), 0px 1px 2px rgba(0,0,0,0.22);\n\tbackground-color: rgb(242,242,242);\n}\n\n#xcloud-local-about {\n\tfloat: right;\n\tfont-weight: normal;\n\ttext-decoration: underline;\n\tcursor: pointer;\n}\n\n#xcloud-local-export {\n\t-moz-border-radius-topleft: 6px;\n\t-moz-border-radius-topright: 6px;\n\t-webkit-border-top-left-radius: 6px;\n\t-webkit-border-top-right-radius: 6px;\n\tborder-top-left-radius: 6px;\n\tborder-top-right-radius: 6px;\n}\n\n#xcloud-local-import {\n\t-moz-border-radius-bottomleft: 6px;\n\t-moz-border-radius-bottomright: 6px;\n\t-webkit-border-bottom-left-radius: 6px;\n\t-webkit-border-bottom-right-radius: 6px;\n\tborder-bottom-left-radius: 6px;\n\tborder-bottom-right-radius: 6px;\n}\n\n.xcloud-local-button:hover {\n\tbackground-color: rgb(254,254,254);\n}\n\n.xcloud-local-button:active {\n\tbackground-color: rgb(240,240,240);\n\tposition: relative;\n\ttop: 1px;\n\tbox-shadow: inset 0px 2px 1px rgba(0,0,0,0.18);\n}\n\n#xcloud-local-datastore {\n\tposition: absolute;\n\twidth: 180px;\n\tmargin-left: 10px !important;\n\ttop:180px;\n}\n\n#xcloud-panel-right * {\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n\t-o-box-sizing: border-box;\n\tbox-sizing: border-box;\n}\n\n#xcloud-panel-right {\n\tposition: absolute;\n\tbackground: white;\n\tright: 0px;\n\ttop: 0px;\n\twidth: 540px;\n\theight: 300px;\n\tmargin: 30px;\n\tborder-radius: 4px;\n\tbox-shadow: 0px 1px 4px rgba(0,0,0,0.42);\n\t-webkit-box-sizing: border-box;\n\tbox-sizing: border-box;\n\tfont-size: 14px;\n\tline-height: 22px;\n\toverflow: hidden;\n\ttext-align: center;\n}\n\n.xcloud-working-imagery {\n\twidth: 160px; height: 150px;\n\tposition: absolute;\n\tleft: 70px;\n\ttop: 50px;\n}\n\n#xkit-cp-tab-xcloud.selected {\n\tbackground: rgb(0,186,240) !important;\n\tcolor: white !important;\n\ttext-shadow: 0px -1px 0px rgba(0,0,0,0.62);\n}\n\n#xcloud-img-working {\n\tbackground: url('data:image/gif;base64,R0lGODlhoACWAPcAACDW/xe365WVlQ6GrDsvAFRFADAwMIWFhaGhoeq8ALmVAFhYWDo6Ov/ZAElJSXFxcdra2mFhYXV1deTk5O7u7ko7AGGVnB3Q/x4eHkx2fD4+PhUhIgM5SQZUbPfHAGxsbAsLDGSaolxcXPHx8VVVVSYmJuLi4vj4+MTExJycnMnJySxERx/T///RADQ0NAAAAP/QALy8vP/XAMqjAOvr62lpaeG1AI6OjlFRUcvLyw0UFRKXverq6ikpKX9/f5GRkYVrAP/TAKaGAMHBwdzc3P/VAHp6ekVFRXtjACwsLBUVFfv7+/b29qSkpN7e3k1NTSU5O1uLkwx4mrGxsd2yACPd/9SrALi4uBkZGcPDw/T09ARCVra2tkFBQSIiIoCAgPDCAK6MALq6upqlpuDg4MbGxhoVAPLy8uS6AJiYmJx+AKurq4qKipKSkhAQELOzsxnB9z9jZhSo162trejo6BzN/7CwsGpWAGRkZAEZIL+/v5ubm2dnZ5R3AKampqmpqYODg0Joa3d3d8CcAIiIiCQcANqvAPfJAHFbAC4lAPjNAAlphwYGBmOXn1aEizpaXfLGABax4hsqLPzLAFB8gXx8fEAzAP///1iIj7KQABIPABvG/AgJCWefpo5zAD1eYwAQFF5MAO2/ABAZGkpCQAIrNzRRVBOgzQdac5+CAAsJAP3OABKaxf/OAEZucxvJ/wEgKv/cAPnKAPjIACIzNgpvjggFAAQEBBvK/wVMYgUEAGmiqszMzAMDAv39/c3Nzebm5tfX19DQ0NXV1a+vr9TU1M7Ozq6urtPT09jY2NbW1tHR0dLS0tnZ2f/PABvL/8/Pz/7+/ufn5/z8/GihqWmhqTBLThvK/xckJtCnAFOAhRKPrPT3+CXj/zx0hgAIC0xRUlxVUx3N//zPAAdhfQI1Q9zk5B4uMO3y8g1+ofb4+ffRADMzMzYxMB3M/gADA/PEAFRaWv/mABCQthknKFxiY19bW0pPT/7SAIONjvnRAKq1thm+8zdVWDc3N////yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0FDMzU5RTVFRTMwMTFFMjlDQzREN0VDNzIxQUU5MkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0FDMzU5RTZFRTMwMTFFMjlDQzREN0VDNzIxQUU5MkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3QUMzNTlFM0VFMzAxMUUyOUNDNEQ3RUM3MjFBRTkyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3QUMzNTlFNEVFMzAxMUUyOUNDNEQ3RUM3MjFBRTkyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAUWAP8ALAAAAACgAJYAAAj/AP8JHEiwoMGDCBMqXMiwocOHECNKnAjxBA8nzd4gaMKxo8cmMYJBGDlSGgUaKGmcoMiypcuBFoHJnEmzZs01PnLqzFlDhM+fPv2VUOLmhdGjSJGCcMOUqZckPaL2YEDiw48pZVBo3cqVK4KdYHX6yWLCptmzaNPOZJKQhoOinBjJnUu3rt2kePPq3cu3r9+/ce8GFky4MF0DMRBeAcy4sePHkCNL5gtCxUFkhidTTsKgs+fPnZMQHU2adC/NqFPnHYLwz1wlGGJjkU27NoYueCLk3s27dw0Ba64oY3KpuPHjxkkqX04EBc4IQmfblj69uvXr2LPLNvplGkJggf34/5pGfjzy8tHMn1/Pvr379/DRp1dPf779+/jr69+v/4ZROwk1c9QP8RVo4IEIJqjggu49wF1CQxwlAYMUVmjhhRheQoJRIiT0hoT5ZSjiiCQyyIBRGiyhGIgltujii+8ZYFQJPKxo1IQw5qhji1qUYBQITtj4Ao47FmkkhSN4cZQxQj5w5JNQGkiBkv8h1AaLUWap5XEQKLGklQNuKaaWw8DFCBFgGpXGmGw+qQxcbkyAkINqtmnnjm/+KOdBH4R5558u5tmLEiYghMdRawCqKImCEoqQA0fpseikGNKAgVGOHgSpUZJS6imFPhoVpEG++POjMZ+mqqCppyFz0BLsnP+q6qwGLhDpQZaeRmiItPZqHJ0vIIArFpjS4eux6135oEFlzqgSstAW9yGHl532ggvyRetrDkcxcFAM3WarLa1OwOUFBQaBi+K40PZ4arpHPcEutF3cWpC6LzgwL7IRDAivUfru6yshEv6br8C++hGvwQEjPCsvRyXBsMPkwokuQfg2TPGnSb6Lcby8bgxovZzeC7LIqYqAqMkAo5wqsD+wfLDLngJS8Mct00ypADcPlDFyEBxgxAExmKCzmDzfKLPGFEiAFBYkcDHC0VH6pzTOM1+SjAs1WItUDz40Q/WRTht1w9LGReil10pFoMLYO8KMtrSAuQ03jCob1cTc0cz/wRgIeJBxd4u2Vol1w34//cTaeWFxwwmDj7gpI3rwPUVSSlwxxA84XJoXA0NEniGrnPDCNwpsv3AASTEIQAKVST0wtehIxvpCnHx3mdQTy+TAS+/N7YEH7EYhRjuDPHieqc8nX3JGqEdljszvv1DfTBmumwlCd8cnmPyMKxGEQPOXnJiUAMNQ7zs01nOBh5lHOBEtDX98QYIDODyBgwQ3hM7oXCUwiA+wdIlDJWUByVifAo3BwGVkxHy3m8KxivEBYu3FAAeYgIhM0C2D9Mts9rGa1zAwhN6p74TUA9YtABEyRRnBTH3BQgoypIKFFeQJiDqOurBgJvShcIG/C8YB/waDB8h9ShkQ/JEZNKGKvTjpQviqgUFs9wIUcCkunIkXBID4w180Y4jx4oGnTNCDpCABEoeARzYycQcz5IV7FTpGzwZSRlGp53m365OuUCAMLnIxGV3rlgYXRQEqGuUOQcAHDBbZgCKIIhWFwEsZ6CAAPuTGB1N4VoHS4C+CTElP99nQC0iggaOEzY9dxKEgW6ilDx6lAuNoQStmScsWxAINBMCc574mngKxoZMDkYYFsSAN5HwBU4F8AQlN2EUUEs8AgvuTa5BiBirIoJbYdGQFACOAApUtWAURBgjAR5+MkU4EyqgeKhe4h7r4Y3ZtchdSPNHISWTTns4ogiJCAf+YJsQnmVwI5zivpQXk5Op2ERjoLdIQjGaicBg42J24tDStoyQCjffEJy0hYQmLhuKjuXyaGN8T0ZJhjQFGPI4qrzW5ZarAoeqLAeNuZCdRHiUT9cxoPjfaUUtAIhZAHUcmImlK+EyuDHw7zi9/JALGaYB9MRVOH0+YDCPg5Q9s+uQrr6nTe9qgD6JIZC3R4EZyuod0lsEaCfIDMWuVwKYvwEMxgtgvN0QtnS9VXxIwJz8xoQ4phtBnV++ZU2wiIXrLiJGumlGQxI2SPYbEgYxMiVcXROwN6TshJw/ISh1t1iiw3OlgR7tIK9giUhMtjlaJWZB20jQ/Nove+44CAob/MqOU0VvD9U640hxuyYBGEQJXSUtcor6gm+05KGvFR8DjtLVbecNU0SqBOdvmNRhzUKiztgRBTaBBkcQl7ja5EzITWDAJWmhtc4+TxFEeASlH6B3JaNsGZqhPGYVDyuO0VMcXFECw4SXtHY4SAfc0i6DqfW2yMCcB4v3ACWKYbPRCct0rzJSgJMpBGwTxgA57+MMeVqgahhvgrsYCEeQ7TzACg96CUJe87JnAhZNQCTO5tKkRA2IwknmUp5Tgx0AOspCHTOQSaJcxNhBriU18WA6l9hLcQpEA/cQeFXJIhYgZyXuVYAQ9TDWmu1SNmK2p0Y0uuZZ9CBevIgSwKYOw/z0rxksl+HCLyxZjr4yYQgIfalUx6+XIfzFDAhhZ5jOjWc3syUIHXUzlKuPFcWHGwAtP04TM5lWvsdvDDzbN6U57+tOeToER+ssYehraxGEg8JMV3WZGvxnOFvzaYK66xS6C8Sh7wMhck5E+Xvf618AOdgqIdxQzFOLYyC7rC3wqy1PrNM2YqsQgz8Pqa13C1cd9cnFc2zjoSYiPeG0g9bwNiLmK+8v2Zaa60y2ML6buBYVAgg1EkYB623sQoahAYJ3dVX4+zX/IgQYAvUMQPaouPvlNij8m0NsZiSANJSTJ+pbKnXCrOyvr1MMQNk7xYoO1sAAGeaH5ncgCPPoXKv9m8cUGkl9/wocGlsWLAYoDCBhG7wl88AECwI1EygpDc2xwAGj8QfSiF90LtJm1fwcdcsKSvN950VhxiACnPbHcty+P+dd+5RcsGGABB4Dg6pTxADyQIjVIAK9on77kVAABDYMYL6fu873bBaMg+bWDlKw8c5rT9t2AV930InAOb6AGCCRm+9PlLq/j4NEopiNI3hH0i0lb2+83eoADYqN0zPkhffYARQB2MIDSm/70qC99LpDy32Yrnu3ZaKId2Wuvq/9HQZvq+yUEYco17AEQnePLF/YMqVNUAQDIT77yl498VBT7u2t/PclNXieV1l4gk0/QZLvAdRQxgCh+ofD/MiA1ABZc4/zoT7/661CHLRwl7YscufQNnQlVW19veMe6lGyH0uIA1y9L8R/TIwyQggoXsH4ImH6rZxR9EAvz93qiUFY0chwGFzOSp38F0jGXV0CMUQKTJVW/ACkccIAJmIDk8H6JJ38PGF5yNxzdpzr5d3sIAgznZRzRtRcDxQ6ixAVQpTKwwH4liIAD8Hwit4JndmK6IIPbNkf/kH0HImPFYxwDZDZrUIVWGBzTYgCBBIJOI3pAGITpJwffYFFIIARk1nQqaITZJASNpjDUcoFKaCBQuIGx9QLFwB7JMCNlw4NetFRyQIJgmH6wgBeaEAphAH1KpoakNQgElDEx//gCxOA9a6N7xwR5eDgjVgOC4/MO82B+gZh+UrAXZlAAZpiIithVhmAtjVccwrBotgeJkhiFmFdFl6hMKRAXfMgMdlAU6YB8r/CJQLiAOGiITBd/p5hNVMBEG6g1bvWIkTiDkyiFS1KLXvAHxHIM6YYCl7IIgAiM7JcO5VAKgyiKiKAAaaiICSCBKTWHXqAir/iMTxiNs8gL1DgFe1Vu6iQjI+iNCMgPUlAKfUEAH2eK6JgI26VaylMj7xiLG8ht9LgezCBd9UICu6UMkOKFz8CPX0iC21AO70AZoTADiuSAxmiERIUBxYSQxQKHsAiNsngJbkiLEIkpIdgL7KBOw/9gQKfQjRqZkeKAfKyQC6DQFwXgCWqQDQQpfWBgkHZHe3bHkvAoh/IIk9M4k4PCC3QmPb9TibXgiz2ZgAFQC+NIGftmhEuJKcFgHFpgPpUBlQype01QlSmnTCjQZwjQa5uVCzz5lULYAXnAF4WQZNGneGfZlMaBVm7pkg1pLQ85lyDABcpySsXghrAABxv5i3y5kQAQAOA4lHnReud4aoXpBmJzmB6DfRgYH3Ooe3oglwH3I3awBqeBA5llYUYRCXuZmWApBRzgmUgRBik4mGdmA8pImmrJljmQmPH4ks/VmEAzF3bQmjY5gNpYZ+WnftdQB9iZndpZBxmZndipneH/WQec6X4fuWyuJ33EiZbHeZr/sFJRWSCrmTaMGWNrQwwqcClYIH7m0wFeqZvhuZ11UAVDeBRIKZz8ZlrsaZq3k5wCASup+XJT2Zz2qTfGgGd3+TuFUwo+CaABOp4B4JvC9YAz0GNn0J63Y3UQGofyOaGu6XhUcpfvJXjtxnu3g5se+qHrp50eGVwkKX31d5DOg2fLcwL9FZ+qOaED5ZyON1kPJkoRgJdHwQqemKM6mn4dcBSpUIShOVixAG3KRBwqqUzAABNmMgdvmRxw8TbsgVs+MAF61AVTxQVzwY0daqU6WgXCiHhdumRAYKLGUXcYED7/QAFnmqZTt6btoUoS/0AGsYUBCuQ5W5CbeIqd3ZClRsGnCHpqAyakBxVAAyEoLbmcG6g7o3oeHxSltxhBJjSjeWCZlaqjkTAPAOmjfRpgsUB9y8hBp+ECBBGR1oKkEvqSzTBQWOVo+YJdcOFDEABcO3mnsXoNm8CbY/ibwUlyTLmrNiQQYlBnLJqkLzmHBMIeq4oFWeE5RnA9QnQUvRitm+CTAzCWSSGSm2poEWgt2GIcURZXBHE5Efoe86ladXQA7eGvjHCXrIJODEQMc+GflXp8yBcJ5hk9RHirt6qgTkafVyMQn3WqLRqudUQkczkkECBKDKA+VMKh0LqyCHh8/BAAckB6i9ABHbAFPf96OwzwAGtgUwSQnorHiPa3hGZDECLksaoZKrqnVQVWodcCAXRirj34I7BapVTbjfxwCgMws+UAC76pFO2AB23Ag1sUa/AnfV+KFE80i8IyEDb6rfExWUk7WUsLWT+yOYiya3WICnpLs3vLt36bC1x7no2DGwKQi+nWZ0YxCNfKb/5Wff53fQZntPGBW7pXPqfBfe3hSoBAp6dRX9Vjm6mBBRpgFVK1Z+gGPYUADz7Ldtkqk8Uxo72AVK8YLGdwEiNgu7ibu7ZLuU75Trpru7cGOp7zAaY7OY/hBm8lCCAxDL6GkwtUtGWrnspod7brBFRCmjABu8oEFVLRvd7bvbv/NIGv+yPc+72igRRzYD602UB+ILo+4BuWVAPxyxs6Nwfr07yXtkBOoAISpgpnaLH1mk9BSr7da6LB1F6TsSvj6xi6UTzn9lLN2wzMO4AiwW74S535G0T2lQJ4YEiIVJKK96d+MXOh6m2okQU2eLx6tJ/o5rwwBVUwJcFTcACvcxf/K30d5RdH8KuxdjvY8MNAHMRArF2wgXUJR1uSIMSjIGunQQwY/MAZ/MLVw2vOUQMuYHPztLgAjIyy58NBrFB88KtJ8Qm7UMZmfMZlHAU6gClsAAFx6bhHjClRgMbUsMR/d1wmoAwVLMET7Gt+rMd7HMgJdAVfcARhphc9uwor/5gKSJEB1HDGtGBK/TrGj0zHkDwj0MCK1iIIKdw4jYDGgRB1YcFhlWAEpnzKqJzKqax1AEivK6ir9NAJaLwBKzMQm3gUj2DJZ6wNVGaos2m7cCW4LwAFdLwCfvY3OZtQWWyWXRwIdEzLJiUQt2YUuazLZRwH+ldSIBAbRuZkY0A6L+AKlWzGpjAK0HzMSuEFo5sCIbEGYRZaRqgG0SPLaLzGkEcQU4jL1nzNPdZLu7cXYzAf34wp9IzGFnDONqkBRjd0DN3QDIAHhNAEZcDHRDDN8BZWaih3ZGzQ9myHBcc21WzNUJAUXSAAZ7CqMkcB9oFb3+AIltwIdgwwXgTFFv/swjXdbhOcV/93O1agxQHspRgLAnPM0V8yuy+wAvvcCfTQODgwUOYMxPswH+aQD/3lzHR80AdUazB8cVtN05f2QHihAD5NciI8zC8d08XAkkaB1PuMDcpEbEqhA3KtA/EADvfA0vp81R09IBYnxesEAQJwyKowooqYrY6s10WNmkjB1rpsAWuMnxHQw48RB2d9I4OBjeq0TjGcAzt9SFz6egM8CiFgyY5AF8ug1ke9z1FwGmFjAnXJAID2F4dN1JD4YtcSxX5tPWvAyrR1oIqoq7Sgy5gwGHfHtknB2C8dGP5gBJ+nizeABzjAAENhG3ahA6ON2O/AUCU1Sn2N283/RAgXhoKnmIxIYdVoPNwradyLndQjTVuiWxVskAYpIN9NMAX2vQfgTM2Nbc89wEf9dQMNpdnWw27BrBQ3/IBImBSzbcbonaL4zDbITdox/WfSARXhHeGz3C3JMAVro5U2DchzNQRT4AfPTWp4Eb1mqWy05dK77NRkwFzrndSYgNCOMQrivM+ugLbAIEIOwG68sBUIwAaCsABH4ALd/G7Te9FqF896gQ3XncaBgTvME+NJHQKPQONdZw0WUOW7cA655QTJtBELEN09EN58EQqdmqmfvcVdFVLL1ripzeBRbnX/sAzaheH7rA3GDIArQAlP/tJRQAmu0N4A01C5p72M/2EGqZCO1pK6IEyiv0lWjSzn6S0Q0tC/wc3lu7zUAPjUQjzEe61fENa/jmEJVCAPTcaAa654jetdsVDW7yDaUF7p/7AEcJXpmr7L1oDlqtHfGSHZhPiZsnBLynZRj2625G0UocBVrVvNDU4j2GbW1ZDrdKwNpnAOWKwZgtAcFjQ0YCHfgq2pYPoChK2InmCtijzAtyPLz84WYhwx1C7jgfAIK0AL2CDXnX4O1oDNPYYCedMDzEDRJGG8tqpPOYyebH5mbm7sjKSr7+Dnq/2RKVIQS4DXn74BGJ/x9KDxHM/xtGAKcUAJ2uAImBAFJn/yKI/yZ2wN8AUXNaBrWxQDx/9wxIXgyrGAsS+AU8e+5Kvb8zsPtGpujOtpFM7s2K3WWOhMiD+8AqbQ9E7v9J/gCvM+9f3grQfEE5IF7ATQ02k07GXNbKqLUR7Q9WNf9rNA9mhv9mpP9ihmoIqg9qne5xlgzx/wKgSf9MKM90iRCJZAAH7v99NbCH3/94Rf+IZ/+IhP+EmO+BckDLiS33of+ZI/+VH3HfZ9hZcfm5pP4mzQ+Z7/+Z7/vkUu2JRf+nqPvH7wEhGxBMAADTOMP0cA+7IP+wZQZEIGG7jPQ6Z/+m9VuEQwAqof/C1xEhNAE9h1DMif/Mq//Mzf/MlPw0bODgYw/dRf/dYPFdJ//bhxAG0d0P3ef5fCH/7iP/7kX/7mf/7on/7qv/7s3/4UERAAIfkEBRYA/wAsJgAnABMAEAAACHoAp/kREQGQin8IEypM+OaFQ4ddmpxYuBDBw4sahlBMSAHHxYtGmGz8twQBA04fX2hgNhLhrzRHGF1UwqVlQhQfQFz8Y/OmgYt6eiLk8bNXLwwmhP6z+PCJL6FMkuxUmuYiDqVnMDwsMYKqUZXRlP5j46ZEFrFDJ/4LCAAh+QQFFgD/ACwgABsAIwAhAAAI/wD/TVNxRcwQIjQEKlzIsKHDESReSJSIAYePMtMcatSIYKLHiQzaANtIUmATj26SGFjphqIEEyU1UuiiJMIbCFpO6HTCRQSjF0oO5IzJkAkZkswiSGT3hqjThVO8SIwA86lTJ0coErPqVEtEiRJ0ci3J5OsLBzzGku0y0QAEtRqjRZtQYmKJYHA3lgFhl0hejh6TTIi555/hw4gRy/U58YnYxImfQJ5smIwSj4Aoa95sOA3KLJxDJ/blIPBj0ZObIDbWcuIP1Ju5IBbkEQMF2Jr9GqYg1bVc3JMzdu7V9jTw4AY8xjiuWS4xjx+Yb57GoLh0zX8munl7HfnEpt1H+x264Tr8ZN5gzUP29SC9+sQqfh54D9kfWvqJKWQMCAAh+QQFFgD/ACwZABIANgArAAAI/wC1tOmioaDBgwgP4ojwII0Kaf8iSpxIsSLFBy8yatzIsSNHDCLWjLBIkqQIjyhTfiTEo6TLiL8cuAFBs2ZNlSpL7Hn5kkiyZkCDAi1DtKhRNgZUOiDCs6nTiNPeyESJZcrTqy996XGQMg3WryR9rUmCEhDYsxTPGAHhkQ3atzAZeEQA9y0FPB6H1H2bgu1GDEz3nj3mhqOGE4LPZlHC8UtixVg2glDxGKwevxkZIK6Mdc2tjW04fz3wd6Top75wbDxw+iqPHhqV0Gn9VMznjI5pO8WYEcsE3U0pYNDoFjjPJhp7aDGeVYPGNcxfXtHoIPrLIxlBJLNecjpu7mH9ZVb2Bd5iCo3FylcUnrG4+om8HUR7P9EYoxey59P/t0TuCy77SeQDbtME+A8zvbwgn4EnuPCCcgxipIQTDPqREWUGKsPJC1kwGM1wy3joAA7kMcgDE/8EBAAh+QQFFgD/ACwmACcAEwAQAAAIPAAvCRz4r6DBgwYHKiSIMKGvhQwb/ptGEWJEhNEyWryIcSPHjh4lOgwpkmRJkxJRplR5kCXIjydhxvwXEAAh+QQFFgD/ACwgABsAIwAhAAAIhAD/XRpIsKDAgwgT/lvIsGHBhwYdSmxIUSDEixUzarzIMaLGih1Dftzo0SHGkSgznkzJcuHKlilfwhwpcybJmjZN4szpcidPiz4Vxgxa8iPRnEdnivxpMCnKpk6NMoxKcyrVp1exFmVq9SFXlV6/UoQoFuRWsWHL6rykdizBtm7Zwu0aEAA7');\n}\n\n#xcloud-img-working-fetch {\n\tbackground: url('data:image/gif;base64,R0lGODlhoACWAPcAACDW/xe365WVlQ6GrDsvAFRFADAwMIWFhaGhoeq8ALmVAFhYWDo6Ov/ZAElJSXFxcdra2mFhYXV1deTk5O7u7ko7AGGVnB3Q/x4eHkx2fD4+PhUhIgM5SQZUbPfHAGxsbAsLDGSaolxcXPHx8VVVVSYmJuLi4vj4+MTExJycnMnJySxERx/T///RADQ0NAAAAP/QALy8vP/XAMqjAOvr62lpaeG1AI6OjlFRUcvLyw0UFRKXverq6ikpKX9/f5GRkYVrAP/TAKaGAMHBwdzc3P/VAHp6ekVFRXtjACwsLBUVFfb29vv7+6SkpN7e3k1NTSU5O1uLkwx4mrGxsd2yACPd/9SrALi4uBkZGcPDw/T09ARCVra2tkFBQSIiIoCAgPDCAK6MALq6upqlpuDg4MbGxhoVAPLy8uS6AJiYmJx+AKurq4qKipKSkhAQELOzsxnB9z9jZhSo162trejo6BzN/7CwsGpWAGRkZAEZIL+/v5ubm2dnZ5R3AKampqmpqYODg0Joa3d3d8CcAIiIiCQcANqvAPfJAHFbAC4lAPjNAAlphwYGBmOXn1aEizpaXfLGABax4hsqLPzLAFB8gXx8fEAzAP///1iIj7KQABIPABvG/AgJCWefpo5zAD1eYwAQFF5MAO2/ABAZGkpCQAIrNzRRVBOgzQdac5+CAAsJAP3OABKaxf/OAEZucxvJ/wEgKv/cAPnKAPjIACIzNgpvjggFAAQEBBvK/wVMYgUEAGmiqszMzAMDAv39/c3Nzebm5tfX19DQ0NXV1a+vr9TU1M7Ozq6urtPT09jY2NbW1tHR0dLS0tnZ2f/PABvL/8/Pz/7+/ufn5/z8/GihqWmhqTBLThvK/xckJtCnAFOAhRKPrPT3+CXj/0xRUlxVUx3N/xknKAdhfQI1Qx4uMKq1tg1+ofb4+ffRADMzMzYxMAAICwADA/PEAIONjv/mABCQtvzPAFxiYx3M/lRaWu3y8jx0hl9bW0pPT/7SANzk5PnRABm+8zdVWDc3N////yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0FDMzU5RTlFRTMwMTFFMjlDQzREN0VDNzIxQUU5MkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0FDMzU5RUFFRTMwMTFFMjlDQzREN0VDNzIxQUU5MkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3QUMzNTlFN0VFMzAxMUUyOUNDNEQ3RUM3MjFBRTkyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3QUMzNTlFOEVFMzAxMUUyOUNDNEQ3RUM3MjFBRTkyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQz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');\n}\n","title":"XCloud","description":"Sync XKit data on clouds, or back up locally","developer":"new-xkit","version":"1.1.3","details":"XCloud stores your XKit configuration on New XKit servers so you can back up your data and synchronize it with other computers and browsers easily.

      You can also export your data to a file to import elsewhere.","frame":"false","beta":"false","slow":"false"} \ No newline at end of file diff --git a/Extensions/dist/xinbox.json b/Extensions/dist/xinbox.json new file mode 100644 index 000000000..b3a207ea1 --- /dev/null +++ b/Extensions/dist/xinbox.json @@ -0,0 +1 @@ +{"id":"xinbox","script":"//* TITLE XInbox **//\n//* VERSION 1.9.17 **//\n//* DESCRIPTION Enhances your Inbox experience **//\n//* DEVELOPER new-xkit **//\n//* DETAILS XInbox allows you to tag posts before posting them, and see all your messages at once, and lets you delete multiple messages at once using the Mass Editor mode. To use this mode, go to your Inbox and click on the Mass Editor Mode button on your sidebar, click on the messages you want to delete then click the Delete Messages button. **//\n//* FRAME false **//\n//* BETA false **//\n\nXKit.extensions.xinbox = new Object({\n\n\trunning: false,\n\n\tpreferences: {\n\t\t\"default_inbox\": {\n\t\t\ttext: \"Default inbox\",\n\t\t\ttype: \"blog\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\"\n\t\t},\n\t\t\"sep-1\": {\n\t\t\ttext: \"Notifications\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"show_new_notification\": {\n\t\t\ttext: \"Show an XKit Notification when I receive new asks/fan mail\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"sep0\": {\n\t\t\ttext: \"Tagging while publishing\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"show_tag_box\": {\n\t\t\ttext: \"Show the tag input box on asks\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"tag_usernames\": {\n\t\t\ttext: \"Tag published asks with their usernames\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"tag_usernames_replace_hyphens\": {\n\t\t\ttext: \"Replace hyphens in usernames with spaces when tagging\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"anon_tag\": {\n\t\t\ttext: \"Tag to use when the asker is anonymous\",\n\t\t\tdefault: \"Anonymous\",\n\t\t\tvalue: \"Anonymous\",\n\t\t\ttype: \"text\"\n\t\t},\n\t\t\"tag_custom\": {\n\t\t\ttext: \"Tag published asks with the custom tag below:\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"custom_tag\": {\n\t\t\ttext: \"Custom tag for asks\",\n\t\t\tdefault: \"\",\n\t\t\tvalue: \"\",\n\t\t\ttype: \"text\"\n\t\t},\n\t\t\"sep1a\": {\n\t\t\ttext: \"Appearance options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"show_reply_button\": {\n\t\t\ttext: \"Show Reply button on Private Answers I receive\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"bigger_answer_boxes\": {\n\t\t\ttext: \"Make the answer box taller when I'm typing a reply to an ask\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"sep1\": {\n\t\t\ttext: \"Inbox Tools\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"inbox_search\": {\n\t\t\ttext: \"Enable Inbox Search\",\n\t\t\tdefault: true,\n\t\t\tvalue: true,\n\t\t\texperimental: true\n\t\t},\n\t\t\"mass_editor\": {\n\t\t\ttext: \"Enable Mass Inbox Editor\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"check_for_blanks\": {\n\t\t\ttext: \"Confirm my action when I'm about to publish a blank ask\",\n\t\t\tdefault: true,\n\t\t\tvalue: true\n\t\t},\n\t\t\"sep2\": {\n\t\t\ttext: \"Fan Mail options\",\n\t\t\ttype: \"separator\"\n\t\t},\n\t\t\"auto_expand_fan_mail\": {\n\t\t\ttext: \"Automatically expand Fan Mail without having to click on Read More\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"slim_fan_mail\": {\n\t\t\ttext: \"Slim Incoming Fan Mail\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"slim_outgoing_fan_mail\": {\n\t\t\ttext: \"Slim Fan Mail when I'm writing one\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t},\n\t\t\"hide_fan_mail_button\": {\n\t\t\ttext: \"Hide 'Send Fan Mail' button\",\n\t\t\tdefault: false,\n\t\t\tvalue: false\n\t\t}\n\t},\n\n\tframe_run: function() {\n\n\t\tXKit.extensions.xinbox.slimify_outgoing();\n\n\t},\n\n\tslimify_outgoing: function() {\n\n\t\tif (XKit.extensions.xinbox.preferences.slim_outgoing_fan_mail.value === true) {\n\n\t\t\tXKit.tools.add_css(\"#fan_mail { background-image: url('https://new-xkit.github.io/XKit/Extensions/dist/page/images/paper.png'); }#fan_mail #message{ overflow-y: scroll; font-size: 15px !important; line-height: 22px !important; }\", \"xinbox_slim_outgoing_fan_mail\");\n\n\t\t\t$(document).on('click', '#paper_white-lined-1', function() {\n\n\t\t\t\t$(\"#fan_mail\").css(\"background-image\", \"url('https://new-xkit.github.io/XKit/Extensions/dist/page/images/paper.png')\");\n\n\t\t\t});\n\n\t\t}\n\n\t},\n\n\tnotification_check_interval: 0,\n\tlast_check: 0,\n\n\tcheck_for_new: function(first) {\n\n\t\tif ($(\"#inbox_button\").length <= 0) { return; }\n\n\t\tvar m_value = parseInt($(\"#inbox_button\").find(\".tab_notice_value\").html());\n\n\t\tif (first === true) {\n\t\t\tXKit.extensions.xinbox.last_check = m_value;\n\t\t\treturn;\n\t\t}\n\n\t\tif (m_value > 0 && XKit.extensions.xinbox.last_check !== m_value) {\n\n\t\t\tXKit.notifications.add(\"You have \" + m_value + \" new ask/fan mail in your Inbox.\", \"mail\", false, function() { window.open(\"http://www.tumblr.com/inbox\"); });\n\t\t\tXKit.extensions.xinbox.last_check = m_value;\n\n\t\t}\n\n\t},\n\n\trun: function() {\n\t\tthis.running = true;\n\t\tXKit.tools.init_css(\"xinbox\");\n\n\t\tXKit.extensions.xinbox.slimify_outgoing();\n\n\t\tif (this.preferences.default_inbox.value !== \"\") {\n\t\t\t$(\"#inbox_button > a\").attr(\"href\", \"https://www.tumblr.com/blog/\" + this.preferences.default_inbox.value + \"/messages\");\n\t\t}\n\n\t\tif (XKit.extensions.xinbox.preferences.show_new_notification.value === true) {\n\t\t\tXKit.extensions.xinbox.notification_check_interval = setInterval(function() { XKit.extensions.xinbox.check_for_new(); }, 2000);\n\t\t\tXKit.extensions.xinbox.check_for_new(true);\n\t\t}\n\n\t\tif (XKit.interface.where().inbox !== true) {\n\t\t\treturn;\n\t\t}\n\n\n\t\tif (XKit.extensions.xinbox.preferences.show_reply_button.value === true) {\n\t\t\t$(document).on('click', '.xkit-xinbox-pa-reply', XKit.extensions.xinbox.on_click_to_pa_reply);\n\t\t\tXKit.interface.create_control_button(\"xkit-xinbox-pa-reply\", \"\", \"Reply to Answer\", \"\");\n\t\t\tXKit.tools.add_css(\".xkit-xinbox-pa-reply::before { content: \\\"\\\\EA96\\\"; font-family: \\\"tumblr-icons\\\", Blank; font-weight: normal; }\", \"xinbox_private_reply_button\");\n\t\t\tXKit.post_listener.add(\"xinbox\", XKit.extensions.xinbox.show_reply_button);\n\t\t\tXKit.extensions.xinbox.show_reply_button();\n\t\t}\n\n\t\tif (XKit.extensions.xinbox.preferences.show_tag_box.value === true || XKit.extensions.xinbox.preferences.tag_usernames.value === true || XKit.extensions.xinbox.preferences.tag_custom.value === true) {\n\t\t\tXKit.post_listener.add(\"xinbox\", XKit.extensions.xinbox.init_tags);\n\t\t\tXKit.extensions.xinbox.init_tags();\n\t\t}\n\n\t\tif (XKit.extensions.xinbox.preferences.hide_fan_mail_button.value === true && $(\"#right_column > .send_fan_mail\").length > 0) {\n\t\t\tXKit.tools.add_css(\"#right_column > .send_fan_mail { display: none; } #right_column .controls_section { margin-top: 0 !important; margin-bottom: 18px; } \", \"xkit_inbox_hide_fan_mail_button\");\n\t\t}\n\n\t\tif (XKit.extensions.xinbox.preferences.slim_fan_mail.value === true) {\n\t\t\tvar m_css = \" .fan_mail .message { \" +\n\t\t\t\t\t\t\" background: white !important; \" +\n\t\t\t\t\t\t\" padding-left: 20px !important; padding-right: 20px !important; \" +\n\t\t\t\t\t\t\" padding-bottom: 37px !important; padding-top: 20px !important; \" +\n\t\t\t\t\t\t\" border-radius: 6px !important; \" +\n\t\t\t\t\t\t\" font: normal 14px/1.4 \\\"Helvetica Neue\\\",\\\"HelveticaNeue\\\",Helvetica,Arial,sans-serif !important; \" +\n\t\t\t\t\t\" }\" +\n\t\t\t\t\t\" .post.fan_mail.lined-white .before { display: none; } \" +\n\t\t\t\t\t\" #posts .post.fan_mail .controls { \" +\n\t\t\t\t\t\t\" left: 0px !important; right: 20px !important; \" +\n\t\t\t\t\t\t\" color: #818b98 !important; \" +\n\t\t\t\t\t\"}\" +\n\t\t\t\t\t\" .xkit-paper-cut-thingy {\" +\n\t\t\t\t\t\t\" display: none;\" +\n\t\t\t\t\t\" }\" +\n\t\t\t\t\t\" #posts .post.fan_mail .controls .controls_link { \" +\n\t\t\t\t\t\t\" color: #818b98 !important; \" +\n\t\t\t\t\t\" }\";\n\t\t\tXKit.tools.add_css(m_css, \"xkit_inbox_slim_fan_mail\");\n\t\t}\n\n\t\tif (this.preferences.mass_editor.value || this.preferences.inbox_search.value) {\n\t\t\t$(\".controls_section:first\").after('');\n\t\t}\n\n\t\tif (XKit.extensions.xinbox.preferences.mass_editor.value === true) {\n\t\t\tXKit.extensions.xinbox.init_mass_editor();\n\t\t}\n\n\t\tif (XKit.extensions.xinbox.preferences.auto_expand_fan_mail.value === true) {\n\t\t\tvar au_ex_css = \".post.fan_mail .read_more, .post.fan_mail .message_body_truncated { display: none; } .post.fan_mail .message_body { display: block !important; }\";\n\t\t\tXKit.tools.add_css(au_ex_css, \"xkit_inbox_auto_expand\");\n\t\t}\n\n\t\tif (XKit.extensions.xinbox.preferences.inbox_search.value === true) {\n\t\t\tXKit.extensions.xinbox.init_inbox_search();\n\t\t}\n\n\t},\n\n\tinbox_search_term: \"\",\n\n\ton_click_to_pa_reply: function(e) {\n\n\t\tvar m_post_id = $(e.target).attr('data-post-id');\n\n\t\tXKit.tools.add_function(function() {\n\n\t\t\tvar e_target = jQuery(\"#xinbox-reply-button-\" + add_tag);\n\n\t\t\ttry {\n\t\t\t\tTumblr.Events.trigger(\"ask:form:open\", {\n\t\t\t\t\trecipient: e_target.attr(\"data-tumblelog-name\")\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(\"Error: \" + err.message);\n\t\t\t}\n\n\t\t}, true, m_post_id);\n\n\t},\n\n\tshow_reply_button: function() {\n\n\t\t$(\".post.is_private_answer\").not(\".xinbox-done-reply-button-on-pas\").each(function() {\n\n\t\t\t$(this).addClass(\"xinbox-done-reply-button-on-pas\");\n\n\t\t\ttry {\n\n\t\t\t\tvar tumblelog_name = \"\";\n\t\t\t\ttry {\n\t\t\t\t\ttumblelog_name = JSON.parse($(this).find(\".post_avatar_link\").attr('data-tumblelog-popover')).name;\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// Probably own ask.\n\t\t\t\t\ttumblelog_name = JSON.parse($(this).attr('data-json'))['tumblelog-name'];\n\t\t\t\t}\n\n\t\t\t\tif (tumblelog_name !== \"\" && typeof tumblelog_name !== \"undefined\") {\n\t\t\t\t\tXKit.interface.add_control_button($(this), \"xkit-xinbox-pa-reply\", \" data-tumblelog-name=\\\"\" + tumblelog_name + \"\\\" data-tumblelog-name=\\\"\" + tumblelog_name + \"\\\" id=\\\"xinbox-reply-button-\" + $(this).attr('data-post-id') + \"\\\"\");\n\t\t\t\t}\n\n\t\t\t} catch (e) {\n\n\n\t\t\t}\n\n\t\t});\n\n\t},\n\n\tinit_inbox_search: function() {\n\n\t\tvar m_html = '
    25. ' +\n\t\t\t\t'' +\n\t\t\t\t\t'
      Search Inbox..
      ' +\n\t\t\t\t'
      ' +\n\t\t\t\t'
    26. ';\n\t\t$(\"#xinbox_sidebar\").append(m_html);\n\n\t\tvar x_html = \"
      \";\n\t\t$(\"#xinbox_sidebar\").before(x_html);\n\n\t\t$(\"#xinbox_search_button\").click(function() {\n\n\t\t\tXKit.extensions.xinbox.inbox_search_start();\n\n\t\t\treturn false;\n\t\t});\n\n\t\t$(\"#xinbox-search-box-input\").keyup(function() {\n\n\t\t\tvar m_value = $(this).val().toLowerCase();\n\t\t\tm_value = $.trim(m_value);\n\n\t\t\tXKit.extensions.xinbox.inbox_search_term = m_value;\n\t\t\tXKit.extensions.xinbox.search_do_posts();\n\n\t\t});\n\n\t},\n\n\tsearch_do_posts: function() {\n\t\tvar m_value = XKit.extensions.xinbox.inbox_search_term;\n\n\t\tfunction get_post_body(post) {\n\t\t\treturn post.find(\".post_body\").not(\".post_ask_answer_form_container\");\n\t\t}\n\n\t\tvar posts = $(\".post\");\n\n\t\tif (m_value === \"\" || m_value.length <= 1) {\n\t\t\t// Show all\n\n\t\t\tget_post_body(posts).find(\"mark\").contents().unwrap();\n\n\t\t\tif ($(\"#xinbox-search-bar\").length > 0) {\n\t\t\t\t$(\"#xinbox-search-bar\").slideUp('slow', function() { $(this).remove(); });\n\t\t\t}\n\n\t\t\tposts.parent().removeClass(\"xkit-inbox-found\");\n\t\t\tposts.parent().slideDown('fast');\n\n\t\t\tXKit.tools.add_function(function() {\n\t\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t\t}, true, \"\");\n\t\t\treturn;\n\t\t}\n\n\t\tvar i_html = \"Searching for \\\"\" + m_value + \"\\\"
      0 results found so far, inspected 0 posts.
      Scroll down to load more asks and results.\";\n\n\t\tif ($(\"#xinbox-search-bar\").length > 0) {\n\t\t\t$(\"#xinbox-search-bar\").html(i_html);\n\t\t} else {\n\t\t\t$(\"#posts\").before(\"
      \" + i_html + \"
      \");\n\t\t}\n\n\t\tposts.each(function() {\n\t\t\tvar post = $(this);\n\n\t\t\tvar username = post.attr('data-tumblelog-name');\n\t\t\tvar hide_this = false;\n\n\t\t\tvar to_search_in = post.find(\".post_body\").text().toLowerCase();\n\n\t\t\tif (typeof username !== \"undefined\") {\n\t\t\t\tto_search_in = to_search_in + username;\n\t\t\t}\n\n\t\t\tif (to_search_in.indexOf(m_value) === -1) {\n\t\t\t\thide_this = true;\n\t\t\t}\n\n\t\t\tvar post_body = get_post_body(post);\n\n\t\t\tif (!hide_this) {\n\t\t\t\tpost.parent().slideDown('fast');\n\t\t\t\tpost.parent().addClass(\"xkit-inbox-found\");\n\n\t\t\t\tpost_body.find(\"mark\").contents().unwrap();\n\t\t\t\tvar m_html = XKit.extensions.xinbox.return_highlighted_html(post_body.html(), m_value);\n\t\t\t\tpost_body.html(m_html);\n\n\t\t\t} else {\n\t\t\t\tpost.parent().slideUp('fast');\n\t\t\t\tpost.parent().removeClass(\"xkit-inbox-found\");\n\t\t\t\tpost_body.find(\"mark\").contents().unwrap();\n\t\t\t}\n\n\t\t});\n\n\t\t$(\"#xinbox-search-found-count\").html($(\".xkit-inbox-found\").length);\n\t\t$(\"#xinbox-search-search-count\").html($(\".post\").length);\n\n\t\tXKit.tools.add_function(function() {\n\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t}, true, \"\");\n\t},\n\n\tremove_wraps: function(src_str) {\n\n\t\tsrc_str = XKit.tools.replace_all(src_str, \"\", \"\");\n\t\tsrc_str = XKit.tools.replace_all(src_str, \"<\\/wrap>\", \"\");\n\n\t\treturn src_str;\n\n\t},\n\n\treturn_highlighted_html: function(src_str, term) {\n\n\t\t/* from http://jsfiddle.net/UPs3V/ */\n\n\t\tterm = term.replace(/(\\s+)/, \"(<[^>]+>)*$1(<[^>]+>)*\");\n\t\tvar pattern = new RegExp(\"(\" + term + \")\", \"i\");\n\n\t\tsrc_str = src_str.replace(pattern, \"$1\");\n\t\tsrc_str = src_str.replace(/([^<>]*)((<[^>]+>)+)([^<>]*<\\/mark>)/, \"$1$2$4\");\n\n\t\treturn src_str;\n\n\t},\n\n\tinbox_search_start: function() {\n\n\t\t$(\"#xinbox_search_button\").toggleClass(\"xkit-xinbox-in-search\");\n\t\tvar right_column_children = $(\"#right_column\").children().not(\"#xinbox_sidebar\").not(\"#xinbox-search-box\").not(\"script\");\n\n\t\tif ($(\"#xinbox_search_button\").hasClass(\"xkit-xinbox-in-search\")) {\n\n\t\t\t$(\"#xinbox_search_li\").addClass(\"selected\");\n\t\t\tXKit.extensions.xinbox.inbox_search_term = \"\";\n\n\t\t\t$(\".post\").parent().addClass(\"xkit-inbox-found\");\n\t\t\tXKit.tools.add_css(\".post_container { display: none; } .post_container.xkit-inbox-found { display: block; } \", \"xkit-inbox-search\");\n\t\t\tXKit.post_listener.add(\"xinbox\", XKit.extensions.xinbox.search_do_posts);\n\n\t\t\t$(\"#xinbox_sidebar\").addClass(\"xkit_others_hidden\");\n\t\t\tright_column_children.slideUp('slow', function() {\n\t\t\t\t$(this).addClass(\"xinbox-search-hidden-box\");\n\t\t\t});\n\t\t\t$(\"#xinbox-search-box\").slideDown('slow');\n\n\t\t} else {\n\n\t\t\t$(\"#xinbox_search_li\").removeClass(\"selected\");\n\t\t\tXKit.extensions.xinbox.inbox_search_term = \"\";\n\n\t\t\tXKit.extensions.xinbox.reset_search();\n\n\t\t\t$(\"#xinbox_sidebar\").removeClass(\"xkit_others_hidden\");\n\t\t\tright_column_children.slideDown('slow', function() {\n\t\t\t\t$(this).removeClass(\"xinbox-search-hidden-box\");\n\t\t\t});\n\t\t\t$(\"#xinbox-search-box\").slideUp('slow');\n\n\t\t}\n\t},\n\n\treset_search: function() {\n\n\t\t$(\".post\").parent().removeClass(\"xkit-inbox-found\");\n\t\tXKit.tools.remove_css(\"xkit-inbox-search\");\n\t\tXKit.post_listener.remove(\"xinbox\", XKit.extensions.xinbox.search_do_posts);\n\n\t\tif ($(\"#xinbox-search-bar\").length > 0) {\n\t\t\t$(\"#xinbox-search-bar\").slideUp('slow', function() { $(this).remove(); });\n\t\t}\n\n\t\t$(\".post\").find(\".post_body\").find(\"mark\").contents().unwrap();\n\n\t\tXKit.tools.add_function(function() {\n\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t}, true, \"\");\n\n\t\tif ($(\".post\").length > 30) {\n\t\t\t$(\".post:gt(30)\").remove();\n\t\t}\n\n\t},\n\n\tauto_expand_fan_mail: function() {\n\n\t\ttry {\n\t\t\t$(\".fan_mail_read_more\").trigger('click');\n\t\t} catch (e) {\n\t\t\tconsole.error(\"auto_expand_fan_mail: \" + e.message);\n\t\t}\n\n\t},\n\n\tinit_mass_editor: function() {\n\n\t\tvar xf_html =\n\t\t\t'
    27. ' +\n\t\t\t\t'' +\n\t\t\t\t\t'
      Mass Edit Mode
      ' +\n\t\t\t\t'
      ' +\n\t\t\t'
    28. ';\n\n\t\t$(\"#xinbox_sidebar\").append(xf_html);\n\n\t\t$(\"#xinbox_mass_edit_button\").click(function() {\n\n\t\t\tif (!$(this).parent().hasClass(\"xkit-selected\")) {\n\n\t\t\t\t$(this).parent().addClass(\"xkit-selected\");\n\t\t\t\t$(this).parent().addClass(\"selected\");\n\t\t\t\tXKit.extensions.xinbox.start_mass_editor();\n\n\t\t\t} else {\n\n\t\t\t\t$(this).parent().removeClass(\"xkit-selected\");\n\t\t\t\t$(this).parent().removeClass(\"selected\");\n\t\t\t\tXKit.extensions.xinbox.stop_mass_editor();\n\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\n\t},\n\n\tstop_mass_editor: function() {\n\n\t\tXKit.tools.remove_css(\"xinbox_mass_editor\");\n\t\t$(\"#xinbox_mass_text\").remove();\n\t\t$(document).off(\"click\", \".post\");\n\n\t},\n\n\tstart_mass_editor: function() {\n\n\n\t\tvar button_default = \"No messages selected\";\n\t\tvar button_selected = \"Delete %s Messages\";\n\t\tvar button_selected_first = \"Delete 1 Message\";\n\n\t\tXKit.tools.add_css(\" #posts { padding: 0; margin: 0 !important; } .xtimestamp { display: none; } .post_controls { display: none; }\" +\n\t\t\t\t\" .post:last-child { display: block; } #left_column { min-height: 120%; } \" +\n\t\t\t\t\" .post:active { position: relative; top: 1px; } \" +\n\t\t\t\t\" .post { -moz-user-select: none; user-select: none; -webkit-user-select: none; float: left !important; width: 200px !important; height: 150px !important; \" +\n\t\t\t\t\" opacity: 0.53; \" +\n\t\t\t\t\" display: inline-block !important; clear: none !important; overflow: hidden !important; \" +\n\t\t\t\t\" margin: 0px 4px 8px 4px !important; } \" +\n\t\t\t\t\" .fan_mail { display: none !important; } \" +\n\t\t\t\t\" #xkit_delete_selected:hover { background: rgba(255,255,255,0.12); cursor: pointer; } \" +\n\t\t\t\t\" #xkit_delete_selected.disabled { opacity: 0.5; cursor: default; \" +\n\t\t\t\t\" background: rgba(255,255,255,0.08) !important; top: 0 !important; } \" +\n\t\t\t\t\" #xkit_delete_selected:active { background: rgba(0,0,0,0.12); \" +\n\t\t\t\t\" box-shadow: inset 0px 1px 2px rgba(0,0,0,0.43); position: relative; top: 1px; } \" +\n\t\t\t\t\" #xkit_delete_selected { border: 1px solid rgba(0,0,0,0.32); border-radius: 6px; \" +\n\t\t\t\t\" box-shadow: inset 0px 1px 0px rgba(255,255,255,0.12), 0px 1px 0px rgba(255,255,255,0.12); \" +\n\t\t\t\t\" padding: 5px 15px; background: rgba(255,255,255,0.08); display: inline-block; margin-top: 5px;} \" +\n\t\t\t\t\" .post a { pointer-events: none; cursor: default; } \" +\n\t\t\t\t\" .post.xpost-selected { opacity: 1; } \" +\n\t\t\t\t\" .post.xpost-working { animation: xpost-working-ani 1s infinite; \" +\n\t\t\t\t\" -webkit-animation: xpost-working-ani 1s infinite; \" +\n\t\t\t\t\" -webkit-animation: xpost-working-ani 1s infinite; } \" +\n\t\t\t\t\" @-moz-keyframes xpost-working-ani { from { opacity: 1; } 50% { opacity: 0.32; } to { opacity: 1; } } \" +\n\t\t\t\t\" @-webkit-keyframes xpost-working-ani { from { opacity: 1; } 50% { opacity: 0.32; } to { opacity: 1; } } \", \"xinbox_mass_editor\");\n\n\t\t$(\"#left_column\").prepend(\"
      \" +\n\t\t\t\t\"Welcome to Mass Edit Mode.
      \" +\n\t\t\t\t\"Select the messages you want deleted and click the button below.\" +\n\t\t\t\t\"
      \" +\n\t\t\t\t\"
      No messages selected
      \" +\n\t\t\t\t\"
      \");\n\n\t\tXKit.tools.add_function(function() {\n\t\t\tTumblr.Events.trigger(\"DOMEventor:updateRect\");\n\t\t}, true, \"\");\n\n\t\t$(\"#xkit_delete_selected\").click(function() {\n\n\t\t\tif ($(this).hasClass(\"disabled\") === true) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$(this).addClass(\"disabled\");\n\n\t\t\tvar msg_count = 0;\n\t\t\t$(\".xpost-selected\").each(function() {\n\t\t\t\tmsg_count++;\n\t\t\t});\n\n\t\t\tXKit.extensions.xinbox.delete_msg_count = msg_count;\n\t\t\tXKit.extensions.xinbox.delete_msg_index = 0;\n\t\t\tXKit.extensions.xinbox.mass_editor_working = true;\n\n\t\t\tXKit.extensions.xinbox.mass_editor_delete();\n\n\t\t});\n\n\t\t$(document).on(\"click\", \".post\", function(event) {\n\t\t\tif (XKit.extensions.xinbox.mass_editor_working === true) { return; }\n\t\t\tevent.preventDefault();\n\t\t\tif ($(this).hasClass(\"xpost-selected\") === true) {\n\t\t\t\tXKit.extensions.xinbox.selected_post_count = XKit.extensions.xinbox.selected_post_count - 1;\n\t\t\t} else {\n\t\t\t\tXKit.extensions.xinbox.selected_post_count++;\n\t\t\t}\n\t\t\t$(this).toggleClass(\"xpost-selected\");\n\t\t\tif (XKit.extensions.xinbox.selected_post_count === 0) {\n\t\t\t\t$(\"#xkit_delete_selected\").html(button_default);\n\t\t\t\t$(\"#xkit_delete_selected\").addClass(\"disabled\");\n\t\t\t} else {\n\t\t\t\t// English is a weird language, innit?\n\t\t\t\t$(\"#xkit_delete_selected\").removeClass(\"disabled\");\n\t\t\t\tif (XKit.extensions.xinbox.selected_post_count === 1) {\n\t\t\t\t\t$(\"#xkit_delete_selected\").html(button_selected_first);\n\t\t\t\t} else {\n\t\t\t\t\t$(\"#xkit_delete_selected\").html(button_selected.replace(\"%s\", XKit.extensions.xinbox.selected_post_count));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\n\t},\n\n\tselected_post_count: 0,\n\tmass_editor_working: false,\n\tdelete_msg_index: 0,\n\tdelete_msg_count: 0,\n\n\tmass_editor_delete: function() {\n\n\t\tvar button_working = \"Deleting message %s of %m\";\n\t\tvar current_msg = XKit.extensions.xinbox.delete_msg_index + 1;\n\t\tvar msg_count = XKit.extensions.xinbox.delete_msg_count;\n\n\t\tvar button_default = \"No messages selected\";\n\n\t\tif (current_msg > msg_count) {\n\t\t\tthis.selected_post_count = 0;\n\t\t\tXKit.window.show(\"Done!\", \"All messages deleted successfully.\", \"info\", \"
      OK
      \");\n\t\t\t$(\"#xkit_delete_selected\").html(button_default);\n\t\t\t$(\"#xkit_delete_selected\").addClass(\"disabled\");\n\t\t\tXKit.extensions.xinbox.mass_editor_working = false;\n\t\t\treturn;\n\t\t}\n\n\t\t$(\"#xkit_delete_selected\").html(button_working.replace(\"%m\", msg_count).replace(\"%s\", current_msg));\n\n\t\t$(\".xpost-selected:eq(0)\").addClass(\"xpost-working\");\n\n\t\tvar channel_id = $(\".xpost-selected:eq(0) .post_info_link\").text() || XKit.tools.get_blogs()[0];\n\t\tvar m_id = $(\".xpost-selected:eq(0)\").attr('id').replace(\"post_\", \"\");\n\n\t\tsetTimeout(function() {\n\n\t\t\tXKit.svc.post.delete({\n\t\t\t\tchannel_id: channel_id,\n\t\t\t\tpost_id: m_id\n\t\t\t})\n\t\t\t.then(() => {\n\t\t\t\tXKit.extensions.xinbox.delete_msg_index = current_msg;\n\t\t\t\tvar post_div = $(\".xpost-selected:eq(0)\");\n\t\t\t\t$(post_div).fadeOut('fast', function() { $(this).parent().remove(); });\n\t\t\t\tsetTimeout(function() { XKit.extensions.xinbox.mass_editor_delete(); }, 500);\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tXKit.window.show(\"Couldn't fetch page.\",\n\t\t\t\t\t\"There might be a connection problem, or the extension might need updating.

      \" +\n\t\t\t\t\t\"Please try again later, and if the problem continues, disable XInbox from \" +\n\t\t\t\t\t\"the XKit Control Panel to answer your asks while this problem is being fixed.\",\n\n\t\t\t\t\t\"error\",\n\n\t\t\t\t\t'
      OK
      '\n\t\t\t\t);\n\t\t\t});\n\n\t\t}, 700);\n\n\t},\n\n\tresize_text_area: function(post_id) {\n\n\t\tif ($(\"#ask_answer_field_\" + post_id + \"_tbl\").length > 0) {\n\n\t\t\t$(\"#ask_answer_field_\" + post_id + \"_tbl, #ask_answer_field_\" + post_id + \"_ifr\").css(\"height\", \"220px\");\n\n\t\t} else {\n\n\t\t\tsetTimeout(function() { XKit.extensions.xinbox.resize_text_area(post_id); }, 100);\n\n\t\t}\n\n\t},\n\n\tinit_tags: function() {\n\n\t\ttry {\n\n\t\t\t$(\"[id^='ask_answer_link_']\").unbind(\"click\");\n\n\t\t\t$(\"[id^='ask_answer_link_']\").bind(\"click\", function() {\n\n\t\t\t\tvar m_parent = $(this).parentsUntil(\".post\").parent();\n\t\t\t\tvar post_id = $(m_parent).attr('id').replace(\"post_\", \"\");\n\n\t\t\t\t// Make it longer?\n\t\t\t\tif (XKit.extensions.xinbox.preferences.bigger_answer_boxes.value === true) {\n\t\t\t\t\tXKit.extensions.xinbox.resize_text_area(post_id);\n\t\t\t\t}\n\n\t\t\t\tif ($(m_parent).find(\".xkit-xinbox-button-publish\").length > 0)\n\t\t\t\t\treturn;\n\n\t\t\t\t// Disable default buttons.\n\t\t\t\tvar submit_button = $(m_parent).find('[id^=\"ask_publish_button_\"]');\n\t\t\t\t$(submit_button).attr('onclick', 'return false;');\n\t\t\t\t$(submit_button).attr('data-state', '0');\n\n\t\t\t\tvar queue_button = $(m_parent).find('[id^=\"ask_queue_button_\"]');\n\t\t\t\t$(queue_button).attr('onclick', 'return false;');\n\t\t\t\t$(queue_button).attr('data-state', '2');\n\n\t\t\t\tvar draft_button = $(m_parent).find('[id^=\"ask_draft_button_\"]');\n\t\t\t\t$(draft_button).attr('onclick', 'return false;');\n\t\t\t\t$(draft_button).attr('data-state', '1');\n\n\t\t\t\tvar this_obj = m_parent;\n\t\t\t\tvar m_box_id = \"xinbox_tags_\" + post_id;\n\n\n\t\t\t\tvar asker = XKit.extensions.xinbox.preferences.anon_tag.value;\n\t\t\t\tvar respondant = $(m_parent).attr('data-tumblelog-name');\n\t\t\t\tif (m_parent.find(\".post_info\").find(\"a\").length > 0) {\n\t\t\t\t\tasker = m_parent.find(\".post_info\").find(\"a\").html();\n\n\t\t\t\t\t// If the ask is anonymous there is no link to their blog to parse.\n\t\t\t\t\t// If the blog is secondary there will be a link to respondant's own blog\n\t\t\t\t\t// and this will be found instead. Reset asker to anoymous if this is the case.\n\t\t\t\t\tif (asker === respondant) {\n\t\t\t\t\t\tasker = XKit.extensions.xinbox.preferences.anon_tag.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar all_buttons = $(m_parent).find('[id^=\"ask_publish_button_\"], [id^=\"ask_draft_button_\"], [id^=\"ask_queue_button_\"]');\n\t\t\t\tvar private_button = $(m_parent).find('[id^=\"private_answer_button_\"]');\n\n\t\t\t\t$(all_buttons).remove();\n\n\t\t\t\tvar publish_button_div = \"\";\n\n\t\t\t\tif (private_button.length > 0) {\n\t\t\t\t\t$(private_button).css(\"margin-left\", \"2px\");\n\t\t\t\t\t$(private_button).before(publish_button_div);\n\t\t\t\t} else {\n\t\t\t\t\t$(m_parent).find(\".ask_cancel_button\").parent().append(publish_button_div);\n\t\t\t\t}\n\n\t\t\t\tvar other_buttons_div = \"