{"id":7127,"date":"2024-12-03T07:33:29","date_gmt":"2024-12-02T22:33:29","guid":{"rendered":"https:\/\/code-plus.jp\/gp\/?page_id=7127"},"modified":"2024-12-03T07:33:29","modified_gmt":"2024-12-02T22:33:29","slug":"zenkaku-converter","status":"publish","type":"page","link":"https:\/\/code-plus.jp\/gp\/tools\/zenkaku-converter\/","title":{"rendered":"\u5168\u89d2\u6587\u5b57\u21c4\u534a\u89d2\u6587\u5b57\u5909\u63db\u30c4\u30fc\u30eb\uff5c\u82f1\u6570\u5b57\u30fb\u8a18\u53f7\u3092\u4e00\u62ec\u3067\u7d71\u4e00"},"content":{"rendered":"<!-- \u0f3b\u273f\ud835\udc0f\ud835\udc00\ud835\udc06\ud835\udc04-\u5168\u89d2\u6587\u5b57\u21c4\u534a\u89d2\u6587\u5b57\u5909\u63db\u30c4\u30fc\u30eb \uff08\/tools\/zenkaku-converter\/\uff09\n* \u30da\u30fc\u30b8\u30af\u30e9\u30b9\uff1apg-saracnvtvkaa\uff08WordPress\u304c\u5c0f\u6587\u5b57\u3067\u3057\u304b\u51fa\u529b\u3067\u304d\u306a\u3044\u305f\u3081\uff09\n* \u8b58\u5225\u30b3\u30fc\u30c9\uff1acnvtVkaA\uff08section\/dept \u306e\u30af\u30e9\u30b9\u540d, \u753b\u50cf\u540d\u306b\u4f7f\u7528\uff09\n\u0fd0\u0f36\u22b0\u27e1\u22b1\u0f36\u22b0\u27e1\u22b1\u0f36\u22b0\u27e1\u22b1\u0f36\u2740\u0f36\u22b0\u27e1\u22b1\u0f36\u22b0\u27e1\u22b1\u0f36\u22b0\u27e1\u22b1\u0f36\u0f04 -->\n\n<div class=\"pg-saracnvtvkaa bg-hackingGate\">\n\n  <!-- \u0f3b.mezzala\uff08\u4f59\u767d\u8abf\u6574\uff1apage\u4e0a\uff09\u0f3a -->\n  <hr class=\"spacer-mezzala\" \/>\n\n  <header class=\"page-header mx-auto\">\n    <!-- \u2756\u30d1\u30f3\u304f\u305a\u30ea\u30b9\u30c8 --><div><!-- breadcrumb.php -->\n<style>\n\/* \u2756breadcrumb.leckermaul\uff08\u30d1\u30f3\u304f\u305a\u30ea\u30b9\u30c8\uff09\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u0f1a\u0f36\u22b0\u27e1\u22b1\u0f36\u0f1a\u0f3a*\/\n.zaratan .breadcrumb.leckermaul {\n\twidth: 100%;\n\tmax-width: calc(var(--zvw,1vw) * 92.5);\n\tmargin-inline: auto;\n}\n\n.zaratan .breadcrumb.leckermaul :is(ul, ol) {\n\tmin-height: 3rem;\n\tline-height: initial;\n\tfont-size: 0;\n\tletter-spacing: 0;\n\toverflow: hidden;\n}\n\n.zaratan .breadcrumb.leckermaul li {\n\tdisplay: inline;\n\tline-height: 1.6;\n\tfont-size: clamp(0.775rem, calc(0.775rem + ((1vw - 0.225rem) * 0.1563)), 0.8750rem);\n}\n\n.zaratan .breadcrumb.leckermaul li>*,\n.zaratan .breadcrumb.leckermaul li::before {\n\tposition: relative;\n\ttop: 0.125em;\n\tdisplay: inline-flex;\n\talign-items: center;\n}\n\n.zaratan .breadcrumb.leckermaul a {\n\tdisplay: inline;\n\tcolor: var(--c-notice-600, hsl(240, 32%, 53%));\n\tmargin-right: .5em;\n}\n\n.zaratan .breadcrumb.leckermaul li:nth-of-type(n+2) a {\n\tmargin-left: .5em;\n}\n\n\/* \u73fe\u5728\u306e\u30da\u30fc\u30b8\uff08\u30ea\u30f3\u30af\u306a\u3057\u3002<span aria-current=\"page\">\uff09 *\/\n.zaratan .breadcrumb.leckermaul [aria-current=\"page\"] {\n\tdisplay: inline;\n\tmargin-inline: .5em;\n\tcolor: var(--c-base-600, hsl(224, 6%, 43%));\n}\n\n@media (any-hover:hover) {\n\t.zaratan .breadcrumb.leckermaul a:hover {\n\t\tcolor: var(--c-notice-600, hsl(240, 32%, 53%));\n\t}\n}\n\n\/* .ma-home *\/\n.zaratan .breadcrumb.leckermaul .ma-home {\n\tvertical-align: top;\n}\n\n\/* .separator *\/\n.zaratan .breadcrumb.leckermaul li:nth-of-type(n+2)::before,\n.zaratan .breadcrumb.leckermaul.chevron-right li:nth-of-type(n+2)::before {\n\tcontent: \">\";\n\tcolor: var(--c-notice-600, hsl(240, 32%, 53%))\n}\n\n.zaratan .breadcrumb.leckermaul.slash li:nth-of-type(n+2)::before {\n\tcontent: \"\/\";\n}\n\n.zaratan .breadcrumb.leckermaul.trigon-bullet li:nth-of-type(n+2)::before {\n\tcontent: \"\u2023\";\n}\n<\/style>\n\n\n<nav class=\"breadcrumb leckermaul py-0.5r mx-auto\" aria-label=\"\u30d1\u30f3\u304f\u305a\u30ea\u30b9\u30c8\">\n  <ul class=\"breadcrumb-wrapper\">\n    <!-- \u30c8\u30c3\u30d7\u30da\u30fc\u30b8\u3078\u306e\u30ea\u30f3\u30af\u3092\u8868\u793a -->\n    <li><a href=\"https:\/\/code-plus.jp\/gp\/\"><i><\/i>\u30c8\u30c3\u30d7<\/a><\/li>\n\n          <!-- \u56fa\u5b9a\u30da\u30fc\u30b8\uff08\u305d\u308c\u4ee5\u5916\uff09\uff1a \u5148\u7956\u30da\u30fc\u30b8\u540d\u3068\u3001\u73fe\u5728\u306e\u30da\u30fc\u30b8\u540d\u3092\u8868\u793a -->\n      <li><a href=\"https:\/\/code-plus.jp\/gp\/tools\/\">Web\u30c4\u30fc\u30eb\u4e00\u89a7\uff5cHTML\/CSS\u30fb\u6587\u66f8\u7de8\u96c6\u30fb\u753b\u50cf\u7de8\u96c6<\/a><\/li><li class=\"current_page_item\"><span aria-current=\"page\">\u5168\u89d2\u6587\u5b57\u21c4\u534a\u89d2\u6587\u5b57\u5909\u63db\u30c4\u30fc\u30eb\uff5c\u82f1\u6570\u5b57\u30fb\u8a18\u53f7\u3092\u4e00\u62ec\u3067\u7d71\u4e00<\/span><\/li>    <!-- \/\/\/if (is_page()) -->\n\n  <\/ul>\n<\/nav><\/div>\n  <\/header><!-- \/\/\/.inheader -->\n\n\n\n\n  <!-- \u0f3b\u00a7\ud835\udc12\ud835\udc04\ud835\udc02\ud835\udc13\ud835\udc08\ud835\udc0e\ud835\udc0d\u0f3a -->\n  <section class=\"sect-cnvtVkaA-Intro\">\n    <header class=\"section__inheader mx-auto\">\n      <div class=\"hgroup-wrapper d-iblock mb-0.5r\">\n        <h1 class=\"fz-xxl hdg-page mb-0.25pc\"><span>\u5168\u89d2\u6587\u5b57\u21c4\u534a\u89d2\u6587\u5b57\u5909\u63db\u30c4\u30fc\u30eb\uff5c\u82f1\u6570\u5b57\u30fb\u8a18\u53f7\u3092\u4e00\u62ec\u3067\u7d71\u4e00<\/span><\/h1>\n        <p class=\"page-foreword fz-ss\">\u5168\u89d2\u3068\u534a\u89d2\u3092<b class=\"fw-600\">\u76f8\u4e92\u306b\u4e00\u62ec\u5909\u63db<\/b>\u3059\u308b\u30c4\u30fc\u30eb\u3002\u5168\u89d2\u306e\u6570\u5b57\u30fb\u82f1\u5b57\u30fb\u8a18\u53f7\uff08<code>\uff05 \uffe5 \uff03<\/code> \u306a\u3069\uff09\u3092\u534a\u89d2\u306b\u3001\u5358\u72ec\u306e\u534a\u89d2\u6570\u5b57\u30fb\u82f1\u5b57\u30fb\u62ec\u5f27\u3092\u5168\u89d2\u306b\u7d71\u4e00\u3067\u304d\u307e\u3059\u3002<b class=\"fw-600\">\u30b3\u30fc\u30c9\u3092\u58ca\u3055\u306a\u3044\u5358\u72ec\u5224\u5b9a<\/b>\u30fb\u6ce2\u30c0\u30c3\u30b7\u30e5\u306e\u7d71\u4e00\u30fb\u30b9\u30da\u30fc\u30b9\u8a70\u3081\u306b\u3082\u5bfe\u5fdc\u3057\u3001\u6821\u6b63\u3067\u6307\u6458\u3055\u308c\u304c\u3061\u306a<b class=\"fw-600\">\u5168\u89d2\uff0f\u534a\u89d2\u306e\u8868\u8a18\u3086\u308c\u4fee\u6b63<\/b>\u306b\u4f7f\u3048\u307e\u3059\u3002<\/p>\n      <\/div><!-- \/\/\/.hgroup -->\n\n      <a class=\"fl-right badge is-outlined is-gray fz-xs bdrs-0.25r\" href=\"#ch-Explanation\">\n        <i class=\"icon mas ma-help\"><\/i>&nbsp;<span>\u4f7f\u3044\u65b9<\/span>\n      <\/a>\n    <\/header><!-- \/\/\/.inheader -->\n  <\/section>\n\n\n  <!-- \u0f3b\u00a7\ud835\udc12\ud835\udc04\ud835\udc02\ud835\udc13\ud835\udc08\ud835\udc0e\ud835\udc0d\u0f3a -->\n  <hr id=\"ch-Converter\" anchor \/>\n  <section class=\"sect-cnvtVkaA-Converter\">\n    <div class=\"section__interior fxd-row mx-auto\">\n      <figure class=\"section__leftlane\">\n        <div class=\"hgroup-wrapper\">\n          <h3 class=\"fz-rg hdg-section mb-0.25pc\"><span>\u25bc\u30c6\u30ad\u30b9\u30c8\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044<\/span><\/h3>\n        <\/div><!-- \/\/\/.hgroup -->\n\n        <div class=\"chest-wrapper relatived\">\n          <textarea id=\"encodeArea\" class=\"textarea\" style=\"height:17.5pc;\" placeholder=\"\u3053\u3053\u306b\u30c6\u30ad\u30b9\u30c8\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\"><\/textarea>\n          <ins id=\"decodedMessage\"><\/ins>\n        <\/div><!-- \/\/\/.chest -->\n\n        <!-- \u30aa\u30d7\u30b7\u30e7\u30f3 -->\n        <div class=\"colgroup w-full mt-1r\">\n          <h4 class=\"title is-outlined fz-sm\">\u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a\n            <button type=\"button\" onclick=\"uncheckAllOptions()\" class=\"badge is-outlined is-gray fz-xxs ml-auto\">\n              <i class=\"icon mas ma-close\"><\/i>&nbsp;<span>\u3059\u3079\u3066\u30c1\u30a7\u30c3\u30af\u3092\u5916\u3059<\/span>\n            <\/button>\n            <button type=\"button\" onclick=\"resetDefaultOptions()\" class=\"badge is-outlined is-gray fz-xxs ml-0.5r\">\n              <i class=\"icon mas ma-restart_alt\"><\/i>&nbsp;<span>\u30c7\u30d5\u30a9\u30eb\u30c8\u306b\u623b\u3059<\/span>\n            <\/button>\n          <\/h4>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"removeTags\">\u3059\u3079\u3066\u306eHTML\u30bf\u30b0\u3092\u9664\u53bb<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"removeLineBreaks\">\u5168\u3066\u306e\u6539\u884c\u3092\u524a\u9664<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"adjustLineBreaks\">\u5358\u4e00\u6539\u884c\u3092\u524a\u9664\u3001\u9023\u7d9a\u6539\u884c\u306f\uff11\u3064\u6e1b\u3089\u3059<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertTagBreaks\">\u6539\u884c\u3092 \u2192 &lt;br \/&gt; \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertNspacesTabs\">\n            <input type=\"number\" id=\"spaceCount\" class=\"w-4e\" value=\"4\" min=\"2\">&nbsp;\u500b\u4ee5\u4e0a\u306e\u9023\u7d9a\u3059\u308b\u30b9\u30da\u30fc\u30b9\u3092 \u2192 \u30bf\u30d6 \u306b\u5909\u63db\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertNthBreak2Tabs\">\n            <input type=\"text\" id=\"nthBreakCount\" class=\"w-4e\" value=\"n+1\">&nbsp;\u756a\u76ee\u306e\u6539\u884c\u3092 \u2192 \u30bf\u30d6 \u306b\u5909\u63db\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertHalfNumbers\" checked>\u5168\u89d2\u6570\u5b57\u3092 \u2192 \u534a\u89d2\u6570\u5b57\u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertFullNumbers\" checked>\u5358\u72ec\u534a\u89d2\u6570\u5b57\u3092 \u2192 \u5168\u89d2\u6570\u5b57 \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertHalfAlphabets\" checked>\u5168\u89d2\u82f1\u5b57\u3092 \u2192 \u534a\u89d2\u82f1\u5b57\u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertFullAlphabets\">\u5358\u72ec\u534a\u89d2\u82f1\u5b57\u3092 \u2192 \u5168\u89d2\u82f1\u5b57 \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertHalfSymbols\" checked>\u5168\u89d2\u8a18\u53f7&nbsp;<input type=\"text\" id=\"halfSymbolChars\" class=\"input w-8e\" value=\"\uffe5\uff03\uff04\uff05\">&nbsp;\u3092 \u2192 \u534a\u89d2 \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertFullSymbols\" checked>\u534a\u89d2\u8a18\u53f7&nbsp;<input type=\"text\" id=\"fullSymbolChars\" class=\"input w-8e\" value=\"\uff65\uff64\uff61\uff70\uff9e\uff9f\uff62\uff63()\">&nbsp;\u3092 \u2192 \u5168\u89d2 \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertWaveDash\" checked>\u6ce2\u30c0\u30c3\u30b7\u30e5 \u301c(U+301C) \u3092 \u2192 \uff5e(U+FF5E) \u306b\u7d71\u4e00<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertTrimSpaceNumJp\" checked>\u534a\u89d2\u6570\u5b57\u3068\u65e5\u672c\u8a9e\u306e\u9593\u306e\u534a\u89d2\u30b9\u30da\u30fc\u30b9\u3092\u8a70\u3081\u308b<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertNumber0s\">\u6570\u5b57\u3092 \u2192 \ud835\udf03 \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertNumberRandoms\">\u6570\u5b57\u3092 \u2192 \u30e9\u30f3\u30c0\u30e0\u306a\u6570\u5b57 \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAlphaLowers\">\u82f1\u5c0f\u6587\u5b57\u3092 \u2192 \u29c4 \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAlphaUppers\">\u82f1\u5927\u6587\u5b57\u3092 \u2192 \u2341 \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertFullWidths\">\u5168\u89d2\u6587\u5b57\u3092 \u2192 \u303c \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertRenumbers\">Markdown\u5f62\u5f0f\u306e\u756a\u53f7\uff08*. \uff09\u3092 \u2192 \u4e0a\u304b\u3089\u9023\u756a\u3067\u4ed8\u3051\u76f4\u3059<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"removeMultiWords\">JSON\u5f62\u5f0f&nbsp;\n            <input type=\"text\" id=\"removeTxts\" class=\"input w-10e\" value='\u300e, \u300f'>&nbsp;\u3092\u524a\u9664\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertMultiWords\">JSON\u5f62\u5f0f&nbsp;\n            <input type=\"text\" id=\"beforeTxts\" class=\"input w-10e\" value='[\u300e, \u300f]'> \u2192\n            <input type=\"text\" id=\"afterTxts\" class=\"input w-10e\" value='[\u300c, \u300d]'>&nbsp;\u306b\u5909\u63db\n          <\/label>\n        <\/div><!-- \/\/\/.colgroup -->\n\n\n        <!-- \u975e\u8868\u793a\u30b0\u30eb\u30fc\u30d7 -->\n        <div class=\"colgroup\" style=\"display:none;\">\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertList2Trees\">+\u8a18\u53f7\u306e\u30ea\u30b9\u30c8\u5f62\u5f0f\u3092 \u2192 \u30c4\u30ea\u30fc\u5f62\u5f0f\u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertPipe2Bounds\">\u30d1\u30a4\u30d7(|)\u30ea\u30b9\u30c8\u3092 \u2192 \u7f6b\u7dda\u56f2\u307f\u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertTagDelines\">&nbsp;<input type=\"text\" id=\"targetDelimiterDl\" class=\"input w-4e\" value='|'>\u3092 \u2192 &lt;dl&gt;\u30bf\u30b0 \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertTagTables\">&nbsp;<input type=\"text\" id=\"targetDelimiterTable\" class=\"input w-4e\" value='|'>\u3092 \u2192 &lt;table&gt;\u30bf\u30b0 \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertMd2Html\">Markdown\u8a18\u6cd5\u3092 \u2192 HTML \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\">\n            <input type=\"checkbox\" class=\"checkbox\" id=\"convertReindentCode\">\n            <span>\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u5185\u3092\u30a4\u30f3\u30c7\u30f3\u30c8\u6574\u5f62\u3059\u308b<br \/>\uff08<code>{}<\/code>\u30fb<code>[]<\/code>\u30fbHTML\u30bf\u30b0\u30fbPHP\u5236\u5fa1\u69cb\u9020\u3067\u5b57\u4e0b\u3052\uff09<\/span>\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"mergeCells\">\u30bb\u30eb\u306e\u7d50\u5408\uff08 <code>|&gt;|<\/code>, <code>|&lt;|<\/code>=\u6a2a\u7d50\u5408\u3001<code>|^|<\/code>=\u7e26\u7d50\u5408 \uff09<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertTagTd2Ths\">&lt;table&gt; \u5404\u884c\u6700\u521d\u306e\u30bb\u30eb\u3092 \u2192 &lt;th&gt; \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertTagBreaksInP\">&lt;p&gt; \u5185\u306e\u6539\u884c\u3092 \u2192 &lt;br \/&gt; \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertUListStyles\">\n            &lt;ul&gt; \u306e list-style-type\u3092&nbsp;\n            <select class=\"select w-10e placeholder-shown\">\n              <option value=\"none\">none<\/option>\n              <option value=\"indent\">indent<\/option>\n              <option value=\"bullet\" selected>bullet<\/option>\n              <option value=\"white-bullet\">white-bullet<\/option>\n              <option value=\"trigon-bullet\">trigon-bullet<\/option>\n              <option value=\"white-trigon-bullet\">white-trigon-bullet<\/option>\n              <option value=\"trigon-right\">trigon-right<\/option>\n              <option value=\"white-trigon-right\">white-trigon-right<\/option>\n              <option value=\"disc\">disc<\/option>\n              <option value=\"circle\">circle<\/option>\n              <option value=\"square\">square<\/option>\n              <option value=\"box\">box<\/option>\n              <option value=\"check\">check<\/option>\n              <option value=\"diamond\">diamond<\/option>\n            <\/select>&nbsp;\u306b\u5909\u63db\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertOListStyles\">\n            &lt;ol&gt; \u306e list-style-type\u3092&nbsp;\n            <select class=\"select w-10e placeholder-shown\">\n              <option value=\"none\">none<\/option>\n              <option value=\"indent\">indent<\/option>\n              <option value=\"decimal\" selected>decimal<\/option>\n              <option value=\"decimal-leading-zero\">decimal-leading-zero<\/option>\n              <option value=\"lower-alpha\">lower-alpha<\/option>\n              <option value=\"upper-alpha\">upper-alpha<\/option>\n              <option value=\"lower-roman\">lower-roman<\/option>\n              <option value=\"upper-roman\">upper-roman<\/option>\n              <option value=\"parenthesized-decimal\">parenthesized-decimal<\/option>\n              <option value=\"parenthesized-lower-alpha\">parenthesized-lower-alpha<\/option>\n              <option value=\"parenthesized-lower-roman\">parenthesized-lower-roman<\/option>\n              <option value=\"circled-decimal\">circled-decimal<\/option>\n              <option value=\"circled-upper-alpha\">circled-upper-alpha<\/option>\n              <option value=\"circled-upper-roman\">circled-upper-roman<\/option>\n              <option value=\"boxed-decimal\">boxed-decimal<\/option>\n              <option value=\"boxed-upper-alpha\">boxed-upper-alpha<\/option>\n              <option value=\"boxed-upper-roman\">boxed-upper-roman<\/option>\n              <option value=\"filled-circled-decimal\">filled-circled-decimal<\/option>\n              <option value=\"filled-circled-upper-alpha\">filled-circled-upper-alpha<\/option>\n              <option value=\"filled-circled-upper-roman\">filled-circled-upper-roman<\/option>\n              <option value=\"filled-boxed-decimal\">filled-boxed-decimal<\/option>\n              <option value=\"filled-boxed-upper-alpha\">filled-boxed-upper-alpha<\/option>\n              <option value=\"filled-boxed-upper-roman\">filled-boxed-upper-roman<\/option>\n            <\/select>&nbsp;\u306b\u5909\u63db\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertUpdateTag1s\">\n            <input type=\"text\" id=\"targetUpdateTag1\" class=\"input w-10e\" value='&lt;strong&gt;'>&nbsp;\u30bf\u30b0\u3092\u3001&nbsp;&nbsp;\n            <input type=\"text\" id=\"afterUpdateTag1\" class=\"input w-10e\" value='&lt;b class=\"fw-600\"&gt;'>&nbsp;\u306b\u5909\u63db\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"encloseTagImgPictures\">&lt;img \/&gt; \u3092 \u2192 &lt;picture&gt; \u3067\u56f2\u3080<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase1s\">\n            <input type=\"text\" id=\"targetAddClase1\" class=\"input w-8e\" value='picture'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\n            <input type=\"text\" id=\"afterAddClase1\" class=\"input w-10e\" value='bd-bounds'>&nbsp;\u8ffd\u52a0\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase11s\">\n            <input type=\"text\" id=\"targetAddClase11\" class=\"input w-8e\" value='a'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\n            <input type=\"text\" id=\"afterAddClase11\" class=\"input w-10e\" value='link'>&nbsp;\u8ffd\u52a0\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase12s\">\n            <input type=\"text\" id=\"targetAddClase12\" class=\"input w-8e\" value='b'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\n            <input type=\"text\" id=\"afterAddClase12\" class=\"input w-10e\" value='fw-600'>&nbsp;\u8ffd\u52a0\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase13s\">\n            <input type=\"text\" id=\"targetAddClase13\" class=\"input w-8e\" value='s'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\n            <input type=\"text\" id=\"afterAddClase13\" class=\"input w-10e\" value='strike'>&nbsp;\u8ffd\u52a0\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase14s\">\n            <input type=\"text\" id=\"targetAddClase14\" class=\"input w-8e\" value='u'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\n            <input type=\"text\" id=\"afterAddClase14\" class=\"input w-10e\" value='underline'>&nbsp;\u8ffd\u52a0\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase15s\">\n            <input type=\"text\" id=\"targetAddClase15\" class=\"input w-8e\" value='mark'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\n            <input type=\"text\" id=\"afterAddClase15\" class=\"input w-10e\" value='mark'>&nbsp;\u8ffd\u52a0\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase16s\">\n            <input type=\"text\" id=\"targetAddClase16\" class=\"input w-8e\" value='hr'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\n            <input type=\"text\" id=\"afterAddClase16\" class=\"input w-10e\" value='separator mt-3r'>&nbsp;\u8ffd\u52a0\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase17s\">\n            <input type=\"text\" id=\"targetAddClase17\" class=\"input w-8e\" value='h2'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\n            <input type=\"text\" id=\"afterAddClase17\" class=\"input w-10e\" value='fz-xl'>&nbsp;\u8ffd\u52a0\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase18s\">\n            <input type=\"text\" id=\"targetAddClase18\" class=\"input w-8e\" value='h3'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\n            <input type=\"text\" id=\"afterAddClase18\" class=\"input w-10e\" value='fz-ml'>&nbsp;\u8ffd\u52a0\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase19s\">\n            <input type=\"text\" id=\"targetAddClase19\" class=\"input w-8e\" value='h4'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\n            <input type=\"text\" id=\"afterAddClase19\" class=\"input w-10e\" value='fz-md'>&nbsp;\u8ffd\u52a0\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase20s\">\n            <input type=\"text\" id=\"targetAddClase20\" class=\"input w-8e\" value='h5'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\n            <input type=\"text\" id=\"afterAddClase20\" class=\"input w-10e\" value='fz-ss'>&nbsp;\u8ffd\u52a0\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase21s\">\n            <input type=\"text\" id=\"targetAddClase21\" class=\"input w-8e\" value='h6'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\n            <input type=\"text\" id=\"afterAddClase21\" class=\"input w-10e\" value='fz-xs'>&nbsp;\u8ffd\u52a0\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase31s\">\n            <input type=\"text\" id=\"targetAddClase31\" class=\"input w-8e\" value='ul'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\n            <input type=\"text\" id=\"afterAddClase31\" class=\"input w-10e\" value='my-0.5r'>&nbsp;\u8ffd\u52a0\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase32s\">\n            <input type=\"text\" id=\"targetAddClase32\" class=\"input w-8e\" value='ol'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\n            <input type=\"text\" id=\"afterAddClase32\" class=\"input w-10e\" value='my-0.5r'>&nbsp;\u8ffd\u52a0\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase33s\">\n            <input type=\"text\" id=\"targetAddClase33\" class=\"input w-8e\" value='table'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\n            <input type=\"text\" id=\"afterAddClase33\" class=\"input w-10e\" value='table my-0.5r'>&nbsp;\u8ffd\u52a0\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertAddClase34s\">\n            <input type=\"text\" id=\"targetAddClase34\" class=\"input w-8e\" value='tr'>&nbsp;\u30bf\u30b0\u306b\u3001&nbsp;class&nbsp;\n            <input type=\"text\" id=\"afterAddClase34\" class=\"input w-10e\" value='rung'>&nbsp;\u8ffd\u52a0\n          <\/label>\n\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertEntityAmps\"><code>&amp;<\/code>\u3092 \u2192 &amp;amp; \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertEntityNewLines\">\u6539\u884c\u3092 \u2192 &#38;#13;&#38;#10; \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertEntityTabs\">\u30bf\u30d6\u3092 \u2192 &#38;#9; \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertEntityLtGts\"><code>&lt; &gt;<\/code>\u3092 \u2192 &amp;lt; &amp;gt; \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertEntitySqbs\"><code>&lsqb; &rsqb;<\/code>\u3092 \u2192 &amp;lsqb; &amp;rsqb; \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertEntityPars\"><code>&lpar; &rpar;<\/code>\u3092 \u2192 &amp;lpar; &amp;rpar; \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertEntityCubs\"><code>&lcub; &rcub;<\/code>\u3092 \u2192 &amp;lcub; &amp;rcub; \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertEntityQuots\"><code>&quot;<\/code>\u3092 \u2192 &amp;quot; \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertEntityAposs\"><code>&apos;<\/code>\u3092 \u2192 &amp;apos; \u306b\u5909\u63db<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertEntityGraves\"><code>&grave;<\/code>\u3092 \u2192 &amp;grave; \u306b\u5909\u63db<\/label>\n\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertUpdateTag2s\">\n            <input type=\"text\" id=\"targetUpdateTag2\" class=\"input w-10e\" value='&lt;table class=\"table\"&gt;'>&nbsp;\u30bf\u30b0\u3092\u3001&nbsp;&nbsp;\n            <input type=\"text\" id=\"afterUpdateTag2\" class=\"input w-10e\" value='&lt;dl class=\"delimit\"&gt;'>&nbsp;\u306b\u5909\u63db\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertUpdateTag3s\">\n            <input type=\"text\" id=\"targetUpdateTag3\" class=\"input w-10e\" value='&lt;tr class=\"rung\"&gt;'>&nbsp;\u30bf\u30b0\u3092\u3001&nbsp;&nbsp;\n            <input type=\"text\" id=\"afterUpdateTag3\" class=\"input w-10e\" value='&lt;div class=\"rung\"&gt;'>&nbsp;\u306b\u5909\u63db\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertUpdateTag4s\">\n            <input type=\"text\" id=\"targetUpdateTag4\" class=\"input w-10e\" value='&lt;th&gt;'>&nbsp;\u30bf\u30b0\u3092\u3001&nbsp;&nbsp;\n            <input type=\"text\" id=\"afterUpdateTag4\" class=\"input w-10e\" value='&lt;dt&gt;'>&nbsp;\u306b\u5909\u63db\n          <\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"convertUpdateTag5s\">\n            <input type=\"text\" id=\"targetUpdateTag5\" class=\"input w-10e\" value='&lt;td&gt;'>&nbsp;\u30bf\u30b0\u3092\u3001&nbsp;&nbsp;\n            <input type=\"text\" id=\"afterUpdateTag5\" class=\"input w-10e\" value='&lt;dd&gt;'>&nbsp;\u306b\u5909\u63db\n          <\/label>\n        <\/div>\n      <\/figure><!-- \/\/\/.leftlane -->\n\n      <figure class=\"section__centerlane\">\n        <aside class=\"sticky-sidebar fxd-column pc-center\">\n          <a class=\"button is-solided is-primary\" href=\"#ch-Converter\" onclick=\"encodeText()\"><span>\u5909\u63db&nbsp;\u00bb<\/span><\/a>\n          <a class=\"button is-solided is-primary mt-2r\" href=\"#ch-Converter\" onclick=\"decodeText()\"><span>\u00ab&nbsp;\u5909\u63db<\/span><\/a>\n        <\/aside>\n      <\/figure><!-- \/\/\/.centerlane -->\n\n\n      <figure class=\"section__rightlane\">\n        <div class=\"chest-wrapper relatived\">\n          <h3 class=\"fz-rg hdg-section mb-0.25pc\"><span>\u25bc\u5909\u63db\u5f8c\u306e\u30c6\u30ad\u30b9\u30c8<\/span><\/h3>\n          <textarea class=\"textarea\" id=\"decodeArea\" style=\"height:17.5pc;\" placeholder=\"\u3053\u3053\u306b\u5909\u63db\u5f8c\u306e\u30c6\u30ad\u30b9\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\"><\/textarea>\n          <ins id=\"encodedMessage\"><\/ins>\n        <\/div><!-- \/\/\/.chest -->\n\n        <div class=\"colgroup w-full mt-1r\">\n          <!-- \u30aa\u30d7\u30b7\u30e7\u30f3 -->\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"decodeHtml2Md\" checked>HTML\u3092 \u2192 Markdown\u8a18\u6cd5 \u306b\u30c7\u30b3\u30fc\u30c9<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"decodeTagTables\" checked>&lt;table&gt;\u30bf\u30b0\u3092 \u2192 &nbsp;|\uff08\u30d1\u30a4\u30d7\uff09 \u306b\u30c7\u30b3\u30fc\u30c9<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"decodeHeadingAtx\" checked>\u898b\u51fa\u3057\u3092 # \u5f62\u5f0f\u3067\u51fa\u529b\uff08h1\u2192#\u3001h2\u2192## \u2026\uff09<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"decodeRemoveTags\">\u5909\u63db\u5f8c\u306b\u6b8b\u3063\u305fHTML\u30bf\u30b0\u3092\u9664\u53bb<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"decodeKeepImg\">&lt;img&gt;\u30bf\u30b0\u306f ![]() \u306b\u5909\u63db\u305b\u305a\u305d\u306e\u307e\u307e\u6b8b\u3059\uff08\u5e45\u30fb\u9ad8\u3055\u30fbstyle\u3092\u4fdd\u6301\uff09<\/label>\n          <label class=\"label is-outlined fz-sm\"><input type=\"checkbox\" class=\"checkbox\" id=\"decodeEntities\">\u5b9f\u4f53\u53c2\u7167\u3092\u30c7\u30b3\u30fc\u30c9\uff08<code>&amp;lt;<\/code>\u30fb<code>&amp;#13;<\/code>\u30fb<code>&amp;#x0A;<\/code> \u2192 \u6587\u5b57\uff09<\/label>\n        <\/div><!-- \/\/\/.colgroup -->\n      <\/figure><!-- \/\/\/.rightlane -->\n    <\/div><!-- \/\/\/.interior.fxd-row -->\n  <\/section>\n\n\n  <!-- \u0f3b\u00a7\ud835\udc12\ud835\udc04\ud835\udc02\ud835\udc13\ud835\udc08\ud835\udc0e\ud835\udc0d\uff1a\u4f7f\u3044\u65b9\u0f3a -->\n  <hr id=\"ch-Explanation\" anchor \/>\n  <section class=\"sect-cnvtVkaA-Explanation pt-3r\">\n    <div class=\"section__interior mx-auto scroll-fadeIn\">\n      <div class=\"box is-broad is-solided c-base-900\">\n        <h4 class=\"hdg-explanation fz-md mb-0.25pc\">\u4f7f\u3044\u65b9<\/h4>\n\n        <p class=\"fz-ss mb-1r\">\n          \u3053\u306e\u30c4\u30fc\u30eb\u306f\u3001\u30c6\u30ad\u30b9\u30c8\u4e2d\u306e<b class=\"fw-600\">\u5168\u89d2\u30fb\u534a\u89d2\u3092\u76f8\u4e92\u306b\u5909\u63db<\/b>\u3059\u308b\u30aa\u30f3\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3067\u3059\u3002\u5de6\u5074\u306e\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u306b\u6587\u7ae0\u3092\u5165\u529b\u3057\u3001\u5fc5\u8981\u306a\u5909\u63db\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u30c1\u30a7\u30c3\u30af\u3092\u5165\u308c\u3066\u300c\u5909\u63db \u00bb\u300d\u3092\u62bc\u3059\u3068\u3001\u53f3\u5074\u306b\u7d50\u679c\u304c\u51fa\u529b\u3055\u308c\u3001\u81ea\u52d5\u3067\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u30b3\u30d4\u30fc\u3055\u308c\u307e\u3059\u3002\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u4e0d\u8981\u30fb\u30d6\u30e9\u30a6\u30b6\u5185\u3067\u5b8c\u7d50\u3057\u3001\u5165\u529b\u5185\u5bb9\u304c\u30b5\u30fc\u30d0\u30fc\u306b\u9001\u4fe1\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\n        <\/p>\n\n        <hr class=\"separator my-1.5r\">\n\n        <!-- \u7279\u5fb4 -->\n        <h5 class=\"hdg-subexplanation fz-rg mb-0.5r\">\u2728 \u3053\u306e\u30c4\u30fc\u30eb\u306e\u7279\u5fb4<\/h5>\n        <table class=\"table tbl-responsive fz-ss mb-1r\">\n          <thead>\n            <tr class=\"rung\">\n              <th style=\"min-width:9em;\">\u7279\u5fb4<\/th>\n              <td>\u5185\u5bb9<\/td>\n            <\/tr>\n          <\/thead>\n          <tbody>\n            <tr class=\"rung\">\n              <th>\u30b3\u30fc\u30c9\u3092\u58ca\u3055\u306a\u3044<br>\u300c\u5358\u72ec\u5224\u5b9a\u300d<\/th>\n              <td>\u534a\u89d2\u2192\u5168\u89d2\u306e\u3068\u304d\u3001<b class=\"fw-600\">\u524d\u5f8c\u304c\u3059\u3079\u3066\u534a\u89d2\u6587\u5b57\uff08\u3084\u7a7a\u767d\uff09\u306a\u3089\u5909\u63db\u5bfe\u8c61\u5916<\/b>\u306b\u3057\u307e\u3059\u3002<code>iPhone15<\/code> \u3084 <code>calc(100% - 3rem)<\/code>\u30fb<code>url(x) no-repeat<\/code> \u306f\u305d\u306e\u307e\u307e\u3001<code>(3\u5e74\u4fdd\u80b2)<\/code>\u2192<code>\uff083\u5e74\u4fdd\u80b2\uff09<\/code> \u306e\u3088\u3046\u306b\u65e5\u672c\u8a9e\u6587\u4e2d\u306e\u8a18\u53f7\u3060\u3051\u3092\u5168\u89d2\u5316\u3057\u307e\u3059\u3002<\/td>\n            <\/tr>\n            <tr class=\"rung\">\n              <th>\u8a18\u53f7\u306f<br>\u81ea\u7531\u306b\u6307\u5b9a<\/th>\n              <td>\u5909\u63db\u3059\u308b\u8a18\u53f7\u3092<b class=\"fw-600\">\u5165\u529b\u6b04\u3067\u6307\u5b9a<\/b>\u3067\u304d\u307e\u3059\u3002\u30c7\u30b6\u30a4\u30ca\u30fc\u3084\u30b5\u30a4\u30c8\u3054\u3068\u306b\u300c<code>\uff05<\/code> \u306f\u5168\u89d2\u306e\u307e\u307e\u300d\u306a\u3069\u65b9\u91dd\u304c\u9055\u3063\u3066\u3082\u3001\u5bfe\u8c61\u8a18\u53f7\u3092\u5897\u6e1b\u3057\u3066\u5bfe\u5fdc\u3067\u304d\u307e\u3059\u3002<\/td>\n            <\/tr>\n            <tr class=\"rung\">\n              <th>\u6ce2\u30c0\u30c3\u30b7\u30e5\u306e\u7d71\u4e00<\/th>\n              <td>\u6df7\u5728\u3057\u304c\u3061\u306a\u6ce2\u30c0\u30c3\u30b7\u30e5 <code>\u301c<\/code>(U+301C) \u3092\u3001Web\u8868\u793a\u3067\u5b89\u5b9a\u3059\u308b <code>\uff5e<\/code>(U+FF5E) \u306b\u7d71\u4e00\u3057\u307e\u3059\u3002<\/td>\n            <\/tr>\n            <tr class=\"rung\">\n              <th>\u30b9\u30da\u30fc\u30b9\u8a70\u3081<\/th>\n              <td>PDF\u3084MarkItDown\u5909\u63db\u3067\u5165\u308a\u304c\u3061\u306a\u300c<b class=\"fw-600\">\u534a\u89d2\u6570\u5b57\u3068\u65e5\u672c\u8a9e\u306e\u9593\u306e\u534a\u89d2\u30b9\u30da\u30fc\u30b9<\/b>\u300d\u3092\u8a70\u3081\u307e\u3059\uff08<code>\u4ee4\u548c 9 \u5e74\u5ea6<\/code>\u2192<code>\u4ee4\u548c9\u5e74\u5ea6<\/code>\uff09\u3002<\/td>\n            <\/tr>\n          <\/tbody>\n        <\/table>\n\n        <hr class=\"separator my-1.5r\">\n\n        <!-- \u4e3b\u306a\u5909\u63db\u30aa\u30d7\u30b7\u30e7\u30f3 -->\n        <h5 class=\"hdg-subexplanation fz-rg mb-0.5r\">\u2699\ufe0f \u4e3b\u306a\u5909\u63db\u30aa\u30d7\u30b7\u30e7\u30f3\uff08\u5168\u89d2\u30fb\u534a\u89d2\uff09<\/h5>\n        <table class=\"table tbl-responsive fz-ss mb-1.5r\">\n          <thead>\n            <tr class=\"rung\">\n              <th style=\"min-width:13em;\">\u30aa\u30d7\u30b7\u30e7\u30f3<\/th>\n              <td>\u8aac\u660e\u30fb\u4f8b<\/td>\n            <\/tr>\n          <\/thead>\n          <tbody>\n            <tr class=\"rung\">\n              <th>\u5168\u89d2\u6570\u5b57 \u2192 \u534a\u89d2\u6570\u5b57<\/th>\n              <td>\u5168\u89d2\u306e\u6570\u5b57\u3092\u3059\u3079\u3066\u534a\u89d2\u3078\u3002<code>\uff12\uff10\uff12\uff14<\/code>\u2192<code>2024<\/code><\/td>\n            <\/tr>\n            <tr class=\"rung\">\n              <th>\u5358\u72ec\u534a\u89d2\u6570\u5b57 \u2192 \u5168\u89d2\u6570\u5b57<\/th>\n              <td><b class=\"fw-600\">\u5358\u72ec\u306e<\/b>\u534a\u89d2\u6570\u5b57\u3060\u3051\u5168\u89d2\u3078\uff08\u524d\u5f8c\u304c\u534a\u89d2\u306e\u9023\u756a\u30fb\u578b\u756a\u306f\u5bfe\u8c61\u5916\uff09\u3002<code>\u7b2c3\u6761<\/code>\u2192<code>\u7b2c\uff13\u6761<\/code>\u3002\u884c\u982d\u306e<b class=\"fw-600\">\u30ea\u30b9\u30c8\u30de\u30fc\u30ab\u30fc <code>1. <\/code><\/b>\uff08\u30c9\u30c3\u30c8\uff0b\u534a\u89d2\u30b9\u30da\u30fc\u30b9\uff09\u3082\u5bfe\u8c61\u3067\u3001<code>version 3.1.4<\/code> \u306f\u8aa4\u5909\u63db\u3057\u307e\u305b\u3093\u3002<\/td>\n            <\/tr>\n            <tr class=\"rung\">\n              <th>\u5168\u89d2\u82f1\u5b57 \u2192 \u534a\u89d2\u82f1\u5b57<\/th>\n              <td>\u5168\u89d2\u306e\u82f1\u5b57\u3092\u534a\u89d2\u3078\u3002<code>\uff2c\uff24\uff2b<\/code>\u2192<code>LDK<\/code><\/td>\n            <\/tr>\n            <tr class=\"rung\">\n              <th>\u5358\u72ec\u534a\u89d2\u82f1\u5b57 \u2192 \u5168\u89d2\u82f1\u5b57<\/th>\n              <td>\u5358\u72ec\u306e\u534a\u89d2\u82f1\u5b57\u3060\u3051\u5168\u89d2\u3078\uff08<code>iPhone<\/code> \u306a\u3069\u9023\u7d9a\u8a9e\u306f\u5bfe\u8c61\u5916\uff09\u3002<\/td>\n            <\/tr>\n            <tr class=\"rung\">\n              <th>\u5168\u89d2\u8a18\u53f7 <code>[\u6307\u5b9a]<\/code> \u2192 \u534a\u89d2<\/th>\n              <td>\u5165\u529b\u6b04\u306b\u6307\u5b9a\u3057\u305f\u5168\u89d2\u8a18\u53f7\u3092\u534a\u89d2\u3078\uff08\u7121\u6761\u4ef6\uff09\u3002\u521d\u671f\u5024 <code>\uffe5\uff03\uff04\uff05<\/code>\u3002<code>69\uff05<\/code>\u2192<code>69%<\/code><\/td>\n            <\/tr>\n            <tr class=\"rung\">\n              <th>\u534a\u89d2\u8a18\u53f7 <code>[\u6307\u5b9a]<\/code> \u2192 \u5168\u89d2<\/th>\n              <td>\u5165\u529b\u6b04\u306b\u6307\u5b9a\u3057\u305f\u534a\u89d2\u8a18\u53f7\u3092\u5168\u89d2\u3078\uff08\u5358\u72ec\u5224\u5b9a\u3064\u304d\uff09\u3002\u521d\u671f\u5024 <code>\uff65\uff64\uff61\uff70\uff9e\uff9f\uff62\uff63()<\/code>\u3002<code>(\u7537\u60272\u4eba)<\/code>\u2192<code>\uff08\u7537\u60272\u4eba\uff09<\/code><\/td>\n            <\/tr>\n            <tr class=\"rung\">\n              <th>\u6ce2\u30c0\u30c3\u30b7\u30e5\u3092\u7d71\u4e00<\/th>\n              <td><code>\u301c<\/code>(U+301C) \u2192 <code>\uff5e<\/code>(U+FF5E)<\/td>\n            <\/tr>\n            <tr class=\"rung\">\n              <th>\u6570\u5b57\u3068\u65e5\u672c\u8a9e\u306e\u9593\u306e<br>\u30b9\u30da\u30fc\u30b9\u3092\u8a70\u3081\u308b<\/th>\n              <td><code>8 \u540d\u7a0b\u5ea6<\/code>\u2192<code>8\u540d\u7a0b\u5ea6<\/code>\u3001<code>2024 \u5e74 4 \u6708 2 \u65e5<\/code>\u2192<code>2024\u5e744\u67082\u65e5<\/code><\/td>\n            <\/tr>\n          <\/tbody>\n        <\/table>\n        <p class=\"fz-ss mb-1r c-base-600\">\n          \u203b \u3053\u306e\u307b\u304b\u3001\u30c6\u30b9\u30c8\u7528\u30c7\u30fc\u30bf\u4f5c\u6210\u306e\u305f\u3081\u306e\u300c\u6570\u5b57 \u2192 \u30e9\u30f3\u30c0\u30e0\u306a\u6570\u5b57\u300d\uff08<b class=\"fw-600\">\u5e74\u6708\u65e5\u306f\u73fe\u5b9f\u7684\u306a\u7bc4\u56f2\u3092\u4fdd\u6301<\/b>\uff09\u3084\u3001HTML\u30bf\u30b0\u9664\u53bb\u30fb\u6539\u884c\u6574\u7406\u306a\u3069\u306e\u88dc\u52a9\u30aa\u30d7\u30b7\u30e7\u30f3\u3082\u642d\u8f09\u3057\u3066\u3044\u307e\u3059\u3002\n        <\/p>\n\n        <hr class=\"separator my-1.5r\">\n\n        <!-- \u6d3b\u7528\u4f8b -->\n        <h5 class=\"hdg-subexplanation fz-rg mb-0.5r\">\ud83c\udfaf \u6d3b\u7528\u4f8b<\/h5>\n        <table class=\"table tbl-responsive fz-ss mb-1.5r\">\n          <thead>\n            <tr class=\"rung\">\n              <th style=\"min-width:10em;\">\u30b7\u30fc\u30f3<\/th>\n              <td>\u4f7f\u3044\u65b9<\/td>\n            <\/tr>\n          <\/thead>\n          <tbody>\n            <tr class=\"rung\">\n              <th>\u6821\u6b63\u30fb\u8868\u8a18\u3086\u308c\u306e\u4fee\u6b63<\/th>\n              <td>\u6821\u6b63\u30ec\u30dd\u30fc\u30c8\u3067\u6307\u6458\u3055\u308c\u304c\u3061\u306a\u300c<code>\uff1760.38\u33a1<\/code>\u300d\u300c<code>4\uff2c\uff24\uff2b<\/code>\u300d\u306a\u3069\u306e<b class=\"fw-600\">\u5168\u89d2\u6df7\u5165<\/b>\u3084\u3001\u6ce2\u30c0\u30c3\u30b7\u30e5\uff08<code>\u301c<\/code>\uff0f<code>\uff5e<\/code>\uff09\u306e\u4e0d\u4e00\u81f4\u3092\u3001\u30c6\u30ad\u30b9\u30c8\u3092\u8cbc\u3063\u3066\u4e00\u62ec\u3067\u7d71\u4e00\u3067\u304d\u307e\u3059\u3002<\/td>\n            <\/tr>\n            <tr class=\"rung\">\n              <th>PDF\uff0fMarkItDown\u7531\u6765\u306e\u6574\u5f62<\/th>\n              <td>PDF\u304b\u3089\u62bd\u51fa\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u3067\u3001<b class=\"fw-600\">\u6570\u5b57\u3068\u65e5\u672c\u8a9e\u306e\u9593\u306b\u5165\u3063\u305f\u4f59\u5206\u306a\u534a\u89d2\u30b9\u30da\u30fc\u30b9<\/b>\u3092\u8a70\u3081\u3066\u8aad\u307f\u3084\u3059\u304f\u3057\u307e\u3059\u3002<\/td>\n            <\/tr>\n            <tr class=\"rung\">\n              <th>\u5b57\u5e45\u3092\u63c3\u3048\u305f\u3044\u8868\u30fb\u30ea\u30b9\u30c8<\/th>\n              <td>\u65e5\u4ed8\u3084\u7b87\u6761\u66f8\u304d\u306e\u982d\u6587\u5b57\u306a\u3069\u3067\u3001<b class=\"fw-600\">\u5358\u72ec\u306e\u534a\u89d2\u6570\u5b57\u30fb\u82f1\u5b57\u3060\u3051\u3092\u5168\u89d2\u5316<\/b>\u3057\u3066\u5b57\u5e45\u3092\u63c3\u3048\u3089\u308c\u307e\u3059\uff08\u578b\u756a\u30fbURL\u306f\u5d29\u3055\u306a\u3044\uff09\u3002<\/td>\n            <\/tr>\n            <tr class=\"rung\">\n              <th>\u30b5\u30f3\u30d7\u30eb\u30fb\u30c6\u30b9\u30c8\u30c7\u30fc\u30bf\u4f5c\u6210<\/th>\n              <td>\u300c\u6570\u5b57 \u2192 \u30e9\u30f3\u30c0\u30e0\u306a\u6570\u5b57\u300d\u3067\u3001\u5b9f\u30c7\u30fc\u30bf\u306e\u6570\u5024\u3092\u4f0f\u305b\u305f\u30b5\u30f3\u30d7\u30eb\u3092\u4f5c\u6210\u3002<b class=\"fw-600\">\u5e74\u6708\u65e5\u306f\u73fe\u5b9f\u7684\u306a\u7bc4\u56f2<\/b>\u306b\u53ce\u307e\u308b\u306e\u3067\u3001\u65e5\u4ed8\u304c\u7834\u7dbb\u3057\u307e\u305b\u3093\u3002<\/td>\n            <\/tr>\n          <\/tbody>\n        <\/table>\n\n      <\/div><!-- \/\/\/.box -->\n    <\/div><!-- \/\/\/.interior -->\n  <\/section><!-- \/\/\/.section -->\n\n\n  <!-- \u0f3b\u00a7\ud835\udc03\ud835\udc04\ud835\udc0f\ud835\udc00\ud835\udc11\ud835\udc13\ud835\udc0c\ud835\udc04\ud835\udc0d\ud835\udc13\u0f3a -->\n  <hr id=\"ch-Relation\" anchor \/>\n  <section class=\"sect-cnvtVkaA-Relation pt-3r\">\n    <div class=\"section__interior mx-auto scroll-fadeIn\">\n      <div class=\"hgroup-wrapper mb-0.5pc\">\n        <h5 class=\"hdg-relation fz-rg\"><span>\u95a2\u9023\u30c4\u30fc\u30eb<\/span><\/h5>\n      <\/div><!-- \/\/\/.hgroup -->\n\n      <ul class=\"shelf-wrapper_pc shelfA\" data-cols_pc=\"2\">\n        <li class=\"slide\">\n          <a href=\"https:\/\/code-plus.jp\/gp\/tools\/eyecatch-generator\/\" class=\"linkbox\">\n            <picture class=\"linkbox-thumbnail\">\n              <img decoding=\"async\" width=\"300\" height=\"200\" src=\"https:\/\/code-plus.jp\/gp\/wp-content\/uploads\/9f123ad809acd36a5d71db4bb292d52e.jpg?ver=20261027192352\" alt=\"\u30bf\u30a4\u30c8\u30eb\u4ed8\u304d\u306e\u30a2\u30a4\u30ad\u30e3\u30c3\u30c1\u753b\u50cf\u751f\u6210\u30c4\u30fc\u30eb\" loading=\"lazy\" \/>\n            <\/picture>\n            <h4 class=\"linkbox-title\">\u30bf\u30a4\u30c8\u30eb\u4ed8\u304d\u306e\u30a2\u30a4\u30ad\u30e3\u30c3\u30c1\u753b\u50cf\u751f\u6210\u30c4\u30fc\u30eb<\/h4>\n            <span class=\"linkbox-excerpt\">\n              \u30c6\u30ad\u30b9\u30c8\u3092\u753b\u50cf\u306b\u5909\u63db\u3002SNS\u6295\u7a3f\u3001\u30d0\u30ca\u30fc\u4f5c\u6210\u306b\u6700\u9069\u3002\n              <u class=\"linkbox-more\">\u7d9a\u304d\u3092\u8aad\u3080<\/u>\n            <\/span>\n          <\/a>\n        <\/li>\n        <li class=\"slide\">\n          <a href=\"https:\/\/code-plus.jp\/gp\/tools\/updatetags-converter\/\" class=\"linkbox\">\n            <picture class=\"linkbox-thumbnail\">\n              <img decoding=\"async\" width=\"300\" height=\"200\" src=\"https:\/\/code-plus.jp\/gp\/wp-content\/uploads\/70f9700c6f6883a60f60277286884e28.png?ver=20261027192352\" alt=\"HTML\u30bf\u30b0\u4e00\u62ec\u5909\u63db\u30c4\u30fc\u30eb\" loading=\"lazy\" \/>\n            <\/picture>\n            <h4 class=\"linkbox-title\">HTML\u30bf\u30b0\u4e00\u62ec\u5909\u63db\u30c4\u30fc\u30eb<\/h4>\n            <span class=\"linkbox-excerpt\">\n              \u6307\u5b9a\u306eHTML\u30bf\u30b0\u3092\u4efb\u610f\u306e\u30bf\u30b0\u306b\u4e00\u62ec\u5909\u63db\u3002div\u2192section\u3001span\u2192em\u306a\u3069\u3002\n              <u class=\"linkbox-more\">\u7d9a\u304d\u3092\u8aad\u3080<\/u>\n            <\/span>\n          <\/a>\n        <\/li>\n      <\/ul><!-- \/\/\/.shelf -->\n    <\/div><!-- \/\/\/.interior -->\n  <\/section><!-- \/\/\/.section -->\n\n\n\n\n  <!-- \u0f3b.mediano\uff08\u4f59\u767d\u8abf\u6574\uff1apage\u4e0b\uff09\u0f3a -->\n  <hr class=\"spacer-mediano\" \/>\n\n<\/div><!-- \/\/\/\u25b2.page  -->\n\n\n\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/marked\/marked.min.js\"><\/script>\n<script src=\"https:\/\/unpkg.com\/turndown\/dist\/turndown.js\"><\/script>\n<script>\n  \/\/\u5de6\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2 \u2192 \u53f3\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u3078\u306e\u5909\u63db\n  \/\/ \u2605\u30a8\u30e9\u30fc\u53ef\u8996\u5316\u30e9\u30c3\u30d1\u30fc\u2605\n  \/\/ \u5909\u63db\u4e2d\u306b\u4f8b\u5916\u304c\u8d77\u304d\u3066\u3082\u300c\u7121\u53cd\u5fdc\u300d\u306b\u306a\u3089\u305a\u3001\u53f3\u30a8\u30ea\u30a2\u306b\u30a8\u30e9\u30fc\u5185\u5bb9\u3092\u8868\u793a\u3059\u308b\u3002\n  function encodeText() {\n    try {\n      return _encodeTextImpl();\n    } catch (e) {\n      var out = document.getElementById('decodeArea');\n      if (out) {\n        out.value = '\u26a0 \u5909\u63db\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\\n\\n' +\n          (e && e.message ? e.message : e) + '\\n\\n' +\n          (e && e.stack ? e.stack : '');\n      }\n      if (typeof console !== 'undefined' && console.error) console.error(e);\n    }\n  }\n\n  function _encodeTextImpl() {\n    let encode_area = document.getElementById('encodeArea');\n    let decode_area = document.getElementById('decodeArea');\n    let text = encode_area.value;\n\n    \/\/ \u2605\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u4fdd\u8b77\u2605\n    \/\/ Markdown\u306e\u30d5\u30a7\u30f3\u30b9\u30c9\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\uff08```\uff5e```\uff09\u3068 \u30a4\u30f3\u30e9\u30a4\u30f3\u30b3\u30fc\u30c9\uff08`\uff5e`\uff09\u3092\n    \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306b\u9000\u907f\u3057\u3001\u4ee5\u964d\u306e\u5909\u63db\u51e6\u7406\u304b\u3089\u4fdd\u8b77\u3059\u308b\u3002\n    \/\/ \u6700\u5f8c\u306bHTML\u30a8\u30b9\u30b1\u30fc\u30d7\u6e08\u307f\u306e <pre><code> \/ <code> \u306b\u623b\u3059\u3002\n    const codeBlockStore = [];\n    text = protectCodeBlocks(text, codeBlockStore);\n\n    \/\/ \u2605\u30ea\u30f3\u30af\u7cfb\u30b7\u30e7\u30fc\u30c8\u30b3\u30fc\u30c9\u4fdd\u8b77\u2605\uff08\u672c\u6587\u4e2d\u306e\u751f\u30b7\u30e7\u30fc\u30c8\u30b3\u30fc\u30c9\u3092 marked \u304b\u3089\u5b88\u308b\uff09\n    const shortcodeStore = [];\n    text = protectShortcodes(text, shortcodeStore);\n\n    \/\/ \u30c4\u30ea\u30fc\u5909\u63db\u3068\u30d1\u30a4\u30d7\u2192\u7f6b\u7dda\u56f2\u307f\u5909\u63db\u306fMarkdown\u5909\u63db\u3088\u308a\u524d\u306b\u5b9f\u884c\n    if (document.getElementById('convertList2Trees').checked) { text = convertList2Trees(text); }\n    if (document.getElementById('convertPipe2Bounds').checked) { text = convertPipe2Bounds(text); }\n\n\n    \/\/ Markdown\u5909\u63db\u4ee5\u964d\uff1a\n    if (document.getElementById('convertMd2Html').checked) { text = convertMd2Html(text); }\n\n\n    \/\/ \u533a\u5207\u308a\u6587\u5b57\u3092 | \u306b\u7d71\u4e00\uff08\u30c6\u30fc\u30d6\u30eb\u30fbDL\u5909\u63db\u524d\u306b\u5b9f\u884c\uff09\n    const useDl = document.getElementById('convertTagDelines').checked;\n    const useTable = document.getElementById('convertTagTables').checked;\n    if (useDl) {\n      const dlDelimiter = document.getElementById('targetDelimiterDl').value;\n      if (dlDelimiter && dlDelimiter !== '|') { text = replaceDelimiter(text, dlDelimiter); }\n    }\n    if (useTable) {\n      const tableDelimiter = document.getElementById('targetDelimiterTable').value;\n      if (tableDelimiter && tableDelimiter !== '|') { text = replaceDelimiter(text, tableDelimiter); }\n    }\n\n\n    \/\/ \u30bb\u30eb\u7d50\u5408\uff1a\u30d1\u30a4\u30d7\u30c6\u30fc\u30d6\u30eb\u5185\u306e < > ^ \u3092\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306b\u7f6e\u63db\uff08HTML\u5909\u63db\u524d\u306b\u5b9f\u884c\uff09\n    const useMergeCells = document.getElementById('mergeCells').checked;\n    if (useMergeCells) { text = preMergeCells(text); }\n\n    if (useDl) { text = convertTagDelines(text); }\n    if (useTable) { text = convertTagTables(text); }\n    if (document.getElementById('convertTagTd2Ths').checked) { text = convertTagTd2Ths(text); }\n\n    \/\/ \u30bb\u30eb\u7d50\u5408\uff1a\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u3092\u691c\u51fa\u3057\u3066colspan\/rowspan\u3092\u9069\u7528\uff08HTML\u5909\u63db\u5f8c\u306b\u5b9f\u884c\uff09\n    if (useMergeCells) { text = mergeCells(text); }\n\n    if (document.getElementById('encloseTagImgPictures').checked) { text = encloseTagImgPictures(text); }\n    if (document.getElementById('convertTagBreaksInP').checked) { text = convertTagBreaksInP(text); }\n\n    if (document.getElementById('convertUListStyles').checked ||\n      document.getElementById('convertOListStyles').checked) { text = convertListStyles(text); }\n\n    if (document.getElementById('removeTags').checked) { text = removeTags(text); }\n    if (document.getElementById('removeLineBreaks').checked) { text = removeLineBreaks(text); }\n    if (document.getElementById('adjustLineBreaks').checked) { text = adjustLineBreaks(text); }\n    if (document.getElementById('convertTagBreaks').checked) { text = convertTagBreaks(text); }\n    if (document.getElementById('convertNspacesTabs').checked) { text = convertNspacesTabs(text); }\n    if (document.getElementById('convertNthBreak2Tabs').checked) { text = convertNthBreak2Tabs(text); }\n    if (document.getElementById('convertEntityAmps').checked) { text = convertEntityAmps(text); }\n    if (document.getElementById('convertEntityNewLines').checked) { text = convertEntityNewLines(text); }\n    if (document.getElementById('convertEntityTabs').checked) { text = convertEntityTabs(text); }\n    if (document.getElementById('convertEntityLtGts').checked) { text = convertEntityLtGts(text); }\n    if (document.getElementById('convertEntitySqbs').checked) { text = convertEntitySqbs(text); }\n    if (document.getElementById('convertEntityPars').checked) { text = convertEntityPars(text); }\n    if (document.getElementById('convertEntityCubs').checked) { text = convertEntityCubs(text); }\n    if (document.getElementById('convertEntityQuots').checked) { text = convertEntityQuots(text); }\n    if (document.getElementById('convertEntityAposs').checked) { text = convertEntityAposs(text); }\n    if (document.getElementById('convertEntityGraves').checked) { text = convertEntityGraves(text); }\n    if (document.getElementById('convertFullWidths').checked) { text = convertFullWidths(text); }\n    if (document.getElementById('convertAlphaUppers').checked) { text = convertAlphaUppers(text); }\n    if (document.getElementById('convertAlphaLowers').checked) { text = convertAlphaLowers(text); }\n    if (document.getElementById('convertNumber0s').checked) { text = convertNumber0s(text); }\n    if (document.getElementById('convertNumberRandoms').checked) { text = convertNumberRandoms(text); }\n    if (document.getElementById('convertTrimSpaceNumJp').checked) { text = convertTrimSpaceNumJp(text); }\n    if (document.getElementById('convertWaveDash').checked) { text = convertWaveDash(text); }\n    if (document.getElementById('convertHalfSymbols').checked) { text = convertHalfSymbols(text, document.getElementById('halfSymbolChars').value); }\n    if (document.getElementById('convertFullSymbols').checked) { text = convertFullSymbols(text, document.getElementById('fullSymbolChars').value); }\n    if (document.getElementById('convertHalfNumbers').checked) { text = convertHalfNumbers(text); }\n    if (document.getElementById('convertFullNumbers').checked) { text = convertFullNumbers(text); }\n    if (document.getElementById('convertHalfAlphabets').checked) { text = convertHalfAlphabets(text); }\n    if (document.getElementById('convertFullAlphabets').checked) { text = convertFullAlphabets(text); }\n    if (document.getElementById('convertRenumbers').checked) { text = convertRenumbers(text); }\n    if (document.getElementById('removeMultiWords').checked) { text = removeMultiWords(text); }\n    if (document.getElementById('convertMultiWords').checked) { text = convertMultiWords(text); }\n\n    \/\/\u6307\u5b9a\u306e\u30bf\u30b0\u3092 \u2192 \u4efb\u610f\u306e\u30bf\u30b0 \u306b\u5909\u63db\n    if (document.getElementById('convertUpdateTag1s').checked ||\n      document.getElementById('convertUpdateTag2s').checked ||\n      document.getElementById('convertUpdateTag3s').checked ||\n      document.getElementById('convertUpdateTag4s').checked ||\n      document.getElementById('convertUpdateTag5s').checked) {\n      text = processAllTagUpdates(text);\n    }\n\n    \/\/\u6307\u5b9a\u306e\u30bf\u30b0\u306b\u3001\u4efb\u610f\u306e\u30af\u30e9\u30b9\u3092\u8ffd\u52a0\n    if (document.getElementById('convertAddClase1s').checked ||\n      document.getElementById('convertAddClase11s').checked ||\n      document.getElementById('convertAddClase12s').checked ||\n      document.getElementById('convertAddClase13s').checked ||\n      document.getElementById('convertAddClase14s').checked ||\n      document.getElementById('convertAddClase15s').checked ||\n      document.getElementById('convertAddClase16s').checked ||\n      document.getElementById('convertAddClase17s').checked ||\n      document.getElementById('convertAddClase18s').checked ||\n      document.getElementById('convertAddClase19s').checked ||\n      document.getElementById('convertAddClase20s').checked ||\n      document.getElementById('convertAddClase21s').checked ||\n      document.getElementById('convertAddClase31s').checked ||\n      document.getElementById('convertAddClase32s').checked ||\n      document.getElementById('convertAddClase33s').checked ||\n      document.getElementById('convertAddClase34s').checked) {\n      text = processAllTagClasses(text);\n    }\n\n    \/\/ \u2605\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u5fa9\u5143\u2605\n    \/\/ \u9000\u907f\u3057\u3066\u3044\u305f\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u3092 <pre><code> \/ <code> \u306b\u623b\u3059\n    text = restoreCodeBlocks(text, codeBlockStore);\n\n    \/\/ \u2605\u30ea\u30f3\u30af\u7cfb\u30b7\u30e7\u30fc\u30c8\u30b3\u30fc\u30c9\u5fa9\u5143\u2605\uff08\u539f\u6587\u306e\u307e\u307e\u623b\u3059\uff09\n    text = restoreShortcodes(text, shortcodeStore);\n\n    decode_area.value = text;\n    copyToClipboard(text, false);  \/\/isDecode = false\n  }\n\n\n\n\n  \/\/+\u8a18\u53f7\u306e\u30ea\u30b9\u30c8\u5f62\u5f0f\u3092 \u2192 \u30c4\u30ea\u30fc\u5f62\u5f0f\u306b\u5909\u63db\n  function convertList2Trees(text) {\n    const lines = text.split('\\n');\n    const result = [];\n    const stack = []; \/\/ \u5404\u968e\u5c64\u3067\u300c\u307e\u3060\u5f8c\u7d9a\u8981\u7d20\u304c\u3042\u308b\u304b\u300d\u3092\u7ba1\u7406\n\n    for (let i = 0; i < lines.length; i++) {\n      const line = lines[i].trim();\n\n      \/\/ \u7a7a\u884c\u306f\u305d\u306e\u307e\u307e\u51fa\u529b\n      if (line === '') {\n        result.push('');\n        continue;\n      }\n\n      \/\/ + \u3067\u59cb\u307e\u308b\u884c\u3092\u691c\u51fa\uff08\u30b9\u30da\u30fc\u30b9\/\u30bf\u30d6\u3092\u542b\u3080\u53ef\u80fd\u6027\u3082\u8003\u616e\uff09\n      const match = line.match(\/^\\s*(\\+{1,6})\\s+(.+)$\/);\n      if (!match) {\n        result.push(line);\n        continue;\n      }\n\n      const plusCount = match[1].length; \/\/ + \u306e\u6570\u3067\u968e\u5c64\u30ec\u30d9\u30eb\u3092\u5224\u5b9a\n      const content = match[2].trim();\n\n      \/\/ \u73fe\u5728\u306e\u30ec\u30d9\u30eb\u3088\u308a\u6df1\u3044\u30b9\u30bf\u30c3\u30af\u8981\u7d20\u3092\u524a\u9664\n      while (stack.length >= plusCount) {\n        stack.pop();\n      }\n\n      \/\/ \u6b21\u306e\u540c\u3058\u30ec\u30d9\u30eb\u4ee5\u4e0a\u306e\u884c\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3001\u3053\u308c\u304c\u6700\u5f8c\u306e\u8981\u7d20\u304b\u3069\u3046\u304b\u5224\u5b9a\n      let isLastInLevel = true;\n      for (let j = i + 1; j < lines.length; j++) {\n        const nextLine = lines[j].trim();\n        if (nextLine === '') continue; \/\/ \u7a7a\u884c\u306f\u7121\u8996\n\n        const nextMatch = nextLine.match(\/^\\s*(\\+{1,6})\\s+(.+)$\/);\n        if (nextMatch) {\n          const nextPlusCount = nextMatch[1].length;\n          if (nextPlusCount === plusCount) {\n            \/\/ \u540c\u3058\u30ec\u30d9\u30eb\u306e\u8981\u7d20\u304c\u898b\u3064\u304b\u3063\u305f\n            isLastInLevel = false;\n            break;\n          }\n          if (nextPlusCount < plusCount) {\n            \/\/ \u3088\u308a\u6d45\u3044\u30ec\u30d9\u30eb\u306e\u8981\u7d20\u304c\u898b\u3064\u304b\u3063\u305f\uff08\u3053\u308c\u3067\u7d42\u308f\u308a\uff09\n            break;\n          }\n          \/\/ \u3088\u308a\u6df1\u3044\u30ec\u30d9\u30eb\u306e\u8981\u7d20\u306f\u7121\u8996\u3057\u3066\u7d99\u7d9a\n        } else {\n          \/\/ + \u3067\u59cb\u307e\u3089\u306a\u3044\u884c\u304c\u898b\u3064\u304b\u3063\u305f\n          break;\n        }\n      }\n\n      \/\/ \u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u69cb\u7bc9\uff08\u968e\u5c64\u3054\u3068\u306e\u7e26\u7dda\uff09\n      let prefix = '';\n      for (let level = 1; level < plusCount; level++) {\n        if (stack[level - 1]) {\n          prefix += '\u2502    ';\n        } else {\n          prefix += '    ';\n        }\n      }\n\n      \/\/ \u73fe\u5728\u306e\u884c\u306e\u30b3\u30cd\u30af\u30bf\uff08\u679d\uff09\u3092\u8ffd\u52a0\n      const connector = isLastInLevel ? '\u2514\u2500 ' : '\u251c\u2500 ';\n\n      \/\/ \u30b9\u30bf\u30c3\u30af\u306b\u73fe\u5728\u306e\u72b6\u614b\u3092\u8a18\u9332\n      stack[plusCount - 1] = !isLastInLevel;\n\n      \/\/ \u7d50\u679c\u306b\u8ffd\u52a0\n      if (plusCount === 1) {\n        \/\/ \u7b2c1\u968e\u5c64\u306f\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u306a\u3057\n        result.push(content);\n      } else {\n        result.push(prefix + connector + content);\n      }\n    }\n\n    return result.join('\\n');\n  }\n\n\n\n\n  \/\/\u30d1\u30a4\u30d7(|)\u30ea\u30b9\u30c8\u3092 \u2192 \u7f6b\u7dda\u56f2\u307f\u306b\u5909\u63db\n  function convertPipe2Bounds(text) {\n    const lines = text.split('\\n');\n    const parsedLines = [];\n\n    \/\/ \u5404\u884c\u3092\u89e3\u6790\n    for (const line of lines) {\n      const trimmed = line.trim();\n      if (trimmed === '') {\n        parsedLines.push({ level: 0, content: '', isEmpty: true });\n        continue;\n      }\n\n      \/\/ \u30d1\u30a4\u30d7\u3067\u59cb\u307e\u308b\u884c\u3092\u691c\u51fa\n      const match = trimmed.match(\/^(\\|+)\\s*(.*)$\/);\n      if (match) {\n        const level = match[1].length;\n        const content = match[2];\n        parsedLines.push({ level, content, isEmpty: false });\n      } else {\n        parsedLines.push({ level: 0, content: trimmed, isEmpty: false });\n      }\n    }\n\n    \/\/ \u968e\u5c64\u30b0\u30eb\u30fc\u30d7\u3092\u69cb\u7bc9\n    const groups = buildHierarchicalGroups(parsedLines);\n\n    \/\/ \u7f6b\u7dda\u3067\u56f2\u3093\u3060\u30c6\u30ad\u30b9\u30c8\u3092\u751f\u6210\n    return renderBoxes(groups);\n  }\n\n  \/\/ \u968e\u5c64\u30b0\u30eb\u30fc\u30d7\u3092\u69cb\u7bc9\n  function buildHierarchicalGroups(parsedLines) {\n    const result = [];\n    let i = 0;\n\n    while (i < parsedLines.length) {\n      const line = parsedLines[i];\n\n      if (line.isEmpty || line.level === 0) {\n        result.push(line);\n        i++;\n        continue;\n      }\n\n      \/\/ \u540c\u3058\u30ec\u30d9\u30eb\u307e\u305f\u306f\u3088\u308a\u6df1\u3044\u30ec\u30d9\u30eb\u306e\u30b0\u30eb\u30fc\u30d7\u3092\u53ce\u96c6\n      const group = { level: line.level, items: [] };\n      const startLevel = line.level;\n\n      while (i < parsedLines.length) {\n        const current = parsedLines[i];\n\n        if (current.isEmpty) {\n          i++;\n          continue;\n        }\n\n        if (current.level === 0 || current.level < startLevel) {\n          break;\n        }\n\n        if (current.level === startLevel) {\n          group.items.push({ content: current.content, children: [] });\n          i++;\n\n          \/\/ \u5b50\u8981\u7d20\u3092\u30c1\u30a7\u30c3\u30af\n          const lastItem = group.items[group.items.length - 1];\n          while (i < parsedLines.length && parsedLines[i].level > startLevel) {\n            const child = parsedLines[i];\n            if (child.isEmpty) {\n              i++;\n              continue;\n            }\n\n            \/\/ \u5b50\u30b0\u30eb\u30fc\u30d7\u3092\u518d\u5e30\u7684\u306b\u69cb\u7bc9\n            const childGroup = buildChildGroup(parsedLines, i, startLevel + 1);\n            if (childGroup.consumed > 0) {\n              lastItem.children.push(childGroup.group);\n              i += childGroup.consumed;\n            } else {\n              break;\n            }\n          }\n        } else {\n          i++;\n        }\n      }\n\n      if (group.items.length > 0) {\n        result.push(group);\n      }\n    }\n\n    return result;\n  }\n\n  \/\/ \u5b50\u30b0\u30eb\u30fc\u30d7\u3092\u69cb\u7bc9\n  function buildChildGroup(parsedLines, startIndex, expectedLevel) {\n    const group = { level: expectedLevel, items: [] };\n    let i = startIndex;\n\n    while (i < parsedLines.length) {\n      const current = parsedLines[i];\n\n      if (current.isEmpty) {\n        i++;\n        continue;\n      }\n\n      if (current.level < expectedLevel) {\n        break;\n      }\n\n      if (current.level === expectedLevel) {\n        group.items.push({ content: current.content, children: [] });\n        i++;\n\n        \/\/ \u3055\u3089\u306b\u6df1\u3044\u5b50\u8981\u7d20\u3092\u30c1\u30a7\u30c3\u30af\n        const lastItem = group.items[group.items.length - 1];\n        while (i < parsedLines.length && parsedLines[i].level > expectedLevel) {\n          const child = parsedLines[i];\n          if (child.isEmpty) {\n            i++;\n            continue;\n          }\n\n          const childGroup = buildChildGroup(parsedLines, i, expectedLevel + 1);\n          if (childGroup.consumed > 0) {\n            lastItem.children.push(childGroup.group);\n            i += childGroup.consumed;\n          } else {\n            break;\n          }\n        }\n      } else {\n        i++;\n      }\n    }\n\n    return { group, consumed: i - startIndex };\n  }\n\n  \/\/ \u30dc\u30c3\u30af\u30b9\u3092\u63cf\u753b\n  function renderBoxes(groups) {\n    const result = [];\n\n    for (const item of groups) {\n      if (item.isEmpty) {\n        result.push('');\n        continue;\n      }\n\n      if (item.level === 0) {\n        result.push(item.content);\n        continue;\n      }\n\n      \/\/ \u30b0\u30eb\u30fc\u30d7\u3092\u30dc\u30c3\u30af\u30b9\u3067\u56f2\u3080\n      const boxLines = renderGroup(item, 0);\n      result.push(...boxLines);\n    }\n\n    return result.join('\\n');\n  }\n\n  \/\/ \u30b0\u30eb\u30fc\u30d7\u3092\u63cf\u753b\n  function renderGroup(group, indent) {\n    const lines = [];\n    const prefix = '\u2502'.repeat(indent);\n\n    \/\/ \u6700\u5927\u5e45\u3092\u8a08\u7b97\n    let maxWidth = 0;\n    for (const item of group.items) {\n      const width = getTextWidth(item.content);\n      if (width > maxWidth) maxWidth = width;\n\n      \/\/ \u5b50\u8981\u7d20\u306e\u5e45\u3082\u8003\u616e\n      for (const child of item.children) {\n        const childWidth = calculateGroupWidth(child);\n        if (childWidth + 2 > maxWidth) maxWidth = childWidth + 2;\n      }\n    }\n\n    \/\/ \u7f6b\u7dda\u306e\u5e45\u3092\u534a\u5206\u306b\uff08\u534a\u89d22\u6587\u5b57\u306b\u3064\u304d\u7f6b\u7dda1\u3064\uff09\n    const boxWidth = Math.ceil(maxWidth \/ 2);\n\n    \/\/ \u4e0a\u90e8\u306e\u7f6b\u7dda\n    lines.push(prefix + '\u250c' + '\u2500'.repeat(boxWidth) + '\u2510');\n\n    \/\/ \u5404\u30a2\u30a4\u30c6\u30e0\u3092\u63cf\u753b\n    for (let i = 0; i < group.items.length; i++) {\n      const item = group.items[i];\n      \/\/ \u30d1\u30c7\u30a3\u30f3\u30b0\u3092\u8a08\u7b97\uff08\u7f6b\u7dda\u5e45\u306b\u5408\u308f\u305b\u3066\u8abf\u6574\uff09\n      const contentWidth = getTextWidth(item.content);\n      const padding = Math.max(0, boxWidth - Math.ceil(contentWidth \/ 2));\n      lines.push(prefix + '\u2502' + item.content + ' '.repeat(padding) + '\u2502');\n\n      \/\/ \u5b50\u8981\u7d20\u3092\u63cf\u753b\n      if (item.children.length > 0) {\n        for (const child of item.children) {\n          const childLines = renderGroup(child, indent + 1);\n          lines.push(...childLines);\n        }\n      }\n    }\n\n    \/\/ \u4e0b\u90e8\u306e\u7f6b\u7dda\n    lines.push(prefix + '\u2514' + '\u2500'.repeat(boxWidth) + '\u2518');\n\n    return lines;\n  }\n\n  \/\/ \u30c6\u30ad\u30b9\u30c8\u306e\u8868\u793a\u5e45\u3092\u8a08\u7b97\uff08\u5168\u89d2\u6587\u5b57\u306f2\u3001\u534a\u89d2\u6587\u5b57\u306f1\u3068\u3057\u3066\u8a08\u7b97\uff09\n  function getTextWidth(text) {\n    let width = 0;\n    for (const char of text) {\n      \/\/ \u5168\u89d2\u6587\u5b57\u306e\u5224\u5b9a\uff08\u7c21\u6613\u7248\uff09\n      if (char.match(\/[^\\x00-\\xff]\/)) {\n        width += 2;\n      } else {\n        width += 1;\n      }\n    }\n    return width;\n  }\n\n  \/\/ \u30b0\u30eb\u30fc\u30d7\u306e\u5e45\u3092\u8a08\u7b97\n  function calculateGroupWidth(group) {\n    let maxWidth = 0;\n\n    for (const item of group.items) {\n      const width = getTextWidth(item.content);\n      if (width > maxWidth) maxWidth = width;\n\n      for (const child of item.children) {\n        const childWidth = calculateGroupWidth(child) * 2; \/\/ \u5b50\u8981\u7d20\u306f2\u500d\u3057\u3066\u6bd4\u8f03\n        if (childWidth > maxWidth) maxWidth = childWidth;\n      }\n    }\n\n    \/\/ \u7f6b\u7dda\u5e45\u3092\u534a\u5206\u306b\u3059\u308b\u8a2d\u5b9a\u306b\u5408\u308f\u305b\u3066\u8abf\u6574\n    return Math.ceil((maxWidth + 4) \/ 2);\n  }\n\n\n\n\n\n  \/\/Markdown\u8a18\u6cd5\u3092 \u2192 HTML \u306b\u5909\u63db\n  \/\/ ============================================================\n  \/\/ \u2605\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u4fdd\u8b77\u6a5f\u69cb\u2605\uff08\u624b\u52d5\u30d1\u30fc\u30b5\u30fc\u7248\uff09\n  \/\/ GFM\/CommonMark \u4ed5\u69d8\u6e96\u62e0\uff1a\n  \/\/   - \u884c\u982d\u306e3\u9023\u4ee5\u4e0a\u306e\u30d0\u30c3\u30af\u30af\u30a9\u30fc\u30c8\u3067\u30d5\u30a7\u30f3\u30b9\u30c9\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u958b\u59cb\n  \/\/   - \u300c\u958b\u59cb\u3068\u540c\u6570\u4ee5\u4e0a\u306e\u300d\u30d0\u30c3\u30af\u30af\u30a9\u30fc\u30c8 + (\u6539\u884c or \u672b\u5c3e) \u3067\u9589\u3058\u308b\n  \/\/   - \u9589\u3058\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u306f\u30d5\u30a1\u30a4\u30eb\u672b\u5c3e\u307e\u3067\u3092\u4fdd\u8b77\u5bfe\u8c61\n  \/\/\n  \/\/ \u3053\u308c\u306b\u3088\u308a\u3001\u5916\u5074 ```` (4\u9023) ```` \u3067\u56f2\u307e\u308c\u305f\u4e2d\u306b ``` (3\u9023) \u3092\u542b\u3080\u30cd\u30b9\u30c8\u69cb\u9020\u3082\n  \/\/ \u6b63\u3057\u304f1\u3064\u306e\u30d6\u30ed\u30c3\u30af\u3068\u3057\u3066\u4fdd\u8b77\u3067\u304d\u308b\u3002\n  \/\/\n  \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306f\u82f1\u5927\u6587\u5b57\u306e\u307f\uff08XCBPX\uff09\u3092\u4f7f\u3044\u3001marked\u306e\u659c\u4f53(_x_)\u30fb\u592a\u5b57(__x__)\n  \/\/ \u306a\u3069\u306e\u8aa4\u8a8d\u8b58\u3092\u56de\u907f\u3059\u308b\u3002\n  \/\/ ============================================================\n  \/\/ ============================================================\n  \/\/  \u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u5185\u30a4\u30f3\u30c7\u30f3\u30c8\u6574\u5f62\uff08\u69cb\u9020\u30d9\u30fc\u30b9\u30fb\u8a00\u8a9e\u975e\u4f9d\u5b58\uff09\n  \/\/   {} \/ [] \/ HTML\u30bf\u30b0 \/ PHP\u5236\u5fa1\u69cb\u9020\uff08: ?> \u2026 <?php end\uff09\u306e\n  \/\/   \u958b\u9589\u3067\u5b57\u4e0b\u3052\u3092\u632f\u308a\u76f4\u3059\u3002\u30d1\u30fc\u30b5\u30fc\u3092\u4f7f\u308f\u306a\u3044\u306e\u3067\u58ca\u308c\u306b\u304f\u3044\u3002\n  \/\/   \u203b \u30a4\u30f3\u30c7\u30f3\u30c8\u304c\u610f\u5473\u3092\u6301\u3064\u8a00\u8a9e\uff08python\/yaml\uff09\u306f\u5bfe\u8c61\u5916\u3002\n  \/\/   \u203b ( ) \u306f\u8aa4\u7206\u56de\u907f\u306e\u305f\u3081\u5bfe\u8c61\u5916\u3002\n  \/\/ ============================================================\n  function reindentCodeBlock(code, lang) {\n    if (\/^(python|py|yaml|yml)$\/i.test((lang || '').trim())) return code;\n\n    const lines = code.split('\\n');\n    let depth = 0;\n    const out = [];\n\n    for (const raw of lines) {\n      const line = raw.replace(\/^[ \\t]+\/, '');   \/\/ \u884c\u982d\u306e\u5b57\u4e0b\u3052\u3092\u9664\u53bb\u3057\u3066\u632f\u308a\u76f4\u3057\uff08\u672c\u6587\u4e2d\u306e\u9023\u7d9a\u30b9\u30da\u30fc\u30b9\u63c3\u3048\u306f\u4fdd\u6301\uff09\n\n      if (line === '') { out.push(''); continue; }\n\n      \/\/ PHP\u30bf\u30b0\u30fbHTML\u30b3\u30e1\u30f3\u30c8\u3092\u9664\u3044\u305f\u7248\u3067\u62ec\u5f27\/\u30bf\u30b0\u3092\u30ab\u30a6\u30f3\u30c8\uff08\u8aa4\u30ab\u30a6\u30f3\u30c8\u9632\u6b62\uff09\n      const stripped = line\n        .replace(\/<\\?php[\\s\\S]*?\\?>\/g, '')\n        .replace(\/<\\?=[\\s\\S]*?\\?>\/g, '')\n        .replace(\/<\\?php[\\s\\S]*$\/g, '')\n        .replace(\/<!--[\\s\\S]*?-->\/g, '');\n\n      \/\/ PHP\u5236\u5fa1\u69cb\u9020\n      const isEnd = \/^<\\?php\\s+end\/i.test(line);\n      const isElse = \/^<\\?php\\s+(else|elseif)\\b\/i.test(line);\n      \/\/ \u4ee3\u66ff\u69cb\u6587\u306e\u958b\u59cb\uff1aif\/for\/foreach\/while\/switch \u3067\u59cb\u307e\u308a\u3001?> \u306e\u524d\u306b : \u304c\u3042\u308b\n      \/\/   \uff08\"... : ?>\" \u3060\u3051\u3067\u306a\u304f \"... : the_post(); ?>\" \u306e\u3088\u3046\u306a\u5f62\u3082\u62fe\u3046\uff09\n      const isCtrlOpen = \/^<\\?php\\s+(if|for|foreach|while|switch)\\b\/i.test(line)\n        && \/:\\s*[^?]*\\?>\\s*$\/.test(line);\n\n      \/\/ \u884c\u982d\u304c\u9589\u3058\u8a18\u53f7\uff08\u3053\u306e\u884c\u3060\u30511\u6bb5\u4e0b\u3052\u308b\uff09\n      const startsCloser = \/^[}\\]]\/.test(line) || \/^<\\\/\/.test(line) || isEnd || isElse;\n\n      const indent = Math.max(0, depth - (startsCloser ? 1 : 0));\n      out.push(indent > 0 ? '\\t'.repeat(indent) + line : line);\n\n      \/\/ \u6b21\u884c\u306b\u5411\u3051\u305f\u30cd\u30c3\u30c8\u5897\u6e1b\n      let net = 0;\n      net += (stripped.match(\/\\{\/g) || []).length - (stripped.match(\/\\}\/g) || []).length;\n      net += (stripped.match(\/\\[\/g) || []).length - (stripped.match(\/\\]\/g) || []).length;\n      const openTags = (stripped.match(\/<[a-zA-Z][^>]*>\/g) || []).filter(t => !\/\\\/>$\/.test(t));\n      const closeTags = (stripped.match(\/<\\\/[a-zA-Z][^>]*>\/g) || []);\n      net += openTags.length - closeTags.length;\n      if (isEnd) net -= 1;\n      else if (isCtrlOpen) net += 1;\n      \/\/ isElse \u306f net 0\uff08\u4e0b\u3052\u3066\u307e\u305f\u540c\u3058\u6df1\u3055\u306b\u623b\u308b\uff09\n\n      depth = Math.max(0, depth + net);\n    }\n    return out.join('\\n');\n  }\n\n\n  function protectCodeBlocks(text, store) {\n    let result = '';\n    let pos = 0;\n    const len = text.length;\n\n    while (pos < len) {\n      \/\/ \u884c\u982d\u5224\u5b9a\uff08pos=0\u3001\u307e\u305f\u306f\u76f4\u524d\u304c \\n\uff09\n      const atLineStart = (pos === 0) || (text.charAt(pos - 1) === '\\n');\n\n      if (atLineStart) {\n        \/\/ \u884c\u982d\u3067\u30d5\u30a7\u30f3\u30b9\u958b\u59cb\uff083\u9023\u4ee5\u4e0a\u306e\u30d0\u30c3\u30af\u30af\u30a9\u30fc\u30c8 + \u8a00\u8a9e\u6307\u5b9a + \u6539\u884c\uff09\u3092\u30c1\u30a7\u30c3\u30af\n        const rest = text.substring(pos);\n        const fenceMatch = rest.match(\/^(`{3,})([^\\n`]*)\\n\/);\n\n        if (fenceMatch) {\n          const fenceLen = fenceMatch[1].length;\n          const lang = fenceMatch[2].trim();\n          const contentStart = pos + fenceMatch[0].length;\n\n          \/\/ \u9589\u3058\u30d5\u30a7\u30f3\u30b9\uff08fenceLen\u500b\u4ee5\u4e0a\u306e\u30d0\u30c3\u30af\u30af\u30a9\u30fc\u30c8\u3001\u884c\u982d\u3001\u305d\u306e\u5f8c \\n \u307e\u305f\u306f\u672b\u5c3e\uff09\u3092\u63a2\u3059\n          \/\/ \u884c\u30d9\u30fc\u30b9\u3067\u8d70\u67fb\u3057\u3066\u3001\u30d5\u30a7\u30f3\u30b9\u306b\u30de\u30c3\u30c1\u3059\u308b\u884c\u3092\u898b\u3064\u3051\u308b\n          let contentEnd = len;\n          let blockEnd = len;\n          let scanPos = contentStart;\n\n          while (scanPos < len) {\n            \/\/ \u884c\u672b\u3092\u63a2\u3059\n            const nextNl = text.indexOf('\\n', scanPos);\n            const lineEnd = (nextNl === -1) ? len : nextNl;\n            const line = text.substring(scanPos, lineEnd);\n\n            \/\/ \u3053\u306e\u884c\u304c\u9589\u3058\u30d5\u30a7\u30f3\u30b9\u304b\u30c1\u30a7\u30c3\u30af\uff08\u884c\u5168\u4f53\u304c fenceLen\u500b\u4ee5\u4e0a\u306e\u30d0\u30c3\u30af\u30af\u30a9\u30fc\u30c8\u3001\u672b\u5c3e\u306e\u7a7a\u767d\u306f\u8a31\u5bb9\uff09\n            const closeMatch = line.match(\/^(`{3,})\\s*$\/);\n            if (closeMatch && closeMatch[1].length >= fenceLen) {\n              \/\/ \u9589\u3058\u30d5\u30a7\u30f3\u30b9\u3092\u767a\u898b\n              contentEnd = scanPos - 1; \/\/ \u76f4\u524d\u306e \\n \u306f\u4e2d\u8eab\u306b\u542b\u3081\u306a\u3044\n              blockEnd = (nextNl === -1) ? len : (nextNl + 1); \/\/ \u6539\u884c\u3082\u542b\u3081\u3066\u30d6\u30ed\u30c3\u30af\u7d42\u4e86\n              break;\n            }\n\n            if (nextNl === -1) {\n              \/\/ \u30d5\u30a1\u30a4\u30eb\u672b\u5c3e\u306b\u5230\u9054\u3001\u9589\u3058\u30d5\u30a7\u30f3\u30b9\u306a\u3057\n              contentEnd = len;\n              blockEnd = len;\n              break;\n            }\n            scanPos = nextNl + 1;\n          }\n\n          \/\/ contentEnd\u306e\u8abf\u6574\uff08\u4e2d\u8eab\u304c\u7a7a\u306e\u30b1\u30fc\u30b9\u3067\u8ca0\u306b\u306a\u308b\u306e\u3092\u9632\u3050\uff09\n          if (contentEnd < contentStart) contentEnd = contentStart;\n\n          const content = text.substring(contentStart, contentEnd);\n          const idx = store.length;\n          \/\/ \u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u5185\u30a4\u30f3\u30c7\u30f3\u30c8\u6574\u5f62\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\u3002\u751f\u306e < > \u306e\u72b6\u614b\u3067\u3053\u3053\u3067\u6574\u5f62\u3059\u308b\uff09\n          let fenceContent = content;\n          const reBtn = document.getElementById('convertReindentCode');\n          if (reBtn && reBtn.checked) {\n            fenceContent = reindentCodeBlock(content, lang);\n          }\n          store.push({ type: 'fence', lang: lang, content: fenceContent });\n          \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306e\u524d\u5f8c\u306b\u7a7a\u884c\u3092\u631f\u3080\u3002\n          \/\/ \u3053\u308c\u306b\u3088\u308amarked.js\u304c\u72ec\u7acb\u3057\u305f\u30d6\u30ed\u30c3\u30af\u8981\u7d20\u3068\u3057\u3066\u6271\u3044\u3001\n          \/\/ \u76f4\u524d\u306e\u898b\u51fa\u3057\u3084\u76f4\u5f8c\u306e\u6bb5\u843d\u30fbsetext\u898b\u51fa\u3057\uff08---\uff09\u3068\u6df7\u3056\u308b\u306e\u3092\u9632\u3050\u3002\n          \/\/ \u91cd\u8907\u3057\u305f\u6539\u884c\u306f\u6700\u5f8c\u306brestoreCodeBlocks\u3067\u6b63\u898f\u5316\u3059\u308b\u3002\n          result += '\\n\\nXCBPX' + idx + 'XCBPX\\n\\n';\n          pos = blockEnd;\n          continue;\n        }\n      }\n\n      \/\/ \u30d5\u30a7\u30f3\u30b9\u958b\u59cb\u3067\u306a\u3044\u5834\u5408\uff1a1\u884c\u305a\u3064\u9032\u3081\u308b\n      \/\/ \u305f\u3060\u3057\u3001\u884c\u5185\u306b\u30a4\u30f3\u30e9\u30a4\u30f3\u30b3\u30fc\u30c9\u304c\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u306e\u3067\u3001\u5f8c\u3067\u5225\u9014\u51e6\u7406\n      const nextNl = text.indexOf('\\n', pos);\n      if (nextNl === -1) {\n        result += text.substring(pos);\n        break;\n      }\n      result += text.substring(pos, nextNl + 1);\n      pos = nextNl + 1;\n    }\n\n    \/\/ \u30a4\u30f3\u30e9\u30a4\u30f3\u30b3\u30fc\u30c9\uff08`\uff5e`\uff09\u3092\u4fdd\u8b77\n    \/\/ \u30d5\u30a7\u30f3\u30b9\u30c9\u306f\u65e2\u306b\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u5316\u6e08\u307f\u306a\u306e\u3067\u3001\u6b8b\u3063\u305f\u30d0\u30c3\u30af\u30af\u30a9\u30fc\u30c8\u306f\u30a4\u30f3\u30e9\u30a4\u30f3\u306e\u307f\n    \/\/ \u30d0\u30c3\u30af\u30b9\u30e9\u30c3\u30b7\u30e5\u30a8\u30b9\u30b1\u30fc\u30d7\u3055\u308c\u305f \\` \u306f\u5bfe\u8c61\u5916\n    result = result.replace(\/(^|[^\\\\`])`([^`\\n]+)`\/g, function (m, prefix, content) {\n      const idx = store.length;\n      store.push({ type: 'inline', content: content });\n      return prefix + 'XCBPX' + idx + 'XCBPX';\n    });\n\n    return result;\n  }\n\n  function restoreCodeBlocks(text, store) {\n    \/\/ HTML\u30a8\u30b9\u30b1\u30fc\u30d7\u7528\n    const escapeHtml = function (s) {\n      return s\n        .replace(\/&\/g, '&amp;')\n        .replace(\/<\/g, '&lt;')\n        .replace(\/>\/g, '&gt;')\n        .replace(\/\\[\/g, '&lsqb;')   \/\/ WordPress\u30b7\u30e7\u30fc\u30c8\u30b3\u30fc\u30c9\u8aa4\u52d5\u4f5c\u9632\u6b62\uff08pre\/code \u5185\u306e\u307f\uff09\n        .replace(\/\\]\/g, '&rsqb;');\n    };\n\n    \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u3092\u5f8c\u308d\u304b\u3089\u9806\u306b\u623b\u3059\uff08\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u885d\u7a81\u9632\u6b62\uff09\n    for (let i = store.length - 1; i >= 0; i--) {\n      const item = store[i];\n      const placeholder = 'XCBPX' + i + 'XCBPX';\n      let replacement;\n\n      if (item.type === 'fence') {\n        const langClass = item.lang ? ('language-' + item.lang) : 'language-';\n        replacement = '<pre><code class=\"' + langClass + '\">' + escapeHtml(item.content) + '<\/code><\/pre>';\n      } else {\n        replacement = '<code>' + escapeHtml(item.content) + '<\/code>';\n      }\n\n      \/\/ marked.js\u304c\u30d5\u30a7\u30f3\u30b9\u30c9\u306e\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u3092 <p>...<\/p> \u3067\u5305\u3080\u5834\u5408\u304c\u3042\u308b\u306e\u3067\u9664\u53bb\n      if (item.type === 'fence') {\n        const wrapped = new RegExp('<p>\\\\s*' + placeholder + '\\\\s*<\/p>', 'g');\n        text = text.replace(wrapped, replacement);\n      }\n\n      \/\/ \u901a\u5e38\u306e\u7f6e\u63db\n      text = text.split(placeholder).join(replacement);\n    }\n\n    return text;\n  }\n\n\n  \/\/ \u751f\u30b7\u30e7\u30fc\u30c8\u30b3\u30fc\u30c9 [name ...] \u3092\u9000\u907f\uff08marked \u306e \"\u2192&quot; \u5909\u63db\u30fbURL\u81ea\u52d5\u30ea\u30f3\u30af\u5316\u304b\u3089\u5b88\u308b\uff09\n  \/\/ \u2605\u4fdd\u8b77\u5bfe\u8c61\u306e\u540d\u524d\u306f\u3053\u306e\u914d\u5217\u3092\u7de8\u96c6\u3057\u3066\u5897\u6e1b\u3067\u304d\u308b\n  function protectShortcodes(text, store) {\n    var names = ['amazon', 'rakuten', 'yshopping', 'linkbox'];\n    var re = new RegExp('\\\\[(?:' + names.join('|') + ')\\\\b[^\\\\]\\\\n]*\\\\]', 'g');\n    return text.replace(re, function (match) {\n      var idx = store.length;\n      store.push(match);          \/\/ \u539f\u6587\u3092\u305d\u306e\u307e\u307e\u4fdd\u7ba1\n      return 'XSCPX' + idx + 'XSCPX';\n    });\n  }\n\n  \/\/ \u9000\u907f\u3057\u305f\u751f\u30b7\u30e7\u30fc\u30c8\u30b3\u30fc\u30c9\u3092\u300c\u539f\u6587\u306e\u307e\u307e\u300d\u623b\u3059\uff08\u30a8\u30b9\u30b1\u30fc\u30d7\u30fb\u81ea\u52d5\u30ea\u30f3\u30af\u4e00\u5207\u306a\u3057\uff09\n  function restoreShortcodes(text, store) {\n    for (var i = store.length - 1; i >= 0; i--) {\n      text = text.split('XSCPX' + i + 'XSCPX').join(store[i]);\n    }\n    return text;\n  }\n\n\n  function convertMd2Html(text) {\n    \/\/ \u65e5\u672c\u8a9e\u6587\u5b57\u3068**\u306e\u7d44\u307f\u5408\u308f\u305b\u3092\u524d\u51e6\u7406\u3067\u8abf\u6574\n    \/\/ **\u306e\u76f4\u5f8c\u306b\u65e5\u672c\u8a9e\u304c\u3042\u308b\u5834\u5408\u3001marked.js\u304c\u8a8d\u8b58\u3067\u304d\u308b\u3088\u3046\u306b\u8abf\u6574\n    text = fixJapaneseEmphasis(text);\n\n    text = marked.parse(text);\n    text = text.replace(\/<pre><code>\/g, '<pre><code class=\"language-\">'); \/\/Prism.js\u5f62\u5f0f\u306b\u7f6e\u63db\n\n    \/\/<pre>\u30bf\u30b0\u5185\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u4e00\u6642\u7684\u306b\u4fdd\u8b77\n    const preBlocks = [];\n    let preIndex = 0;\n\n    \/\/<pre>\uff5e<\/pre>\u306e\u30d6\u30ed\u30c3\u30af\u3092\u62bd\u51fa\u3057\u3066\u4e00\u6642\u7684\u306a\u30de\u30fc\u30ab\u30fc\u306b\u7f6e\u63db\n    text = text.replace(\/<pre[^>]*>[\\s\\S]*?<\\\/pre>\/g, function (match) {\n      const marker = `___PRE_BLOCK_${preIndex}___`;\n      preBlocks.push(match);\n      preIndex++;\n      return marker;\n    });\n\n    \/\/<pre>\u4ee5\u5916\u306e\u90e8\u5206\u306e\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u524a\u9664\n    text = text.split('\\n').map(line => line.trim()).filter(line => line !== '').join('\\n');\n\n    \/\/\u4fdd\u8b77\u3057\u3066\u3044\u305f<pre>\u30d6\u30ed\u30c3\u30af\u3092\u5143\u306b\u623b\u3059\n    preBlocks.forEach((block, index) => {\n      const marker = `___PRE_BLOCK_${index}___`;\n      text = text.replace(marker, block);\n    });\n\n    \/\/ \u5916\u90e8\u30ea\u30f3\u30af\u306b <cite> \u3068 target=\"_blank\" \u3092\u8ffd\u52a0\uff08code-plus.jp \u4ee5\u5916\uff09\n    text = text.replace(\/<a\\s+href=\"([^\"]*)\"([^>]*)>([\\s\\S]*?)<\\\/a>\/gi, function (match, href, attrs, content) {\n      if (href.indexOf('code-plus.jp') === -1) {\n        return '<cite><a href=\"' + href + '\" target=\"_blank\"' + attrs + '>' + content + '<\/a><\/cite>';\n      }\n      return match;\n    });\n\n    \/\/ \u203b [ ] \u306e\u30a8\u30b9\u30b1\u30fc\u30d7\u306f restoreCodeBlocks() \u5074\uff08pre\/code \u5185\u306e\u307f\uff09\u3067\u884c\u3046\u3002\n    \/\/    \u3053\u3053\u3067\u5168\u4f53\u5909\u63db\u3059\u308b\u3068\u672c\u6587\u4e2d\u306e [ ] \u307e\u3067\u58ca\u3059\u305f\u3081\u5ec3\u6b62\u3002\n\n    return text;\n  }\n\n  \/\/ \u65e5\u672c\u8a9e\u3068**\u306e\u7d44\u307f\u5408\u308f\u305b\u3092\u8abf\u6574\u3059\u308b\u95a2\u6570\n  function fixJapaneseEmphasis(text) {\n    \/\/ **\u3067\u56f2\u307e\u308c\u305f\u90e8\u5206\u3092\u4e00\u6642\u7684\u306b\u30de\u30fc\u30ab\u30fc\u306b\u7f6e\u304d\u63db\u3048\n    const emphasisMarkers = [];\n    let markerIndex = 0;\n\n    \/\/ **text**\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u691c\u51fa\uff08\u8caa\u6b32\u3067\u306a\u3044\u6700\u77ed\u30de\u30c3\u30c1\uff09\n    text = text.replace(\/\\*\\*(.+?)\\*\\*\/g, function (match, content) {\n      const marker = `___EMPHASIS_MARKER_${markerIndex}___`;\n      emphasisMarkers.push(content);\n      markerIndex++;\n      return marker;\n    });\n\n    \/\/ \u30de\u30fc\u30ab\u30fc\u3092<strong>\u30bf\u30b0\u306b\u7f6e\u304d\u63db\u3048\uff08marked.js\u3092\u901a\u3055\u305a\u76f4\u63a5\u5909\u63db\uff09\n    emphasisMarkers.forEach((content, index) => {\n      const marker = `___EMPHASIS_MARKER_${index}___`;\n      text = text.replace(marker, `<strong>${content}<\/strong>`);\n    });\n\n    \/\/ \u2605\u659c\u4f53\u5bfe\u5fdc\uff1a*\u659c\u4f53* \/ _\u659c\u4f53_ \u2192 <em>\uff08marked.js\u304c\u65e5\u672c\u8a9e\u96a3\u63a5\u3067\u8a8d\u8b58\u3057\u306a\u3044\u554f\u984c\u306b\u5bfe\u51e6\uff09\n    \/\/   **\u306f\u4e0a\u3067\u51e6\u7406\u6e08\u307f\u3002\u5883\u754c\u3092\u53b3\u5bc6\u306b\u3057\u3066 \u30ea\u30b9\u30c8(* item)\u30fb\u639b\u3051\u7b97(2 * 3)\u30fbsnake_case \u3092\u8aa4\u5909\u63db\u3057\u306a\u3044\u3002\n    \/\/   \uff08\u958b\u59cb\u8a18\u53f7\u306f \u5358\u8a9e\u6587\u5b57\/\u8a18\u53f7\u81ea\u8eab \u306b\u96a3\u63a5\u305b\u305a\u30fb\u76f4\u5f8c\u304c\u975e\u7a7a\u767d\u3001\u7d42\u4e86\u8a18\u53f7\u3082\u540c\u69d8\uff09\n    text = text.replace(\/(?<![\\w*])\\*(?!\\s)([^*\\n]+?)(?<!\\s)\\*(?![\\w*])\/g, '<em>$1<\/em>');\n    text = text.replace(\/(?<![\\w])_(?!\\s)([^_\\n]+?)(?<!\\s)_(?![\\w])\/g, '<em>$1<\/em>');\n\n    return text;\n  }\n\n\n\n\n  \/\/ |\uff08\u30d1\u30a4\u30d7\uff09\u3092 \u2192 <dl>\u30bf\u30b0 \u306b\u5909\u63db\n  function convertTagDelines(text) {\n    \/\/\u6539\u884c\u3067\u5206\u5272\n    const lines = text.split('\\n');\n\n    \/\/\u5404\u884c\u3092\u51e6\u7406\n    const processedLines = lines.map(line => {\n      line = line.trim();\n      if (line === '') return '';\n\n      \/\/ |\uff08\u30d1\u30a4\u30d7\uff09\u3067\u59cb\u307e\u3063\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u8ffd\u52a0\n      if (!line.startsWith('|')) {\n        line = '|' + line;\n      }\n      \/\/ |\uff08\u30d1\u30a4\u30d7\uff09\u3067\u7d42\u308f\u3063\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u8ffd\u52a0\n      if (!line.endsWith('|')) {\n        line = line + '|';\n      }\n\n      return line;\n    }).filter(line => line !== ''); \/\/\u7a7a\u884c\u3092\u524a\u9664\n\n    if (processedLines.length === 0) return text;\n\n    \/\/Dl\u306eHTML\u69cb\u7bc9\n    let delimitHtml = '<dl class=\"deline\">\\n';\n\n    processedLines.forEach(line => {\n      const cells = line.split('|')\n        .filter(cell => cell !== '') \/\/\u7a7a\u306e\u30bb\u30eb\u3092\u524a\u9664\n        .map(cell => cell.trim()); \/\/\u30bb\u30eb\u5185\u5bb9\u3092\u30c8\u30ea\u30e0\n\n      if (cells.length >= 2) { \/\/\u5c11\u306a\u304f\u3068\u30822\u3064\u306e\u30bb\u30eb\u304c\u3042\u308b\u5834\u5408\u306e\u307f\u51e6\u7406\n        delimitHtml += '  <div class=\"rung\">\\n';\n        delimitHtml += `    <dt>${cells[0]}<\/dt>\\n`;\n        for (let i = 1; i < cells.length; i++) {\n          delimitHtml += `    <dd>${cells[i]}<\/dd>\\n`;\n        }\n        delimitHtml += '  <\/div>\\n';\n      }\n    });\n\n    delimitHtml += '<\/dl><!-- \/\/\/.deline -->';\n    return delimitHtml;\n  }\n\n\n  \/\/ |\uff08\u30d1\u30a4\u30d7\uff09\u3092 \u2192 <table>\u30bf\u30b0 \u306b\u5909\u63db\n  function convertTagTables(text) {\n    \/\/\u6539\u884c\u3067\u5206\u5272\n    const lines = text.split('\\n');\n\n    \/\/\u5404\u884c\u3092\u51e6\u7406\n    const processedLines = lines.map(line => {\n      line = line.trim();\n      if (line === '') return '';\n\n      \/\/ |\uff08\u30d1\u30a4\u30d7\uff09\u3067\u59cb\u307e\u3063\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u8ffd\u52a0\n      if (!line.startsWith('|')) {\n        line = '|' + line;\n      }\n      \/\/ |\uff08\u30d1\u30a4\u30d7\uff09\u3067\u7d42\u308f\u3063\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u8ffd\u52a0\n      if (!line.endsWith('|')) {\n        line = line + '|';\n      }\n\n      return line;\n    }).filter(line => line !== ''); \/\/\u7a7a\u884c\u3092\u524a\u9664\n\n    if (processedLines.length === 0) return text;\n\n    \/\/ \u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u884c\u3092\u691c\u51fa\uff08|------|------|------:| \u306e\u3088\u3046\u306a\u884c\uff09\n    let separatorIndex = -1;\n    for (let i = 0; i < processedLines.length; i++) {\n      const cells = processedLines[i].split('|').filter(cell => cell !== '').map(cell => cell.trim());\n      \/\/ \u5168\u30bb\u30eb\u304c -\u3001:\u3001\u7a7a\u767d\u306e\u307f\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u308c\u3070\u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u884c\n      if (cells.length >= 2 && cells.every(cell => \/^[:\\-]+$\/.test(cell))) {\n        separatorIndex = i;\n        break;\n      }\n    }\n\n    \/\/\u30c6\u30fc\u30d6\u30eb\u306eHTML\u69cb\u7bc9\n    let tableHtml = '<table>\\n';\n    const hasThead = separatorIndex > 0;\n\n    \/\/ \u884c\u3092HTML\u306b\u5909\u63db\u3059\u308b\u30d8\u30eb\u30d1\u30fc\n    function rowToHtml(line) {\n      const cells = line.split('|')\n        .filter(cell => cell !== '')\n        .map(cell => cell.trim());\n\n      if (cells.length < 2) return '';\n\n      let html = '  <tr>\\n';\n      html += `    <th>${cells[0]}<\/th>\\n`;\n      for (let i = 1; i < cells.length; i++) {\n        html += `    <td>${cells[i]}<\/td>\\n`;\n      }\n      html += '  <\/tr>\\n';\n      return html;\n    }\n\n    if (hasThead) {\n      \/\/ \u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u524d\u3092 <thead> \u306b\n      tableHtml += '<thead>\\n';\n      for (let i = 0; i < separatorIndex; i++) {\n        tableHtml += rowToHtml(processedLines[i]);\n      }\n      tableHtml += '<\/thead>\\n';\n\n      \/\/ \u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u5f8c\u3092 <tbody> \u306b\uff08\u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u884c\u81ea\u4f53\u306f\u30b9\u30ad\u30c3\u30d7\uff09\n      tableHtml += '<tbody>\\n';\n      for (let i = separatorIndex + 1; i < processedLines.length; i++) {\n        tableHtml += rowToHtml(processedLines[i]);\n      }\n      tableHtml += '<\/tbody>\\n';\n    } else {\n      \/\/ \u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u306a\u3057 \u2192 \u5f93\u6765\u901a\u308a\u5168\u884c\u3092 <tbody> \u306b\n      tableHtml += '<tbody>\\n';\n      processedLines.forEach(line => {\n        tableHtml += rowToHtml(line);\n      });\n      tableHtml += '<\/tbody>\\n';\n    }\n\n    tableHtml += '<\/table><!-- \/\/\/.table -->';\n    return tableHtml;\n  }\n\n\n  \/\/ ============================================================\n  \/\/ \u533a\u5207\u308a\u6587\u5b57\u3092 | \u306b\u7f6e\u63db\n  \/\/ ============================================================\n  function replaceDelimiter(text, delimiter) {\n    if (!delimiter || delimiter === '|') return text;\n    return text.split('\\n').map(function (line) {\n      return line.split(delimiter).join('|');\n    }).join('\\n');\n  }\n\n\n  \/\/ ============================================================\n  \/\/ \u30bb\u30eb\u7d50\u5408\uff1a\u524d\u51e6\u7406\uff08\u30d1\u30a4\u30d7\u30c6\u30fc\u30d6\u30eb\u5185\u306e < > ^ \u3092\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306b\u7f6e\u63db\uff09\n  \/\/ HTML\u5909\u63db\u524d\u306b\u5b9f\u884c\u3057\u3066\u3001< > \u304cHTML\u30bf\u30b0\u3068\u8aa4\u8a8d\u3055\u308c\u308b\u306e\u3092\u9632\u3050\n  \/\/ ============================================================\n  function preMergeCells(text) {\n    \/\/ \u30d1\u30a4\u30d7\u30c6\u30fc\u30d6\u30eb\u306e\u884c\u306e\u307f\u5bfe\u8c61\uff08|\u3067\u59cb\u307e\u308b\u884c\uff09\n    return text.replace(\/^(\\|[^\\n]*\\|)$\/gm, function (line) {\n      line = line.replace(\/\\|\\s*<\\s*(?=\\|)\/g, '| ___MERGE_LEFT___ ');\n      line = line.replace(\/\\|\\s*>\\s*(?=\\|)\/g, '| ___MERGE_RIGHT___ ');\n      line = line.replace(\/\\|\\s*\\^\\s*(?=\\|)\/g, '| ___MERGE_UP___ ');\n      return line;\n    });\n  }\n\n\n  \/\/ ============================================================\n  \/\/ \u30bb\u30eb\u7d50\u5408\uff1a\u5f8c\u51e6\u7406\uff08\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u3092\u691c\u51fa\u3057\u3066colspan\/rowspan\u3092\u9069\u7528\uff09\n  \/\/ HTML\u5909\u63db\u30fb\u6574\u5f62\u304c\u3059\u3079\u3066\u5b8c\u4e86\u3057\u305f\u5f8c\u306b\u5b9f\u884c\n  \/\/ ============================================================\n  function mergeCells(text) {\n    \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u304c\u5b58\u5728\u3057\u306a\u3051\u308c\u3070\u30b9\u30ad\u30c3\u30d7\n    if (text.indexOf('___MERGE_') === -1) return text;\n\n    \/\/ \u5404\u30c6\u30fc\u30d6\u30eb\u30d6\u30ed\u30c3\u30af\u3092\u51e6\u7406\n    return text.replace(\/<table[^>]*>\\s*(?:<thead>[\\s\\S]*?<\\\/thead>\\s*)?<tbody>([\\s\\S]*?)<\\\/tbody>\\s*<\\\/table>(?:\\s*< !--[^> ]*- ->)?\/g, function (fullMatch, tbodyContent) {\n\n      \/\/ \u884c\u3092\u62bd\u51fa\n      const rowRegex = \/<tr[^>]*>([\\s\\S]*?)<\\\/tr>\/g;\n      const rows = [];\n      let rowMatch;\n\n      while ((rowMatch = rowRegex.exec(tbodyContent)) !== null) {\n        const rowContent = rowMatch[1];\n        const cells = [];\n\n        \/\/ \u30bb\u30eb\u3092\u62bd\u51fa\uff08th\/td\u4e21\u5bfe\u5fdc\u3001\u5c5e\u6027\u4ed8\u304d\u3082\u5bfe\u5fdc\uff09\n        const cellRegex = \/<(th|td)([^>]*)>([\\s\\S]*?)<\\\/\\1>\/g;\n        let cellMatch;\n        while ((cellMatch = cellRegex.exec(rowContent)) !== null) {\n          cells.push({\n            tag: cellMatch[1],\n            attrs: cellMatch[2] || '',\n            content: cellMatch[3].trim(),\n            colspan: 1,\n            rowspan: 1,\n            merged: false\n          });\n        }\n\n        rows.push(cells);\n      }\n\n      if (rows.length === 0) return fullMatch;\n\n      \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u304c1\u3064\u3082\u306a\u3051\u308c\u3070\u3053\u306e\u30c6\u30fc\u30d6\u30eb\u306f\u30b9\u30ad\u30c3\u30d7\n      const hasPlaceholder = rows.some(row => row.some(cell =>\n        cell.content === '___MERGE_LEFT___' || cell.content === '___MERGE_RIGHT___' || cell.content === '___MERGE_UP___'\n      ));\n      if (!hasPlaceholder) return fullMatch;\n\n      \/\/ \u6a2a\u7d50\u5408\uff08\u5de6\u65b9\u5411\uff09: ___MERGE_LEFT___ \u306f\u5de6\u306e\u30bb\u30eb\u306b\u5438\u53ce\u3055\u308c\u308b\n      for (let r = 0; r < rows.length; r++) {\n        for (let c = 1; c < rows[r].length; c++) {\n          if (rows[r][c].content === '___MERGE_LEFT___') {\n            let target = c - 1;\n            while (target >= 0 && rows[r][target].merged) { target--; }\n            if (target >= 0) {\n              rows[r][target].colspan++;\n              rows[r][c].merged = true;\n            }\n          }\n        }\n      }\n\n      \/\/ \u6a2a\u7d50\u5408\uff08\u53f3\u65b9\u5411\uff09: ___MERGE_RIGHT___ \u306f\u53f3\u306e\u30bb\u30eb\u306b\u5438\u53ce\u3055\u308c\u308b\n      for (let r = 0; r < rows.length; r++) {\n        for (let c = rows[r].length - 2; c >= 0; c--) {\n          if (rows[r][c].content === '___MERGE_RIGHT___') {\n            let target = c + 1;\n            while (target < rows[r].length && rows[r][target].merged) { target++; }\n            if (target < rows[r].length) {\n              rows[r][target].colspan++;\n              rows[r][c].merged = true;\n            }\n          }\n        }\n      }\n\n      \/\/ \u7e26\u7d50\u5408: ___MERGE_UP___ \u306f\u4e0a\u306e\u30bb\u30eb\u306b\u5438\u53ce\u3055\u308c\u308b\n      for (let r = 1; r < rows.length; r++) {\n        for (let c = 0; c < rows[r].length; c++) {\n          if (rows[r][c].content === '___MERGE_UP___') {\n            let target = r - 1;\n            while (target >= 0 && rows[target][c] && rows[target][c].merged) { target--; }\n            if (target >= 0 && rows[target][c]) {\n              rows[target][c].rowspan++;\n              rows[r][c].merged = true;\n            }\n          }\n        }\n      }\n\n      \/\/ HTML\u518d\u69cb\u7bc9\n      let html = fullMatch.match(\/<table[^>]*>\/)[0] + '\\n';\n      \/\/ thead\u304c\u3042\u308c\u3070\u4fdd\u6301\n      const theadMatch = fullMatch.match(\/<thead>[\\s\\S]*?<\\\/thead>\/);\n      if (theadMatch) { html += theadMatch[0] + '\\n'; }\n\n      html += '<tbody>\\n';\n      for (let r = 0; r < rows.length; r++) {\n        const hasVisible = rows[r].some(c => !c.merged);\n        if (!hasVisible) continue;\n\n        html += '  <tr class=\"rung\">\\n';\n        for (let c = 0; c < rows[r].length; c++) {\n          if (rows[r][c].merged) continue;\n\n          const cell = rows[r][c];\n          let attrs = cell.attrs;\n          if (cell.colspan > 1) { attrs += ' colspan=\"' + cell.colspan + '\"'; }\n          if (cell.rowspan > 1) { attrs += ' rowspan=\"' + cell.rowspan + '\"'; }\n\n          html += '    <' + cell.tag + attrs + '>' + cell.content + '<\/' + cell.tag + '>\\n';\n        }\n        html += '  <\/tr>\\n';\n      }\n      html += '<\/tbody>\\n<\/table><!-- \/\/\/.table -->';\n\n      return html;\n    });\n  }\n\n\n  \/\/<table> \u5404\u884c\u6700\u521d\u306e\u30bb\u30eb\u3092 \u2192 <th> \u306b\u5909\u63db\n  function convertTagTd2Ths(text) {\n    try {\n      \/\/Step 1: \u4e00\u6642\u7684\u306a\u30de\u30fc\u30ab\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30fc\u30d6\u30eb\u5185\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u4fdd\u8b77\n      text = text.replace(\/(<table[\\s\\S]*?<\\\/table>)\/g, (table) => {\n        \/\/\u307e\u305a\u5168\u3066\u306e\u30bb\u30eb\u3092<td>\u306b\u5909\u63db\uff08<thead>\u5185\u3082\u542b\u3080\uff09\n        let processedTable = table.replace(\/<th(\\s[^>]*)?>([\\s\\S]*?)<\\\/th>\/g, '<td$1>$2<\/td>');\n\n        \/\/\u5404\u884c\u306e\u6700\u521d\u306e\u30bb\u30eb\u3092<th>\u306b\u5909\u63db\n        processedTable = processedTable.replace(\/(<tr[^>]*>)\\s*<td(\\s[^>]*)?>([\\s\\S]*?)<\\\/td>\/g,\n          '$1<th$2>$3<\/th>');\n\n        \/\/marked.js\u3068\u540c\u3058\u5f62\u5f0f\u306b\u6574\u5f62\uff08\u30a4\u30f3\u30c7\u30f3\u30c8\u3068\u6539\u884c\u3092\u8abf\u6574\uff09\n        processedTable = beautifyTable(processedTable);\n\n        return processedTable;\n      });\n\n      return text;\n    } catch (error) {\n      console.error('\u30c6\u30fc\u30d6\u30eb\u5909\u63db\u30a8\u30e9\u30fc:', error);\n      showMessage('\u30c6\u30fc\u30d6\u30eb\u306e\u5909\u63db\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002', false);\n      return text;\n    }\n  }\n\n\n  \/\/\u30c6\u30fc\u30d6\u30ebHTML\u3092\u6574\u5f62\u3059\u308b\u95a2\u6570\n  function beautifyTable(html) {\n    \/\/\u4e0d\u8981\u306a\u7a7a\u767d\u3092\u524a\u9664\n    html = html.replace(\/>\\s+<\/g, '><').trim();\n\n    \/\/\u57fa\u672c\u7684\u306a\u30a4\u30f3\u30c7\u30f3\u30c8\u3068\u6539\u884c\u3092\u8a2d\u5b9a\n    html = html\n      \/\/<table> \u30bf\u30b0\u306e\u5f8c\u306b\u6539\u884c\u3092\u8ffd\u52a0\n      .replace(\/<table([^>]*)>\/g, '<table$1>\\n')\n\n      \/\/<thead> \u30bf\u30b0\u306e\u524d\u5f8c\u306b\u6539\u884c\u3068\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u8ffd\u52a0\n      .replace(\/<thead>\/g, '<thead>\\n')\n      .replace(\/<\\\/thead>\/g, '\\n<\/thead>')\n\n      \/\/<tbody> \u30bf\u30b0\u306e\u524d\u5f8c\u306b\u6539\u884c\u3068\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u8ffd\u52a0\n      .replace(\/<tbody>\/g, '<tbody>\\n')\n      .replace(\/<\\\/tbody>\/g, '\\n<\/tbody>')\n\n      \/\/<tr> \u30bf\u30b0\u306e\u524d\u5f8c\u306b\u6539\u884c\u3068\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u8ffd\u52a0\n      .replace(\/<tr>\/g, '<tr>\\n')\n      .replace(\/<\\\/tr>\/g, '\\n<\/tr>')\n\n      \/\/<th> \u30bf\u30b0\u3068 <td> \u30bf\u30b0\u306e\u5f8c\u306b\u6539\u884c\u3092\u8ffd\u52a0\n      .replace(\/<th([^>]*)>\/g, '<th$1>')\n      .replace(\/<\\\/th>\/g, '<\/th>\\n')\n      .replace(\/<td([^>]*)>\/g, '<td$1>')\n      .replace(\/<\\\/td>\/g, '<\/td>\\n');\n\n    \/\/\u6700\u7d42\u7684\u306a\u6574\u5f62\uff08\u30a4\u30f3\u30c7\u30f3\u30c8\u306e\u8ffd\u52a0\uff09\n    const lines = html.split('\\n');\n    let indentLevel = 0;\n    let result = '';\n\n    for (let i = 0; i < lines.length; i++) {\n      const line = lines[i].trim();\n      if (!line) continue;\n\n      \/\/\u9589\u3058\u30bf\u30b0\u306e\u5834\u5408\u306f\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u6e1b\u3089\u3059\n      if (line.startsWith('<\/')) {\n        indentLevel = Math.max(0, indentLevel - 1);\n      }\n\n      \/\/\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u9069\u7528\n      result += ' '.repeat(indentLevel * 2) + line + '\\n';\n\n      \/\/\u958b\u59cb\u30bf\u30b0\u306e\u5834\u5408\u306f\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u5897\u3084\u3059\uff08\u9589\u3058\u30bf\u30b0\u3084\u81ea\u5df1\u9589\u3058\u30bf\u30b0\u306f\u9664\u304f\uff09\n      if (line.startsWith('<') && !line.startsWith('<\/') && !line.endsWith('\/>') && !line.startsWith('<th') && !line.startsWith('<td')) {\n        indentLevel++;\n      }\n    }\n\n    return result.trim();\n  }\n\n\n\n\n  \/\/\u3059\u3079\u3066\u306e\u30bf\u30b0\u3092\u9664\u53bb\n  function removeTags(text) {\n    text = text.replace(\/<style\\b[^<]*(?:(?!<\\\/style>)<[^<]*)*<\\\/style>\/gi, '');  \/\/<style> \u30bf\u30b0\u3068\u305d\u306e\u5185\u5bb9\u3092\u524a\u9664\n    text = text.split('\\n').map(line => line.trim()).join('\\n');\n    text = text.replace(\/<[^>]*>\/g, '');\n    text = text.trim(); \/\/\u6700\u5f8c\u306b\u5148\u982d\u3068\u672b\u5c3e\u306e\u7a7a\u767d\u3092\u524a\u9664\n    return text;\n  }\n\n  \/\/\u5168\u3066\u306e\u6539\u884c\u3092\u524a\u9664\n  function removeLineBreaks(text) { return text.replace(\/\\n\/g, ''); }\n\n  \/\/\u5358\u4e00\u6539\u884c\u3092\u524a\u9664\u3001\u9023\u7d9a\u6539\u884c\u306f\uff11\u3064\u6e1b\u3089\u3059\n  function adjustLineBreaks(text) {\n    text = text.replace(\/\\n\\n\\n\\n\/g, '<QuadrupleNewLine>');\n    text = text.replace(\/\\n\\n\\n\/g, '<TripleNewLine>');\n    text = text.replace(\/\\n\\n\/g, '<DoubleNewLine>');\n    text = text.replace(\/\\n\/g, '');\n    text = text.replace(\/<QuadrupleNewLine>\/g, '\\n\\n\\n');\n    text = text.replace(\/<TripleNewLine>\/g, '\\n\\n');\n    text = text.replace(\/<DoubleNewLine>\/g, '\\n');\n    return text;\n  }\n\n  \/\/\u6539\u884c\u3092 \u2192 <br \/> \u306b\u5909\u63db\n  function convertTagBreaks(text) { return text.replace(\/\\n\/g, '<br \/>\\n'); }\n\n  \/\/N\u500b\u4ee5\u4e0a\u306e\u9023\u7d9a\u3059\u308b\u30b9\u30da\u30fc\u30b9\uff08\\s{X,}\uff09\u3092\u3001\u30bf\u30d6\uff08\\t\uff09 \u306b\u5909\u63db\n  function convertNspacesTabs(text, count) {\n    const regex = new RegExp(`\\\\s{${count},}`, 'g');\n    return text.replace(regex, '\\t');\n  }\n\n  \/\/n+1\u756a\u76ee\u306e\u6539\u884c\u3092\u30bf\u30d6\u306b\u5909\u63db\n  function convertNthBreak2Tabs(text) {\n    const pattern = document.getElementById('nthBreakCount').value.trim();\n\n    \/\/\u30d1\u30bf\u30fc\u30f3\u306e\u89e3\u6790\n    let nth = 2; \/\/\u30c7\u30d5\u30a9\u30eb\u30c8\u306f2\u756a\u76ee\uff08\u5076\u6570\u756a\u76ee\uff09\n\n    if (pattern === 'n+1' || pattern === 'odd') {\n      \/\/\u5947\u6570\u756a\u76ee\uff081, 3, 5...\uff09\u306e\u6539\u884c\n      nth = 'odd';\n    } else if (pattern === 'n' || pattern === 'even') {\n      \/\/\u5076\u6570\u756a\u76ee\uff082, 4, 6...\uff09\u306e\u6539\u884c\n      nth = 'even';\n    } else if (pattern.match(\/^\\d+$\/)) {\n      \/\/\u7279\u5b9a\u306e\u756a\u53f7\u6307\u5b9a\uff082, 3, 4...\uff09\n      nth = parseInt(pattern);\n    }\n\n    \/\/\u884c\u3054\u3068\u306b\u5206\u5272\n    const lines = text.split('\\n');\n\n    if (nth === 'odd') {\n      \/\/\u5947\u6570\u756a\u76ee\u306e\u6539\u884c\u3092\u30bf\u30d6\u306b\u5909\u63db\uff082\u884c\u305a\u3064\u30da\u30a2\u306b\u3059\u308b\uff09\n      const result = [];\n      for (let i = 0; i < lines.length; i += 2) {\n        if (i + 1 < lines.length) {\n          result.push(lines[i] + '\\t' + lines[i + 1]);\n        } else {\n          result.push(lines[i]);\n        }\n      }\n      return result.join('\\n');\n    } else if (nth === 'even') {\n      \/\/\u5076\u6570\u756a\u76ee\u306e\u6539\u884c\u3092\u30bf\u30d6\u306b\u5909\u63db\n      const result = [];\n      for (let i = 0; i < lines.length; i++) {\n        if (i % 2 === 0 && i + 1 < lines.length) {\n          \/\/\u6b21\u306e\u884c\u3092\u8ffd\u52a0\u3057\u306a\u3044\uff08\u6b21\u306e\u30eb\u30fc\u30d7\u3067\u51e6\u7406\uff09\n          continue;\n        } else if (i % 2 === 1) {\n          \/\/\u524d\u306e\u884c\u3068\u30bf\u30d6\u3067\u7d50\u5408\n          result.push(lines[i - 1] + '\\t' + lines[i]);\n        } else {\n          \/\/\u6700\u5f8c\u306e\u884c\u304c\u5947\u6570\u756a\u76ee\u306e\u5834\u5408\n          result.push(lines[i]);\n        }\n      }\n      return result.join('\\n');\n    } else if (typeof nth === 'number' && nth > 0) {\n      \/\/\u7279\u5b9a\u756a\u53f7\u3054\u3068\u306e\u6539\u884c\u3092\u30bf\u30d6\u306b\u5909\u63db\n      const result = [];\n      let currentGroup = [];\n\n      for (let i = 0; i < lines.length; i++) {\n        currentGroup.push(lines[i]);\n\n        if (currentGroup.length === nth || i === lines.length - 1) {\n          result.push(currentGroup.join('\\t'));\n          currentGroup = [];\n        }\n      }\n      return result.join('\\n');\n    }\n\n    return text;\n  }\n\n\n\n\n\n\n  \/\/&\u3092 \u2192 &amp; \u306b\u5909\u63db\n  function convertEntityAmps(text) { return text.replace(\/&\/g, '&amp;'); }\n\n  \/\/\u6539\u884c\u3092 \u2192 &#13;&#10; \u306b\u5909\u63db\n  function convertEntityNewLines(text) { return text.replace(\/\\n\/g, '&#13;&#10;'); }\n\n  \/\/\u30bf\u30d6\uff08\\t\uff09\u3092 \u2192 &#9; \u306b\u5909\u63db\n  function convertEntityTabs(text) { return text.replace(\/\\t\/g, '&#9;'); }\n\n  \/\/< >\u3092 \u2192 &lt; &gt; \u306b\u5909\u63db\n  function convertEntityLtGts(text) { return text.replace(\/<\/g, '&lt;').replace(\/>\/g, '&gt;'); }\n\n  \/\/[ ]\u3092 \u2192 &lsqb; &rsqb; \u306b\u5909\u63db\n  function convertEntitySqbs(text) { return text.replace(\/\\[\/g, '&lsqb;').replace(\/\\]\/g, '&rsqb;'); }\n\n  \/\/( )\u3092 \u2192 &lpar; &rpar; \u306b\u5909\u63db\n  function convertEntityPars(text) { return text.replace(\/\\(\/g, '&lpar;').replace(\/\\)\/g, '&rpar;'); }\n\n  \/\/{ }\u3092 \u2192 &lcub; &rcub; \u306b\u5909\u63db\n  function convertEntityCubs(text) { return text.replace(\/\\{\/g, '&lcub;').replace(\/\\}\/g, '&rcub;'); }\n\n  \/\/\"\u3092 \u2192 &quot; \u306b\u5909\u63db\n  function convertEntityQuots(text) { return text.replace(\/\"\/g, '&quot;'); }\n\n  \/\/'\u3092 \u2192 &apos; \u306b\u5909\u63db\n  function convertEntityAposs(text) { return text.replace(\/'\/g, '&apos;'); }\n\n  \/\/`\u3092 \u2192 &grave; \u306b\u5909\u63db\n  function convertEntityGraves(text) { return text.replace(\/`\/g, '&grave;'); }\n\n\n\n\n  \/\/\u5168\u89d2\u6587\u5b57\uff08\\x01-\\x7E\uff09\u3092 \u2192 \u303c \u306b\u5909\u63db\uff08\u3000|\u3001|\u3002|\u8a18\u53f7 \u306f\u9664\u5916\uff09\n  function convertFullWidths(text) {\n    return text\n      .replace(\/\u3000\/g, '\u2b1a')  \/\/\u5168\u89d2\u30b9\u30da\u30fc\u30b9\u3092 \u2192 \u2b1a \u306b\u5909\u63db\n      .replace(\/[^(?!.*(\u3000|\uff3f|\u2b1a|\u303c|\u3001|\u3002|\u30fb|\u2025|\u2026|\uff5e|\u203b|\u3012|\u25cf|\u25ef|\u25cc|\u25ce|\u25c9|\u29bf|\u25a0|\u25a1|\u25a3|\u25c6|\u25c7|\u25c8|\u25b2|\u25b3|\u25bc|\u25bd|\u25c0|\u25c1|\u25b6|\u25b7|\u2606|\u2605)).\\x01-\\x7E]\/g, '\u303c');\n  }\n\n  \/\/\u82f1\u5927\u6587\u5b57\u3092 \u2192 \u2341 \u306b\u5909\u63db\n  function convertAlphaUppers(text) { return text.replace(\/[A-Z]\/g, '\u2341'); }\n\n  \/\/\u82f1\u5c0f\u6587\u5b57\u3092 \u2192 \u29c4 \u306b\u5909\u63db\n  function convertAlphaLowers(text) { return text.replace(\/[a-z]\/g, '\u29c4'); }\n\n  \/\/\u6570\u5b57\u3092 \u2192 \ud835\udf03 \u306b\u5909\u63db\n  function convertNumber0s(text) { return text.replace(\/[0-9]\/g, '\ud835\udf03'); }\n\n  \/\/\u6570\u5b57\u3092 \u2192 \u30e9\u30f3\u30c0\u30e0\u306a\u6570\u5b57 \u306b\u5909\u63db\uff080\u306f0\u306e\u307e\u307e\u3002\u5e74\u6708\u65e5\u3089\u3057\u304d\u6570\u5b57\u306f\u73fe\u5b9f\u7684\u306a\u7bc4\u56f2\u3092\u4fdd\u6301\uff09\n  function convertNumberRandoms(text) {\n    return text.replace(\/(\\d+)(\\s*[\u5e74\u6708\u65e5])|([1-9])\/g, function (m, dnum, dsuf) {\n      if (dnum !== undefined) {\n        var n = parseInt(dnum, 10);\n        var s = dsuf.replace(\/\\s\/g, '');\n        var keep = (s === '\u5e74' && n >= 1901 && n <= 2099) ||\n          (s === '\u6708' && n >= 1 && n <= 12) ||\n          (s === '\u65e5' && n >= 1 && n <= 31);\n        if (keep) return m;   \/\/ \u65e5\u4ed8\uff08\u5e741901-2099\uff0f\u67081-12\uff0f\u65e51-31\uff09\u306f\u305d\u306e\u307e\u307e\n        return dnum.replace(\/[1-9]\/g, function () { return Math.floor(Math.random() * 9) + 1; }) + dsuf;\n      }\n      return Math.floor(Math.random() * 9) + 1;\n    });\n  }\n\n  \/\/ ============================================================\n  \/\/  \u5168\u89d2\u21d4\u534a\u89d2 \u8a18\u53f7\u5909\u63db\uff08\u5bfe\u5fdc\u8868\u30d9\u30fc\u30b9\u30fbtype=text \u3067\u5bfe\u8c61\u8a18\u53f7\u3092\u6307\u5b9a\uff09\n  \/\/   \u30fb\u5168\u89d2\u2192\u534a\u89d2\uff1a\u7121\u6761\u4ef6\uff0869\uff05\u219269% \u306e\u3088\u3046\u306b\u524d\u304c\u534a\u89d2\u3067\u3082\u5909\u63db\uff09\n  \/\/   \u30fb\u534a\u89d2\u2192\u5168\u89d2\uff1a\u4e21\u5074\u304c\u534a\u89d2\u6587\u5b57\u306a\u3089\u9664\u5916\uff08calc(100%) \u3092\u5b88\u308a\u3001(3\u5e74\u4fdd\u80b2)\u2192\uff083\u5e74\u4fdd\u80b2\uff09\u306f\u5909\u63db\uff09\n  \/\/ ============================================================\n  var SYMBOL_PAIRS = [\n    ['\uff08', '('], ['\uff09', ')'], ['\uff3b', '['], ['\uff3d', ']'], ['\uff5b', '{'], ['\uff5d', '}'],\n    ['\uff01', '!'], ['\uff1f', '?'], ['\uff04', '$'], ['\uff05', '%'], ['\uff03', '#'], ['\uff06', '&'],\n    ['\uff20', '@'], ['\uff0a', '*'], ['\uff0f', '\/'], ['\uff3c', '\\\\'], ['\uff0b', '+'], ['\uff0d', '-'],\n    ['\uff1d', '='], ['\uff1c', '<'], ['\uff1e', '>'], ['\uff5c', '|'], ['\uff5e', '~'], ['\uff3f', '_'],\n    ['\uff3e', '^'], ['\uff40', '`'], ['\uffe5', '\u00a5'], ['\uff1a', ':'], ['\uff1b', ';'], ['\uff0c', ','],\n    ['\uff0e', '.'], ['\uff07', \"'\"], ['\uff02', '\"'],\n    \/\/ \u534a\u89d2\u30ab\u30ca\u8a18\u53f7\uff08\u5168\u89d2\u5074 \u21d4 \u534a\u89d2\u5074\uff09\n    ['\u3002', '\uff61'], ['\u3001', '\uff64'], ['\u300c', '\uff62'], ['\u300d', '\uff63'], ['\u30fb', '\uff65'], ['\u30fc', '\uff70'],\n    ['\u309b', '\uff9e'], ['\u309c', '\uff9f']\n  ];\n  var FULL_TO_HALF = {}, HALF_TO_FULL = {};\n  SYMBOL_PAIRS.forEach(function (p) { FULL_TO_HALF[p[0]] = p[1]; HALF_TO_FULL[p[1]] = p[0]; });\n\n  var _HALF_CHAR_RE = \/[\\u0021-\\u007E\\u00A5\\uFF61-\\uFF9F]\/;\n  \/\/ \u8a18\u53f7\u306e\u5358\u72ec\u5224\u5b9a\u7528\uff1a\u534a\u89d2\u6587\u5b57 or \u534a\u89d2\u7a7a\u767d\uff08\u30b9\u30da\u30fc\u30b9\/\u30bf\u30d6\/\u6539\u884c\uff09\u3092\u300c\u534a\u89d2\u5074\u300d\u3068\u307f\u306a\u3059\u3002\n  \/\/   \u3053\u308c\u306b\u3088\u308a calc(100% - 3rem) \u3084 url(x) no-repeat \u306e\u3088\u3046\u306b\u62ec\u5f27\u306e\u96a3\u304c\u7a7a\u767d\u306e\u30b3\u30fc\u30c9\u3092\u5b88\u308b\u3002\n  \/\/   \u6587\u5b57\u5217\u7aef\uff08\u7a7a\u6587\u5b57\uff09\u306f\u300c\u534a\u89d2\u5074\u3067\u306a\u3044\u300d\u6271\u3044\uff08\u65e5\u672c\u8a9e\u6587\u4e2d\u306e\u62ec\u5f27\u3092\u5909\u63db\u3059\u308b\u305f\u3081\uff09\u3002\n  function _isHalfSide(ch) { return ch !== '' && (_HALF_CHAR_RE.test(ch) || \/[ \\t\\r\\n\\f\\v]\/.test(ch)); }\n  function _escClass(ch) { return ch.replace(\/[\\\\\\]\\^\\-\\[]\/g, '\\\\$&'); }\n\n  \/\/\u5168\u89d2\u8a18\u53f7\u3092 \u2192 \u534a\u89d2\u306b\u5909\u63db\uff08type=text \u3067\u6307\u5b9a\u3057\u305f\u5168\u89d2\u8a18\u53f7\u306e\u307f\u30fb\u7121\u6761\u4ef6\uff09\n  function convertHalfSymbols(text, inputChars) {\n    var map = {};\n    for (var i = 0; i < inputChars.length; i++) {\n      var ch = inputChars[i];\n      if (FULL_TO_HALF[ch] !== undefined) map[ch] = FULL_TO_HALF[ch];\n    }\n    var keys = Object.keys(map);\n    if (!keys.length) return text;\n    var re = new RegExp('[' + keys.map(_escClass).join('') + ']', 'g');\n    return text.replace(re, function (c) { return map[c]; });\n  }\n\n  \/\/\u534a\u89d2\u8a18\u53f7\u3092 \u2192 \u5168\u89d2\u306b\u5909\u63db\uff08type=text \u3067\u6307\u5b9a\u3057\u305f\u534a\u89d2\u8a18\u53f7\u306e\u307f\u30fb\u4e21\u5074\u534a\u89d2\u306a\u3089\u9664\u5916\uff09\n  function convertFullSymbols(text, inputChars) {\n    var map = {};\n    for (var i = 0; i < inputChars.length; i++) {\n      var ch = inputChars[i];\n      if (HALF_TO_FULL[ch] !== undefined) map[ch] = HALF_TO_FULL[ch];\n    }\n    var keys = Object.keys(map);\n    if (!keys.length) return text;\n    var re = new RegExp('[' + keys.map(_escClass).join('') + ']', 'g');\n    return text.replace(re, function (c, offset, str) {\n      var prev = offset > 0 ? str[offset - 1] : '';\n      var next = offset + 1 < str.length ? str[offset + 1] : '';\n      if (_isHalfSide(prev) && _isHalfSide(next)) return c;   \/\/ \u4e21\u5074\u304c\u534a\u89d2\/\u7a7a\u767d \u2192 \u5bfe\u8c61\u5916\uff08\u30b3\u30fc\u30c9\u4fdd\u8b77\uff09\n      return map[c];\n    });\n  }\n\n  \/\/\u6ce2\u30c0\u30c3\u30b7\u30e5 \u301c(U+301C) \u3092 \u2192 \uff5e(U+FF5E) \u306b\u7d71\u4e00\n  function convertWaveDash(text) { return text.replace(\/\\u301C\/g, '\\uFF5E'); }\n\n  \/\/\u534a\u89d2\u6570\u5b57\u3068\u65e5\u672c\u8a9e\u306e\u9593\u306e\u534a\u89d2\u30b9\u30da\u30fc\u30b9\u3092\u8a70\u3081\u308b\uff08MarkItDown\u5909\u63db\u306e\u30af\u30bb\u5bfe\u7b56\uff09\n  var _JP_CHAR = '[\\\\u3040-\\\\u30FF\\\\u4E00-\\\\u9FFF\\\\u3005-\\\\u3007]';\n  function convertTrimSpaceNumJp(text) {\n    text = text.replace(new RegExp('([0-9]) (' + _JP_CHAR + ')', 'g'), '$1$2');\n    text = text.replace(new RegExp('(' + _JP_CHAR + ') ([0-9])', 'g'), '$1$2');\n    return text;\n  }\n\n\n  \/\/ ============================================================\n  \/\/  \u5168\u89d2\u21d4\u534a\u89d2\uff08\u6570\u5b57\u30fb\u82f1\u5b57\uff09\n  \/\/   \u30fb\u534a\u89d2\u5316\uff08\u5168\u89d2\u2192\u534a\u89d2\uff09\uff1a\u5168\u89d2\u306e\u6570\u5b57\/\u82f1\u5b57\u3092\u3059\u3079\u3066\u534a\u89d2\u3078\n  \/\/   \u30fb\u5168\u89d2\u5316\uff08\u534a\u89d2\u2192\u5168\u89d2\uff09\uff1a\u300c\u5358\u72ec\u306e\u300d\u534a\u89d2\u6570\u5b57\/\u82f1\u5b57\u306e\u307f\u5168\u89d2\u3078\n  \/\/     \u5358\u72ec = \u524d\u5f8c\u306b\u534a\u89d2\u6587\u5b57\uff08\u4e0b\u8a18\u30bb\u30c3\u30c8\uff09\u304c\u96a3\u63a5\u3057\u306a\u30441\u6587\u5b57\u3002\n  \/\/     \u9023\u7d9a\u3059\u308b\u534a\u89d2\u82f1\u6570\u5b57\u8a18\u53f7\uff08iPhone 15 \/ H2O \/ v2 \/ URL \u7b49\uff09\u306f\u5bfe\u8c61\u5916\u3002\n  \/\/   \u203b protectCodeBlocks \u5f8c\u306b\u5b9f\u884c\u3059\u308b\u306e\u3067\u30b3\u30fc\u30c9\u306f\u4fdd\u8b77\u6e08\u307f\u3002\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\n  \/\/     \uff08XCBPX\u2026\uff09\u306f\u524d\u5f8c\u304cX\u3067\u56f2\u307e\u308c\u308b\u305f\u3081\u5358\u72ec\u5224\u5b9a\u306b\u639b\u304b\u3089\u305a\u7121\u50b7\u3002\n  \/\/ ============================================================\n  \/\/ \u534a\u89d2\u6587\u5b57\u30af\u30e9\u30b9\uff1aASCII\u53ef\u8996\u6587\u5b57(0x21-0x7E) + \u00a5(0x00A5) + \u534a\u89d2\u30ab\u30ca(0xFF61-0xFF9F)\n  var HALF_CHAR = '[\\\\u0021-\\\\u007E\\\\u00A5\\\\uFF61-\\\\uFF9F]';\n  var RE_SOLO_NUM = new RegExp('(?<!' + HALF_CHAR + ')([0-9])(?!' + HALF_CHAR + ')', 'g');\n  var RE_SOLO_ALPHA = new RegExp('(?<!' + HALF_CHAR + ')([A-Za-z])(?!' + HALF_CHAR + ')', 'g');\n\n  \/\/\u5168\u89d2\u6570\u5b57\u3092 \u2192 \u534a\u89d2\u6570\u5b57\u306b\u5909\u63db\n  function convertHalfNumbers(text) {\n    return text.replace(\/[\uff10-\uff19]\/g, function (c) { return String.fromCharCode(c.charCodeAt(0) - 0xFF10 + 0x30); });\n  }\n  \/\/\u5358\u72ec\u534a\u89d2\u6570\u5b57\u3092 \u2192 \u5168\u89d2\u6570\u5b57 \u306b\u5909\u63db\n  function convertFullNumbers(text) {\n    \/\/ \u884c\u982d\u306e\u30ea\u30b9\u30c8\u30de\u30fc\u30ab\u30fc\u300c\u6570\u5b57. \u300d\uff08\u30c9\u30c3\u30c8\uff0b\u534a\u89d2\u30b9\u30da\u30fc\u30b9\uff09\u306e\u6570\u5b57\u3092\u5168\u89d2\u5316\n    \/\/   \u884c\u982d = \u6587\u982d \/ \u6539\u884c \/ \u30bf\u30d6 \/ \u534a\u89d2\u30b9\u30da\u30fc\u30b9 \/ > \/ ' \/ \" \u306e\u3044\u305a\u308c\u304b\u306e\u76f4\u5f8c\n    text = text.replace(\/(^|[\\n\\t >'\"])(\\d+)(\\. )\/g, function (m, pre, num, post) {\n      return pre + num.replace(\/[0-9]\/g, function (c) { return String.fromCharCode(c.charCodeAt(0) - 0x30 + 0xFF10); }) + post;\n    });\n    \/\/ \u5358\u72ec\u306e\u534a\u89d2\u6570\u5b57\uff08\u524d\u5f8c\u306b\u534a\u89d2\u6587\u5b57\u304c\u96a3\u63a5\u3057\u306a\u3044\u3082\u306e\uff09\n    return text.replace(RE_SOLO_NUM, function (c) { return String.fromCharCode(c.charCodeAt(0) - 0x30 + 0xFF10); });\n  }\n  \/\/\u5168\u89d2\u82f1\u5b57\u3092 \u2192 \u534a\u89d2\u82f1\u5b57\u306b\u5909\u63db\n  function convertHalfAlphabets(text) {\n    return text\n      .replace(\/[\uff21-\uff3a]\/g, function (c) { return String.fromCharCode(c.charCodeAt(0) - 0xFF21 + 0x41); })\n      .replace(\/[\uff41-\uff5a]\/g, function (c) { return String.fromCharCode(c.charCodeAt(0) - 0xFF41 + 0x61); });\n  }\n  \/\/\u5358\u72ec\u534a\u89d2\u82f1\u5b57\u3092 \u2192 \u5168\u89d2\u82f1\u5b57 \u306b\u5909\u63db\n  function convertFullAlphabets(text) {\n    return text.replace(RE_SOLO_ALPHA, function (c) {\n      return c <= 'Z'\n        ? String.fromCharCode(c.charCodeAt(0) - 0x41 + 0xFF21)\n        : String.fromCharCode(c.charCodeAt(0) - 0x61 + 0xFF41);\n    });\n  }\n\n  \/\/Markdown\u5f62\u5f0f\u306e\u756a\u53f7\uff08*. \uff09\u3092 \u2192 \u4e0a\u304b\u3089\u9023\u756a\u3067\u4ed8\u3051\u76f4\u3059\n  function convertRenumbers(text) {\n    \/\/\u884c\u3054\u3068\u306b\u5206\u5272\n    let lines = text.split('\\n');\n    let firstNumber = null;  \/\/\u6700\u521d\u306b\u898b\u3064\u3051\u305f\u756a\u53f7\u3092\u4fdd\u5b58\n    let currentNumber = null;  \/\/\u73fe\u5728\u306e\u9023\u756a\n    let hasNumberedLine = false;  \/\/\u756a\u53f7\u4ed8\u304d\u306e\u884c\u304c\u5b58\u5728\u3059\u308b\u304b\n\n    \/\/\u6700\u521d\u306e\u6709\u52b9\u306a\u756a\u53f7\u3092\u898b\u3064\u3051\u308b\n    for (let line of lines) {\n      const match = line.match(\/^(\\d+)\\.\\s+\/);\n      if (match) {\n        firstNumber = parseInt(match[1]);\n        currentNumber = firstNumber;\n        hasNumberedLine = true;\n        break;\n      }\n    }\n\n    \/\/\u756a\u53f7\u4ed8\u304d\u306e\u884c\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u306f\u51e6\u7406\u3057\u306a\u3044\n    if (!hasNumberedLine) {\n      return text;\n    }\n\n    \/\/\u5404\u884c\u3092\u51e6\u7406\n    const processedLines = lines.map(line => {\n      \/\/Markdown\u5f62\u5f0f\u306e\u756a\u53f7\u4ed8\u304d\u30ea\u30b9\u30c8\u306b\u30de\u30c3\u30c1\u3059\u308b\u6b63\u898f\u8868\u73fe\n      const match = line.match(\/^(\\d+)\\.\\s+(.+)$\/);\n\n      if (match) {\n        \/\/\u756a\u53f7\u306e\u90e8\u5206\u3092\u73fe\u5728\u306e\u9023\u756a\u3067\u7f6e\u63db\n        \/\/\u5143\u306e\u6570\u5b57\u306e\u6841\u6570\u306b\u5fdc\u3058\u3066\u30b9\u30da\u30fc\u30b9\u306e\u6570\u3092\u8abf\u6574\n        const originalNumLength = match[1].length;\n        const newNumLength = currentNumber.toString().length;\n        const spaceDiff = originalNumLength - newNumLength;\n        const extraSpaces = spaceDiff > 0 ? ' '.repeat(spaceDiff) : '';\n\n        const newLine = `${currentNumber}.${extraSpaces} ${match[2]}`;\n        currentNumber++;\n        return newLine;\n      }\n      return line;\n    });\n\n    return processedLines.join('\\n');\n  }\n\n\n\n\n  \/\/<p> \u5185\u306e\u6539\u884c\u3092 \u2192 <br \/> \u306b\u5909\u63db\n  function convertTagBreaksInP(text) {\n    \/\/<p>\u30bf\u30b0 \u5185\u306e\u6539\u884c\u3092\u691c\u51fa\u3057\u3066<br \/>\u30bf\u30b0\u306b\u7f6e\u63db\uff08<pre>\u30bf\u30b0\u306f\u9664\u5916\uff09\n    return text.replace(\/(<p(?:\\s[^>]*)?>)([\\s\\S]*?)(<\\\/p>)\/g, function (match, openTag, content, closeTag) {\n      \/\/\u30b3\u30f3\u30c6\u30f3\u30c4 \u5185\u306e\u6539\u884c\u3092<br \/>\u306b\u5909\u63db\n      const convertedContent = content.replace(\/\\n\/g, '<br \/>\\n');\n      return openTag + convertedContent + closeTag;\n    });\n  }\n\n\n  \/\/list-style-type\u306e\u5909\u63db\n  function convertListStyles(text) {\n    const convertUList = document.getElementById('convertUListStyles').checked;\n    const convertOList = document.getElementById('convertOListStyles').checked;\n    const uListStyle = document.querySelector('#convertUListStyles + select').value;\n    const oListStyle = document.querySelector('#convertOListStyles + select').value;\n\n    if (convertUList) {\n      \/\/<ul>\u30bf\u30b0\u306e\u51e6\u7406\n      text = text.replace(\/<ul((?:[^>](?!style))*?)>\/gi, `<ul$1 style=\"list-style-type:${uListStyle};\">`);\n      text = text.replace(\/<ul([^>]*?)style=\"([^\"]*?)\"\/gi, function (match, p1, p2) {\n        if (p2.includes('list-style-type')) {\n          return `<ul${p1}style=\"${p2.replace(\/list-style-type:[^;]+;?\/, `list-style-type:${uListStyle};`)}\"`;\n        } else {\n          return `<ul${p1}style=\"${p2}list-style-type:${uListStyle};\"`;\n        }\n      });\n    }\n\n    if (convertOList) {\n      \/\/<ol>\u30bf\u30b0\u306e\u51e6\u7406\uff08<ul>\u3068\u540c\u69d8\uff09\n      text = text.replace(\/<ol((?:[^>](?!style))*?)>\/gi, `<ol$1 style=\"list-style-type:${oListStyle};\">`);\n      text = text.replace(\/<ol([^>]*?)style=\"([^\"]*?)\"\/gi, function (match, p1, p2) {\n        if (p2.includes('list-style-type')) {\n          return `<ol${p1}style=\"${p2.replace(\/list-style-type:[^;]+;?\/, `list-style-type:${oListStyle};`)}\"`;\n        } else {\n          return `<ol${p1}style=\"${p2}list-style-type:${oListStyle};\"`;\n        }\n      });\n    }\n\n    return text;\n  }\n\n\n  \/\/\u6307\u5b9a\u306e\u30bf\u30b0\u3092 \u2192 \u4efb\u610f\u306e\u30bf\u30b0 \u306b\u5909\u63db\n  function processAllTagUpdates(text) {\n    try {\n      \/\/\u51e6\u7406\u5bfe\u8c61\u306e\u5404\u30a4\u30f3\u30d7\u30c3\u30c8\u8981\u7d20\u306e\u30bb\u30c3\u30c8\n      const updateSets = [\n        { targetId: 'targetUpdateTag1', afterId: 'afterUpdateTag1', checkboxId: 'convertUpdateTag1s' },\n        { targetId: 'targetUpdateTag2', afterId: 'afterUpdateTag2', checkboxId: 'convertUpdateTag2s' },\n        { targetId: 'targetUpdateTag3', afterId: 'afterUpdateTag3', checkboxId: 'convertUpdateTag3s' },\n        { targetId: 'targetUpdateTag4', afterId: 'afterUpdateTag4', checkboxId: 'convertUpdateTag4s' },\n        { targetId: 'targetUpdateTag5', afterId: 'afterUpdateTag5', checkboxId: 'convertUpdateTag5s' }\n      ];\n\n      \/\/\u5404\u30bb\u30c3\u30c8\u306b\u5bfe\u3057\u3066\u51e6\u7406\u3092\u5b9f\u884c\n      for (const set of updateSets) {\n        \/\/\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u304c\u30c1\u30a7\u30c3\u30af\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\n        if (document.getElementById(set.checkboxId).checked) {\n          const targetTag = document.getElementById(set.targetId).value.trim();\n          const afterTag = document.getElementById(set.afterId).value.trim();\n\n          \/\/\u7a7a\u306e\u5165\u529b\u30c1\u30a7\u30c3\u30af\n          if (!targetTag || !afterTag) {\n            console.warn(`${set.targetId}\u307e\u305f\u306f${set.afterId}\u304c\u7a7a\u3067\u3059`);\n            continue; \/\/\u3053\u306e\u51e6\u7406\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u6b21\u3078\n          }\n\n          \/\/\u30bf\u30b0\u540d\u3068\u5c5e\u6027\u3092\u62bd\u51fa\n          const targetMatch = targetTag.match(\/^<([^\\s>]+)([^>]*)>\/);\n          const afterMatch = afterTag.match(\/^<([^\\s>]+)([^>]*)>\/);\n\n          if (!targetMatch || !afterMatch) {\n            console.warn(`${set.targetId}\u307e\u305f\u306f${set.afterId}\u306e\u30bf\u30b0\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093`);\n            continue;\n          }\n\n          const [fullTargetTag, targetTagName, targetAttrs] = targetMatch;\n          const [fullAfterTag, afterTagName, afterAttrs] = afterMatch;\n\n          \/\/\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u3067\u30bf\u30b0\u3092\u30a8\u30b9\u30b1\u30fc\u30d7\n          const escapedTargetTag = escapeRegExp(fullTargetTag);\n\n          \/\/\u958b\u59cb\u30bf\u30b0\u3068\u7d42\u4e86\u30bf\u30b0\u306e\u7f6e\u63db\u3092\u76f4\u63a5\u884c\u3046\uff08\u30de\u30fc\u30ab\u30fc\u3092\u4f7f\u308f\u306a\u3044\uff09\n          const openRegex = new RegExp(escapedTargetTag, 'g');\n          const closeRegex = new RegExp(`<\/${targetTagName}>`, 'g');\n\n          \/\/\u958b\u59cb\u30bf\u30b0\u3092\u7f6e\u63db\n          text = text.replace(openRegex, fullAfterTag);\n\n          \/\/\u7d42\u4e86\u30bf\u30b0\u3092\u7f6e\u63db\n          text = text.replace(closeRegex, `<\/${afterTagName}>`);\n        }\n      }\n\n      return text;\n    } catch (error) {\n      console.error('\u30bf\u30b0\u66f4\u65b0\u30a8\u30e9\u30fc:', error);\n      showMessage('\u30bf\u30b0\u306e\u66f4\u65b0\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002', false);\n      return text;\n    }\n  }\n\n  \/\/\u6b63\u898f\u8868\u73fe\u306e\u30a8\u30b9\u30b1\u30fc\u30d7\u7528\u30d8\u30eb\u30d1\u30fc\u95a2\u6570\n  function escapeRegExp(string) {\n    return string.replace(\/[.*+?^${}()|[\\]\\\\]\/g, '\\\\$&');\n  }\n\n\n\n\n  \/\/<img \/> \u3092 \u2192 <picture> \u3067\u56f2\u3080\n  function encloseTagImgPictures(text) {\n    try {\n      \/\/\u3059\u3067\u306bpicture\u30bf\u30b0\u3067\u56f2\u307e\u308c\u3066\u3044\u308bimg\u30bf\u30b0\u3092\u4e00\u6642\u7684\u306b\u30de\u30fc\u30af\n      let markedText = text;\n      let markerIndex = 0;\n      const markers = {};\n\n      \/\/picture\u30bf\u30b0\u3067\u56f2\u307e\u308c\u3066\u3044\u308bimg\u30bf\u30b0\u3092\u4e00\u6642\u7684\u306b\u7f6e\u63db\n      markedText = markedText.replace(\/<picture[^>]*>[\\s\\S]*?<img[^>]*>[\\s\\S]*?<\\\/picture>\/gi, function (match) {\n        const marker = `___PICTURE_MARKER_${markerIndex}___`;\n        markers[marker] = match;\n        markerIndex++;\n        return marker;\n      });\n\n      \/\/picture\u30bf\u30b0\u3067\u56f2\u307e\u308c\u3066\u3044\u306a\u3044img\u30bf\u30b0\u3092picture\u30bf\u30b0\u3067\u56f2\u3080\n      markedText = markedText.replace(\/<img([^>]*)>\/gi, function (match, attributes) {\n        \/\/\u81ea\u5df1\u9589\u3058\u30bf\u30b0\u306e\u5834\u5408\u306e\u51e6\u7406\n        if (attributes.endsWith('\/')) {\n          \/\/\u6700\u5f8c\u306e\/\u3092\u524a\u9664\u3057\u3066\u304b\u3089\u51e6\u7406\n          const cleanAttrs = attributes.slice(0, -1).trim();\n          return `<picture><img${cleanAttrs ? ' ' + cleanAttrs : ''} \/><\/picture>`;\n        } else {\n          return `<picture><img${attributes}><\/picture>`;\n        }\n      });\n\n      \/\/\u30de\u30fc\u30ab\u30fc\u3092\u5143\u306epicture\u30bf\u30b0\u306b\u623b\u3059\n      Object.keys(markers).forEach(marker => {\n        markedText = markedText.replace(marker, markers[marker]);\n      });\n\n      return markedText;\n    } catch (error) {\n      console.error('img\u2192picture\u5909\u63db\u30a8\u30e9\u30fc:', error);\n      showMessage('img\u30bf\u30b0\u306epicture\u56f2\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002', false);\n      return text;\n    }\n  }\n\n\n  \/\/\u6307\u5b9a\u306e\u30bf\u30b0\u306b\u3001\u4efb\u610f\u306e\u30af\u30e9\u30b9\u3092\u8ffd\u52a0\n  function processAllTagClasses(text) {\n    try {\n      \/\/\u51e6\u7406\u5bfe\u8c61\u306e\u5404\u30a4\u30f3\u30d7\u30c3\u30c8\u8981\u7d20\u306e\u30bb\u30c3\u30c8\n      const inputSets = [\n        { tagId: 'targetAddClase1', classId: 'afterAddClase1', checkboxId: 'convertAddClase1s' },\n        { tagId: 'targetAddClase11', classId: 'afterAddClase11', checkboxId: 'convertAddClase11s' },\n        { tagId: 'targetAddClase12', classId: 'afterAddClase12', checkboxId: 'convertAddClase12s' },\n        { tagId: 'targetAddClase13', classId: 'afterAddClase13', checkboxId: 'convertAddClase13s' },\n        { tagId: 'targetAddClase14', classId: 'afterAddClase14', checkboxId: 'convertAddClase14s' },\n        { tagId: 'targetAddClase15', classId: 'afterAddClase15', checkboxId: 'convertAddClase15s' },\n        { tagId: 'targetAddClase16', classId: 'afterAddClase16', checkboxId: 'convertAddClase16s' },\n        { tagId: 'targetAddClase17', classId: 'afterAddClase17', checkboxId: 'convertAddClase17s' },\n        { tagId: 'targetAddClase18', classId: 'afterAddClase18', checkboxId: 'convertAddClase18s' },\n        { tagId: 'targetAddClase19', classId: 'afterAddClase19', checkboxId: 'convertAddClase19s' },\n        { tagId: 'targetAddClase20', classId: 'afterAddClase20', checkboxId: 'convertAddClase20s' },\n        { tagId: 'targetAddClase21', classId: 'afterAddClase21', checkboxId: 'convertAddClase21s' },\n        { tagId: 'targetAddClase31', classId: 'afterAddClase31', checkboxId: 'convertAddClase31s' },\n        { tagId: 'targetAddClase32', classId: 'afterAddClase32', checkboxId: 'convertAddClase32s' },\n        { tagId: 'targetAddClase33', classId: 'afterAddClase33', checkboxId: 'convertAddClase33s' },\n        { tagId: 'targetAddClase34', classId: 'afterAddClase34', checkboxId: 'convertAddClase34s' }\n      ];\n      \/\/\u5404\u30bb\u30c3\u30c8\u306b\u5bfe\u3057\u3066\u51e6\u7406\u3092\u5b9f\u884c\n      for (const set of inputSets) {\n        \/\/\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u304c\u30c1\u30a7\u30c3\u30af\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\n        if (document.getElementById(set.checkboxId).checked) {\n          const targetTag = document.getElementById(set.tagId).value.trim();\n          const addClass = document.getElementById(set.classId).value.trim();\n\n          \/\/\u7a7a\u306e\u5165\u529b\u30c1\u30a7\u30c3\u30af\n          if (!targetTag || !addClass) {\n            console.warn(`${set.tagId}\u307e\u305f\u306f${set.classId}\u304c\u7a7a\u3067\u3059`);\n            continue; \/\/\u3053\u306e\u51e6\u7406\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u6b21\u3078\n          }\n\n          \/\/\u6b63\u78ba\u306a\u30bf\u30b0\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u305f\u3081\u306e\u6539\u826f\u3055\u308c\u305f\u6b63\u898f\u8868\u73fe\n          \/\/\u30bf\u30b0\u306f<\u30bf\u30b0\u540d>\u307e\u305f\u306f<\u30bf\u30b0\u540d \u5c5e\u6027...>\u306e\u5f62\u5f0f\u306b\u30de\u30c3\u30c1\u3059\u308b\n          const regex = new RegExp(`<${targetTag}(>|\\\\s[^>]*>)`, 'g');\n\n          text = text.replace(regex, (match) => {\n            \/\/\u9589\u3058\u62ec\u5f27\u306e\u76f4\u524d\u306e\u4f4d\u7f6e\u3092\u898b\u3064\u3051\u308b\n            const closeBracketPos = match.lastIndexOf('>');\n            const beforeCloseBracket = match.substring(0, closeBracketPos);\n\n            if (beforeCloseBracket.includes('class=\"')) {\n              \/\/\u65e2\u5b58\u306eclass\u5c5e\u6027\u304c\u3042\u308b\u5834\u5408\n              return match.replace(\/class=\"([^\"]*)\"\/, (m, existingClasses) => {\n                const classArray = existingClasses.split(' ');\n                if (!classArray.includes(addClass)) {\n                  return `class=\"${existingClasses} ${addClass}\"`;\n                }\n                return m;\n              });\n            } else {\n              \/\/class\u5c5e\u6027\u304c\u306a\u3044\u5834\u5408\u3001\u9589\u3058\u62ec\u5f27\u306e\u76f4\u524d\u306bclass\u5c5e\u6027\u3092\u8ffd\u52a0\n              return `${beforeCloseBracket} class=\"${addClass}\">`;\n            }\n          });\n        }\n      }\n\n      return text;\n    } catch (error) {\n      console.error('\u30af\u30e9\u30b9\u8ffd\u52a0\u30a8\u30e9\u30fc:', error);\n      showMessage('\u30af\u30e9\u30b9\u8ffd\u52a0\u51e6\u7406\u3067\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002', false);\n      return text;\n    }\n  }\n\n\n\n\n  \/\/JSON\u5f62\u5f0f\u3067\u8907\u6570\u306e\u8a9e\u53e5\u3092\u307e\u3068\u3081\u3066\u524a\u9664\n  function removeMultiWords(text) {\n    try {\n      \/\/\u5165\u529b\u5024\u3092\u53d6\u5f97\u3057\u3066\u6574\u5f62\n      let removeTxts = document.getElementById('removeTxts').value;\n\n      \/\/\u5165\u529b\u5024\u3092\u6574\u5f62\u3059\u308b\u95a2\u6570\n      function formatToJSON(input) {\n        \/\/\u65e2\u306bJSON\u5f62\u5f0f\u306e\u5834\u5408\u306f\u305d\u306e\u307e\u307e\u8fd4\u3059\n        try {\n          JSON.parse(input);\n          return input;\n        } catch {\n          \/\/[] \u3067\u56f2\u307e\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u8ffd\u52a0\n          if (!input.startsWith('[') && !input.endsWith(']')) {\n            input = '[' + input + ']';\n          }\n\n          \/\/\u30ab\u30f3\u30de\u533a\u5207\u308a\u306e\u5404\u8981\u7d20\u3092\u51e6\u7406\n          const words = input.slice(1, -1).split(',').map(word => {\n            \/\/\u30b9\u30da\u30fc\u30b9\u3092\u4fdd\u6301\u3057\u305f\u307e\u307e\u3001\u30c0\u30d6\u30eb\u30af\u30a9\u30fc\u30c8\u306e\u307f\u3092\u8ffd\u52a0\n            if (!word.startsWith('\"') && !word.endsWith('\"')) {\n              word = '\"' + word + '\"';\n            }\n            return word;\n          });\n\n          return '[' + words.join(',') + ']';\n        }\n      }\n\n      \/\/\u5165\u529b\u5024\u3092\u6574\u5f62\n      removeTxts = formatToJSON(removeTxts);\n\n      \/\/\u6574\u5f62\u3057\u305f\u5024\u3092\u5165\u529b\u6b04\u306b\u53cd\u6620\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09\n      document.getElementById('removeTxts').value = removeTxts;\n\n      \/\/JSON\u3068\u3057\u3066\u30d1\u30fc\u30b9\n      const removeTxtsArray = JSON.parse(removeTxts);\n\n      \/\/\u5404\u8a9e\u53e5\u3092\u524a\u9664\n      removeTxtsArray.forEach(word => {\n        const escapedWord = word.replace(\/[.*+?^${}()|[\\]\\\\]\/g, '\\\\$&');\n        const regex = new RegExp(escapedWord, 'g');\n        text = text.replace(regex, '');\n      });\n\n      return text;\n    } catch (error) {\n      console.error('\u524a\u9664\u30a8\u30e9\u30fc:', error);\n      showMessage('\u8a9e\u53e5\u306e\u6307\u5b9a\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002', false);\n      return text;\n    }\n  }\n\n  \/\/JSON\u5f62\u5f0f\u3067\u8907\u6570\u306e\u8a9e\u53e5\u3092\u307e\u3068\u3081\u3066\u5909\u63db\n  function convertMultiWords(text) {\n    try {\n      \/\/\u5165\u529b\u5024\u3092\u53d6\u5f97\u3057\u3066\u6574\u5f62\n      let beforeTxts = document.getElementById('beforeTxts').value;\n      let afterTxts = document.getElementById('afterTxts').value;\n\n      \/\/\u5165\u529b\u5024\u3092\u6574\u5f62\u3059\u308b\u95a2\u6570\n      function formatToJSON(input) {\n        \/\/\u65e2\u306bJSON\u5f62\u5f0f\u306e\u5834\u5408\u306f\u305d\u306e\u307e\u307e\u8fd4\u3059\n        try {\n          JSON.parse(input);\n          return input;\n        } catch {\n          \/\/[] \u3067\u56f2\u307e\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u8ffd\u52a0\n          if (!input.startsWith('[') && !input.endsWith(']')) {\n            input = '[' + input + ']';\n          }\n\n          \/\/\u30ab\u30f3\u30de\u533a\u5207\u308a\u306e\u5404\u8981\u7d20\u3092\u51e6\u7406\n          const words = input.slice(1, -1).split(',').map(word => {\n            \/\/\u30b9\u30da\u30fc\u30b9\u3092\u4fdd\u6301\u3057\u305f\u307e\u307e\u3001\u30c0\u30d6\u30eb\u30af\u30a9\u30fc\u30c8\u306e\u307f\u3092\u8ffd\u52a0\n            if (!word.startsWith('\"') && !word.endsWith('\"')) {\n              word = '\"' + word + '\"';\n            }\n            return word;\n          });\n\n          return '[' + words.join(',') + ']';\n        }\n      }\n\n      \/\/\u5165\u529b\u5024\u3092\u6574\u5f62\n      beforeTxts = formatToJSON(beforeTxts);\n      afterTxts = formatToJSON(afterTxts);\n\n      \/\/\u6574\u5f62\u3057\u305f\u5024\u3092\u5165\u529b\u6b04\u306b\u53cd\u6620\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09\n      document.getElementById('beforeTxts').value = beforeTxts;\n      document.getElementById('afterTxts').value = afterTxts;\n\n      \/\/JSON\u3068\u3057\u3066\u30d1\u30fc\u30b9\n      const beforeTxtsArray = JSON.parse(beforeTxts);\n      const afterTxtsArray = JSON.parse(afterTxts);\n\n      \/\/\u4ee5\u964d\u306f\u65e2\u5b58\u306e\u30b3\u30fc\u30c9\n      if (beforeTxtsArray.length !== afterTxtsArray.length) {\n        throw new Error('\u5909\u63db\u524d\u3068\u5909\u63db\u5f8c\u306e\u8a9e\u53e5\u306e\u6570\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093');\n      }\n\n      beforeTxtsArray.forEach((beforeTxt, index) => {\n        const escapedFromWord = beforeTxt.replace(\/[.*+?^${}()|[\\]\\\\]\/g, '\\\\$&');\n        const regex = new RegExp(escapedFromWord, 'g');\n        text = text.replace(regex, afterTxtsArray[index]);\n      });\n\n      return text;\n    } catch (error) {\n      console.error('\u5909\u63db\u30a8\u30e9\u30fc:', error);\n      showMessage('\u8a9e\u53e5\u306e\u6307\u5b9a\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002', false);\n      return text;\n    }\n  }\n\n\n\n\n  \/\/\u53f3\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2 \u2192 \u5de6\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u3078\u306e\u5909\u63db\n  function decodeText() {\n    let encode_area = document.getElementById('encodeArea');\n    let decode_area = document.getElementById('decodeArea');\n    let text = decode_area.value;\n\n    \/\/ \u30c6\u30fc\u30d6\u30eb\u5909\u63db \u2192 \u30d1\u30a4\u30d7\u5f62\u5f0f\u306b\u5909\u63db\u3057\u3064\u3064\u3001turndown\u304b\u3089\u4fdd\u8b77\u3059\u308b\u305f\u3081\n    \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u5316\u3059\u308b\uff08\u30c6\u30fc\u30d6\u30eb\u5185\u306e\u6539\u884c\u304cturndown\u3067\u534a\u89d2\u30b9\u30da\u30fc\u30b9\u306b\n    \/\/ \u6298\u308a\u305f\u305f\u307e\u308c\u308b\u306e\u3092\u9632\u3050\uff09\u3002\n    const tableBlocks = [];\n    if (document.getElementById('decodeTagTables').checked) {\n      text = decodeTagTables(text, tableBlocks);\n    }\n\n    \/\/ <pre><code> \u2192 \u30d5\u30a7\u30f3\u30b9\u30c9\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u5909\u63db + \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u3067\u4fdd\u8b77\n    const codeBlocks = [];\n    text = decodePreCode(text, codeBlocks);\n\n    \/\/ <code> \u3092\u4f34\u308f\u306a\u3044\u88f8\u306e <pre> \u3082\u540c\u69d8\u306b\u4fdd\u8b77\uff08\u540c\u3058 codeBlocks \u306b\u9000\u907f\uff09\n    text = decodeBarePre(text, codeBlocks);\n\n    \/\/ \u30a4\u30f3\u30e9\u30a4\u30f3 <code> \u3082\u4fdd\u8b77\u3059\u308b\uff08\u4fdd\u8b77\u3057\u306a\u3044\u3068 removeTags \u304c\u4e2d\u8eab\u306e\u30bf\u30b0\u72b6\u30c6\u30ad\u30b9\u30c8\n    \/\/ <!--[if mso]>, <style>\u2026 \u7b49\u3092\u524a\u9664\u3057\u3066\u7a7a\u306b\u306a\u308b\uff09\u3002<pre><code> \u306f\u4e0a\u3067\u51e6\u7406\u6e08\u307f\u3002\n    const inlineCodes = [];\n    text = decodeInlineCode(text, inlineCodes);\n\n    \/\/ <picture> \u30bf\u30b0\u3092\u5265\u304c\u3057\u3066 <img> \u306e\u307f\u306b\u3059\u308b\uff08turndown\u304c\u6539\u884c\u3092\u6b63\u3057\u304f\u51e6\u7406\u3067\u304d\u308b\u3088\u3046\u306b\uff09\n    var keepImg = document.getElementById('decodeKeepImg') && document.getElementById('decodeKeepImg').checked;\n    const imgTags = [];\n    if (keepImg) {\n      \/\/ <picture> \u306f\u5265\u304c\u3057\u3066 <img> \u3092\u53d6\u308a\u51fa\u3059\uff08br\u306f\u8db3\u3055\u306a\u3044\uff09\n      text = decodeStripPicture(text, true);\n      \/\/ <img> \u3092 verbatim \u3067\u9000\u907f\uff08turndown\/removeTags \u304c ![]() \u5316\u30fb\u524a\u9664\u3059\u308b\u306e\u3092\u9632\u3050\uff09\n      text = text.replace(\/<img\\b[^>]*?\\\/?>\/gi, function (m) {\n        imgTags.push(m);\n        return 'XIMGTAGX' + (imgTags.length - 1) + 'X';\n      });\n    } else {\n      text = decodeStripPicture(text);\n    }\n\n    if (document.getElementById('decodeHtml2Md').checked) { text = decodeHtml2Md(text); }\n\n    \/\/ turndown\u3067\u8a8d\u8b58\u3055\u308c\u306a\u304b\u3063\u305f\u6b8b\u9ab8HTML\u30bf\u30b0\uff08\u4e0d\u6b63\u306a class\u5c5e\u6027\u3001<span>\u3001<li>\u3001<a>\u7b49\uff09\u3092\u9664\u53bb\n    \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\uff08___CODE_BLOCK_n___ \/ ___TABLE_BLOCK_n___\uff09\u306f\u82f1\u6570\u5b57\u30c6\u30ad\u30b9\u30c8\u306a\u306e\u3067\u5f71\u97ff\u306a\u3057\n    if (document.getElementById('decodeRemoveTags').checked) { text = removeTags(text); }\n\n    \/\/ \u5b9f\u4f53\u53c2\u7167\u3092\u30c7\u30b3\u30fc\u30c9\uff08\u6587\u5b57\u5b9f\u4f53\u30fb10\u9032\u30fb16\u9032\uff09\u3002\n    \/\/ HTML\u2192Markdown\uff08turndown\uff09\u30fbremoveTags \u306e\u300c\u5f8c\u300d\u306b\u7f6e\u304f\u3053\u3068\u3067\u3001\n    \/\/   \u30fb\u4e21\u65b9ON\u6642\u306f\u300cHTML\u2192Markdown \u2192 \u5b9f\u4f53\u53c2\u7167\u30c7\u30b3\u30fc\u30c9\u300d\u306e\u9806\u306b\u306a\u308a\u3001\n    \/\/     &lt;table&gt;\u2026 \u306e\u3088\u3046\u306aHTML\u69cb\u9020\u304c Markdown \u5316\u306b\u5dfb\u304d\u8fbc\u307e\u308c\u305a\u6b8b\u308b\n    \/\/   \u30fbremoveTags \u304c\u5b9f\u4f53\u53c2\u7167\u5316\u3055\u308c\u305f\u30bf\u30b0\uff08&lt;\u2026&gt;\uff09\u3092\u6d88\u3055\u306a\u3044\uff08\u3053\u306e\u6642\u70b9\u3067\u306f\u307e\u3060\u6587\u5b57\u5217\uff09\n    \/\/ \u30b3\u30fc\u30c9\/\u30c6\u30fc\u30d6\u30eb\u5fa9\u5143\u306e\u300c\u524d\u300d\u306b\u7f6e\u304d\u3001\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u5185\u306e\u4e2d\u8eab\u3092\u4e8c\u91cd\u30c7\u30b3\u30fc\u30c9\u3057\u306a\u3044\u3002\n    if (document.getElementById('decodeEntities') && document.getElementById('decodeEntities').checked) {\n      text = decodeEntities(text);\n    }\n\n    \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u3092\u30d5\u30a7\u30f3\u30b9\u30c9\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u306b\u5fa9\u5143\uff08turndown\u306e\u30a8\u30b9\u30b1\u30fc\u30d7\u306b\u3082\u5bfe\u5fdc\uff09\n    codeBlocks.forEach((block, index) => {\n      const plain = '___CODE_BLOCK_' + index + '___';\n      const escaped = '\\\\_\\\\_\\\\_CODE\\\\_BLOCK\\\\_' + index + '\\\\_\\\\_\\\\_';\n      text = text.replace(escaped, block);\n      text = text.replace(plain, block);\n    });\n\n    \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u3092\u30a4\u30f3\u30e9\u30a4\u30f3\u30b3\u30fc\u30c9\u306b\u5fa9\u5143\uff08\u82f1\u6570\u5b57\u30c8\u30fc\u30af\u30f3\u306a\u306e\u3067turndown\/removeTags\u306e\u5f71\u97ff\u306a\u3057\uff09\n    inlineCodes.forEach((code, index) => {\n      text = text.replace('XINLCODEX' + index + 'X', function () { return code; });\n    });\n\n    \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u3092\u30c6\u30fc\u30d6\u30eb\u306b\u5fa9\u5143\n    tableBlocks.forEach((block, index) => {\n      const plain = '___TABLE_BLOCK_' + index + '___';\n      const escaped = '\\\\_\\\\_\\\\_TABLE\\\\_BLOCK\\\\_' + index + '\\\\_\\\\_\\\\_';\n      text = text.replace(escaped, block);\n      text = text.replace(plain, block);\n    });\n\n    \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u3092 <img> \u30bf\u30b0\u306b\u5fa9\u5143\uff08\u300cimg\u3092\u305d\u306e\u307e\u307e\u6b8b\u3059\u300d\u30e2\u30fc\u30c9\u6642\uff09\n    imgTags.forEach((tag, index) => {\n      text = text.replace('XIMGTAGX' + index + 'X', function () { return tag; });\n    });\n\n    \/\/ Unicode Private Use Area\uff08PUA\uff09\u6587\u5b57\u3092\u524a\u9664\n    \/\/ Claude.ai \u7b49\u306eWeb\u30b5\u30fc\u30d3\u30b9\u304c\u5185\u90e8\u30a2\u30a4\u30b3\u30f3\u30d5\u30a9\u30f3\u30c8\u7528\u306b\u4f7f\u3046\u79c1\u7528\u9818\u57df\u306e\u6587\u5b57\u306f\u3001\n    \/\/ \u30c6\u30ad\u30b9\u30c8\u62bd\u51fa\u6642\u306b\u30d5\u30a9\u30f3\u30c8\u304c\u306a\u3044\u74b0\u5883\u3067\u8c46\u8150\u6587\u5b57\u3068\u3057\u3066\u6b8b\u308b\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u9664\u53bb\u3002\n    \/\/ - BMP\u5185 PUA:              U+E000\u301cU+F8FF\n    \/\/ - Supplementary PUA-A:    U+F0000\u301cU+FFFFD\n    \/\/ - Supplementary PUA-B:    U+100000\u301cU+10FFFD\n    text = text.replace(\/[\\uE000-\\uF8FF]\/g, '');\n    text = text.replace(\/[\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}]\/gu, '');\n\n    encode_area.value = text;\n    copyToClipboard(text, true);   \/\/isDecode = true\n  }\n\n\n\n\n  \/\/\u30c6\u30fc\u30d6\u30eb\u30bf\u30b0\u3092 \u2192 |\uff08\u30d1\u30a4\u30d7\uff09 \u306b\u30c7\u30b3\u30fc\u30c9\n  \/\/ tableBlocks \u914d\u5217\u3092\u6e21\u3059\u3068\u3001\u5909\u63db\u7d50\u679c\u3092\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u5316\u3057\u3066\u4fdd\u5b58\u3059\u308b\n  \/\/ \uff08turndown\u3067\u30c6\u30fc\u30d6\u30eb\u5185\u306e\u6539\u884c\u304c\u6f70\u3055\u308c\u308b\u306e\u3092\u9632\u3050\uff09\n  function decodeTagTables(text, tableBlocks) {\n    \/\/ \u5f8c\u65b9\u4e92\u63db: tableBlocks \u304c\u7701\u7565\u3055\u308c\u305f\u5834\u5408\u306f\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u5316\u305b\u305a\u76f4\u63a5\u7f6e\u63db\n    const usePlaceholder = Array.isArray(tableBlocks);\n\n    try {\n      \/\/\u30c6\u30fc\u30d6\u30eb\u5168\u4f53\u3092\u691c\u7d22\u3057\u3066\u51e6\u7406\n      return text.replace(\/<table[^>]*>([\\s\\S]*?)<\\\/table>\/g, function (tableMatch, tableContent) {\n\n        \/\/ thead\u306e\u6709\u7121\u3092\u78ba\u8a8d\n        const hasThead = \/<thead[\\s\\S]*?<\\\/thead>\/.test(tableContent);\n\n        \/\/ thead\u5185\u306e\u884c\u3068tbody\u5185\u306e\u884c\u3092\u5206\u3051\u3066\u53d6\u5f97\n        let theadRows = [];\n        let tbodyRows = [];\n\n        if (hasThead) {\n          const theadMatch = tableContent.match(\/<thead[^>]*>([\\s\\S]*?)<\\\/thead>\/);\n          if (theadMatch) {\n            theadRows = theadMatch[1].match(\/<tr[^>]*>([\\s\\S]*?)<\\\/tr>\/g) || [];\n          }\n          const tbodyMatch = tableContent.match(\/<tbody[^>]*>([\\s\\S]*?)<\\\/tbody>\/);\n          if (tbodyMatch) {\n            tbodyRows = tbodyMatch[1].match(\/<tr[^>]*>([\\s\\S]*?)<\\\/tr>\/g) || [];\n          }\n        } else {\n          \/\/ thead\u306a\u3057 \u2192 \u5168\u884c\u53d6\u5f97\n          tbodyRows = tableContent.match(\/<tr[^>]*>([\\s\\S]*?)<\\\/tr>\/g) || [];\n        }\n\n        if (theadRows.length === 0 && tbodyRows.length === 0) return tableMatch;\n\n        \/\/ \u884c\u3092\u30d1\u30a4\u30d7\u5f62\u5f0f\u306b\u5909\u63db\u3059\u308b\u30d8\u30eb\u30d1\u30fc\n        function rowToPipe(rowHtml) {\n          const rowContent = rowHtml.replace(\/<\\\/?tr[^>]*>\/g, '');\n          let pipeRow = '|';\n          let colCount = 0;\n\n          \/\/ \u30c6\u30fc\u30d6\u30eb\u5909\u63db\u6642\u306b\u3001\u30bb\u30eb\u5185\u306eHTML\u30bf\u30b0\u3082\u9664\u53bb\u3059\u308b\u304b\u3069\u3046\u304b\n          \/\/ \uff08decodeRemoveTags \u30aa\u30d7\u30b7\u30e7\u30f3\u304cOFF\u306e\u5834\u5408\u306f\u7d20\u306eHTML\u3092\u4fdd\u6301\uff09\n          const removeCellTags = (function () {\n            const el = document.getElementById('decodeRemoveTags');\n            return el ? el.checked : true;\n          })();\n\n          const cellMatches = rowContent.match(\/<(th|td)[^>]*>([\\s\\S]*?)<\\\/(th|td)>\/g);\n          if (cellMatches) {\n            cellMatches.forEach(cellMatch => {\n              let cellContent = cellMatch.replace(\/<\\\/(th|td)>$\/, '').replace(\/^<(th|td)[^>]*>\/, '');\n              \/\/ <br>, <br\/>, <br \/> \u3092\u524a\u9664\u3057\u3066\u30c6\u30fc\u30d6\u30eb\u8a18\u6cd5\u3092\u58ca\u3055\u306a\u3044\u3088\u3046\u306b\u3059\u308b\n              \/\/ \uff08\u30bb\u30eb\u5185\u6539\u884c\u306fMarkdown\u306e\u30c6\u30fc\u30d6\u30eb\u69cb\u6587\u3068\u885d\u7a81\u3059\u308b\u305f\u3081\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u524a\u9664\uff09\n              cellContent = cellContent.replace(\/<br\\s*\\\/?\\s*>\/gi, '');\n\n              if (removeCellTags) {\n                \/\/ \u2605 \u30bb\u30eb\u5185\u30a4\u30f3\u30e9\u30a4\u30f3\u5909\u63db\uff08turndown\u306f\u30c6\u30fc\u30d6\u30eb\u30bb\u30eb\u5185\u3067\u6a5f\u80fd\u3057\u306a\u3044\u305f\u3081\u3001\u81ea\u524d\u3067\uff09\n                \/\/ \u307e\u305a <code> \u3092\u9000\u907f\uff08\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u5fa9\u53f7\u3057\u3066 ` ` \u306b\u3002\u5f8c\u6bb5\u306e\u30bf\u30b0\u9664\u53bb\u3084\n                \/\/ \u6b8b\u9ab8\u9664\u53bb\u304b\u3089\u4e2d\u8eab\u3092\u5b88\u308a\u3001<a href> \u306e\u3088\u3046\u306a\u300c\u30b3\u30fc\u30c9\u5185\u306e\u30bf\u30b0\u6587\u5b57\u5217\u300d\u3092\u8aa4\u524a\u9664\u3057\u306a\u3044\uff09\n                const cellCodes = [];\n                cellContent = cellContent.replace(\/<code\\b[^>]*>([\\s\\S]*?)<\\\/code>\/gi, function (m, c) {\n                  const decoded = c\n                    .replace(\/&lt;\/g, '<')\n                    .replace(\/&gt;\/g, '>')\n                    .replace(\/&quot;\/g, '\"')\n                    .replace(\/&#39;\/g, \"'\")\n                    .replace(\/&lsqb;\/g, '[')\n                    .replace(\/&rsqb;\/g, ']')\n                    .replace(\/&#091;\/g, '[')\n                    .replace(\/&#093;\/g, ']')\n                    .replace(\/&amp;\/g, '&');\n                  cellCodes.push('`' + decoded + '`');\n                  return 'XCELLCODEX' + (cellCodes.length - 1) + 'X';\n                });\n\n                \/\/ strong\/b \u2192 **\u3001em\/i \u2192 *\u3001a \u2192 [text](href)\n                cellContent = cellContent.replace(\/<(strong|b)\\b[^>]*>([\\s\\S]*?)<\\\/\\1>\/gi, '**$2**');\n                cellContent = cellContent.replace(\/<(em|i)\\b[^>]*>([\\s\\S]*?)<\\\/\\1>\/gi, '*$2*');\n                cellContent = cellContent.replace(\/<a\\b[^>]*href=[\"']([^\"']*)[\"'][^>]*>([\\s\\S]*?)<\\\/a>\/gi, '[$2]($1)');\n\n                \/\/ \u2605 \u6574\u5f62\u6b8b\u9ab8\u30bf\u30b0\uff08<span>, <li>, class\u4ed8\u304d <code> \u7b49\uff09\u306e\u307f\u9664\u53bb\u3002\n                \/\/   <head>, <table>, <style> \u306e\u3088\u3046\u306a\u300c\u6587\u5b57\u3068\u3057\u3066\u66f8\u304b\u308c\u305f\u30bf\u30b0\u300d\u306f\u6b8b\u3059\n                \/\/   \uff08\u5168 <\u2026> \u3092\u6d88\u3059\u3068 round-trip \u3067\u6d88\u6ec5\u3057\u3066\u3057\u307e\u3046\u305f\u3081\uff09\u3002\n                cellContent = cellContent.replace(\/<\\\/?(?:span|strong|b|em|i|u|small|sub|sup|mark|del|ins|cite|a|p|li|ul|ol|font|code|abbr|q|kbd|samp|var|br)\\b[^>]*>\/gi, '');\n\n                \/\/ \u9000\u907f\u3057\u305f\u30b3\u30fc\u30c9\u3092\u5fa9\u5143\n                cellCodes.forEach((code, i) => {\n                  cellContent = cellContent.replace('XCELLCODEX' + i + 'X', function () { return code; });\n                });\n              }\n\n              pipeRow += cellContent.trim() + '|';\n              colCount++;\n            });\n          }\n\n          return { pipe: pipeRow, cols: colCount };\n        }\n\n        \/\/ \u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u884c\u3092\u751f\u6210\n        function makeSeparator(colCount) {\n          let sep = '|';\n          for (let i = 0; i < colCount; i++) { sep += '---|'; }\n          return sep;\n        }\n\n        let pipeRows = '';\n        let colCount = 0;\n\n        if (hasThead && theadRows.length > 0) {\n          \/\/ thead\u884c\u3092\u51fa\u529b\n          theadRows.forEach(row => {\n            const result = rowToPipe(row);\n            pipeRows += result.pipe + '\\n';\n            if (colCount === 0) colCount = result.cols;\n          });\n          \/\/ \u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u884c\u3092\u633f\u5165\n          if (colCount > 0) { pipeRows += makeSeparator(colCount) + '\\n'; }\n          \/\/ tbody\u884c\u3092\u51fa\u529b\n          tbodyRows.forEach(row => {\n            pipeRows += rowToPipe(row).pipe + '\\n';\n          });\n        } else {\n          \/\/ thead\u306a\u3057 \u2192 1\u884c\u76ee\u306e\u5f8c\u306b\u30bb\u30d1\u30ec\u30fc\u30bf\u30fc\u884c\u3092\u633f\u5165\n          tbodyRows.forEach((row, index) => {\n            const result = rowToPipe(row);\n            pipeRows += result.pipe + '\\n';\n            if (index === 0) {\n              colCount = result.cols;\n              if (colCount > 0) { pipeRows += makeSeparator(colCount) + '\\n'; }\n            }\n          });\n        }\n\n        \/\/\u6700\u5f8c\u306e\u6539\u884c\u3092\u524a\u9664\n        const finalPipeTable = pipeRows.replace(\/\\n$\/, '');\n\n        \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u5316\uff08turndown\u3067\u30c6\u30fc\u30d6\u30eb\u5185\u6539\u884c\u304c\u6f70\u3055\u308c\u308b\u306e\u3092\u9632\u3050\uff09\n        if (usePlaceholder) {\n          const index = tableBlocks.length;\n          tableBlocks.push(finalPipeTable);\n          \/\/ <p>...<\/p> \u3067\u56f2\u3093\u3067turndown\u306b\u72ec\u7acb\u30d6\u30ed\u30c3\u30af\u3068\u3057\u3066\u8a8d\u8b58\u3055\u305b\u308b\n          \/\/ \uff08\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306f <pre><code> \u4fdd\u8b77\u3068\u540c\u3058\u30d1\u30bf\u30fc\u30f3\uff09\n          return '<p>___TABLE_BLOCK_' + index + '___<\/p>';\n        }\n        return finalPipeTable;\n      });\n    } catch (error) {\n      console.error('\u30c6\u30fc\u30d6\u30eb\u30c7\u30b3\u30fc\u30c9\u30a8\u30e9\u30fc:', error);\n      showMessage('\u30c6\u30fc\u30d6\u30eb\u306e\u30c7\u30b3\u30fc\u30c9\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002', false);\n      return text;\n    }\n  }\n\n\n\n\n  \/\/ ============================================================\n  \/\/ <pre><code> \u2192 ``` \u30d5\u30a7\u30f3\u30b9\u30c9\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u306b\u5909\u63db\n  \/\/ turndown\u306e\u524d\u306b\u5b9f\u884c\u3057\u3001\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u3067\u4fdd\u8b77\u3059\u308b\n  \/\/ ============================================================\n  \/\/ \u5b9f\u4f53\u53c2\u7167\u3092\u30c7\u30b3\u30fc\u30c9\uff08\u6587\u5b57\u5b9f\u4f53\u53c2\u7167\u30fb10\u9032\u30fb16\u9032\u306e3\u7a2e\uff09\u3002\n  \/\/   \u30fb10\u9032 &#NN; \/ 16\u9032 &#xNN; \u306f\u6b63\u898f\u8868\u73fe\u3067\u78ba\u5b9f\u306b\u5909\u63db\n  \/\/   \u30fb\u540d\u524d\u4ed8\u304d &name; \u306f\u30d6\u30e9\u30a6\u30b6\u5185\u8535\u30d1\u30fc\u30b5\u30fc\uff08textarea\uff09\u3067\u5168\u4ef6\u5bfe\u5fdc\uff08\u672a\u77e5\u306f\u305d\u306e\u307e\u307e\uff09\n  \/\/   \u30fb\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3089\u3057\u304d\u90e8\u5206\u3060\u3051\u3092\u500b\u5225\u306b\u901a\u3059\u306e\u3067 <\/textarea> \u7b49\u306e\u6df7\u5165\u3067\u3082\u58ca\u308c\u306a\u3044\n  \/\/   \u30fb1\u30d1\u30b9\u306e\u307f\uff08&amp;#13; \u306f &#13; \u307e\u3067\u306b\u3068\u3069\u3081\u3001\u904e\u5270\u30c7\u30b3\u30fc\u30c9\u3057\u306a\u3044\uff09\n\n  var _entityTextarea = null;\n  function decodeEntities(text) {\n    if (!_entityTextarea) _entityTextarea = document.createElement('textarea');\n    \/\/ \u6570\u5024\u6587\u5b57\u53c2\u7167\uff0810\u9032\u30fb16\u9032\uff09\u306f\u81ea\u524d\u3067\u30c7\u30b3\u30fc\u30c9\u3059\u308b\u3002\n    \/\/ \u203b textarea.value \u306f CR \u3092 LF \u306b\u6b63\u898f\u5316\u3059\u308b\u305f\u3081\u3001&#13; \u3092 textarea \u7d4c\u7531\u306b\u3059\u308b\u3068\n    \/\/   \\r \u3067\u306f\u306a\u304f \\n \u306b\u306a\u308a\u3001&#13;&#10; \u304c \\n\\n\uff082\u6539\u884c\uff09\u306b\u5316\u3051\u308b\u3002\u3053\u308c\u3092\u907f\u3051\u308b\u3002\n    text = text.replace(\/&#(\\d+);\/g, function (m, d) {\n      var cp = parseInt(d, 10);\n      if (cp >= 0 && cp <= 0x10FFFF) { try { return String.fromCodePoint(cp); } catch (e) { } }\n      return m;\n    });\n    text = text.replace(\/&#[xX]([0-9a-fA-F]+);\/g, function (m, h) {\n      var cp = parseInt(h, 16);\n      if (cp >= 0 && cp <= 0x10FFFF) { try { return String.fromCodePoint(cp); } catch (e) { } }\n      return m;\n    });\n    \/\/ \u540d\u524d\u4ed8\u304d\u6587\u5b57\u53c2\u7167\u306f\u30d6\u30e9\u30a6\u30b6\u5185\u8535\u30d1\u30fc\u30b5\u30fc\u3067\u5168\u4ef6\u5bfe\u5fdc\uff08\u672a\u77e5\u306f\u305d\u306e\u307e\u307e\uff09\n    text = text.replace(\/&[a-zA-Z][a-zA-Z0-9]*;?\/g, function (m) {\n      _entityTextarea.innerHTML = m;\n      return _entityTextarea.value;\n    });\n    \/\/ CRLF\uff08\\r\\n\uff09\u30fb\u5358\u72ecCR\uff08\\r\uff09\u3092 LF\uff08\\n\uff09\u306b\u6b63\u898f\u5316\u3002\n    \/\/ &#13;&#10; \u304c \\r\\n \u306e2\u6587\u5b57\u306b\u306a\u308a\u3001\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u30672\u884c\u5206\uff08\u7a7a\u884c\uff09\u306b\u898b\u3048\u308b\u306e\u3092\u9632\u3050\u3002\n    \/\/ \u203b HTML\u30e1\u30fc\u30eb\u7b49\u3067 CRLF \u304c\u5fc5\u8981\u306a\u3089\u3001\u30a8\u30f3\u30b3\u30fc\u30c9\u5074\u306e\u300c\u6539\u884c \u2192 &#13;&#10;\u300d\u3067\u623b\u305b\u308b\u3002\n    text = text.replace(\/\\r\\n?\/g, '\\n');\n    return text;\n  }\n\n\n  function decodePreCode(text, codeBlocks) {\n    \/\/ \u30aa\u30d7\u30b7\u30e7\u30f3\u300c\u5909\u63db\u5f8c\u306b\u6b8b\u3063\u305fHTML\u30bf\u30b0\u3092\u9664\u53bb\u300d\u304cON\u306e\u5834\u5408\u3001\n    \/\/ \u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u5185\u306e\u30b7\u30f3\u30bf\u30c3\u30af\u30b9\u30cf\u30a4\u30e9\u30a4\u30c8\u7528 <span> \u88c5\u98fe\u3082\u5265\u304c\u3059\u3002\n    \/\/ \u203b <span> \u30bf\u30b0\u3060\u3051\u3092\u5bfe\u8c61\u306b\u3057\u3066\u3001\u4e2d\u8eab\uff08>\u3001\u30b3\u30fc\u30c9\u6587\u5b57\u306a\u3069\uff09\u306f\u305d\u306e\u307e\u307e\u4fdd\u6301\u3002\n    \/\/   `<span><span>> ...` \u306e\u3088\u3046\u306a\u4e26\u3073\u3067\u3082\u3001\u30d6\u30ed\u30c3\u30af\u30af\u30a9\u30fc\u30c8\u8a18\u6cd5\u306e > \u306f\u6b8b\u308b\u3002\n    const stripSpans = (function () {\n      const el = document.getElementById('decodeRemoveTags');\n      return el ? el.checked : true;\n    })();\n\n    return text.replace(\/<pre[^>]*>\\s*<code(?:\\s+class=\"language-([^\"]*)\")?[^>]*>([\\s\\S]*?)<\\\/code>\\s*<\\\/pre>\/gi, function (match, lang, content) {\n      \/\/ \u2605 \u30b7\u30f3\u30bf\u30c3\u30af\u30b9\u30cf\u30a4\u30e9\u30a4\u30c8\u7528\u306e <span>...<\/span> \u88c5\u98fe\u3092\u5148\u306b\u5265\u304c\u3059\uff08\u30aa\u30d7\u30b7\u30e7\u30f3ON\u6642\u306e\u307f\uff09\n      \/\/ \u30bf\u30b0\u305d\u306e\u3082\u306e\u3060\u3051\u3092\u6d88\u3057\u3001\u4e2d\u8eab\u306f\u5b8c\u5168\u4fdd\u6301\u3059\u308b\n      if (stripSpans) {\n        content = content.replace(\/<\\\/?span\\b[^>]*>\/gi, '');\n      }\n\n      \/\/ HTML\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u30c7\u30b3\u30fc\u30c9\uff08&lsqb;\/&rsqb; \u306f\u30a8\u30f3\u30b3\u30fc\u30c9\u65b9\u5411\u306e [ ] \u9000\u907f\u306b\u5bfe\u5fdc\u3001&amp; \u306f\u6700\u5f8c\uff09\n      let decoded = content\n        .replace(\/&lt;\/g, '<')\n        .replace(\/&gt;\/g, '>')\n        .replace(\/&quot;\/g, '\"')\n        .replace(\/&#39;\/g, \"'\")\n        .replace(\/&lsqb;\/g, '[')\n        .replace(\/&rsqb;\/g, ']')\n        .replace(\/&#091;\/g, '[')\n        .replace(\/&#093;\/g, ']')\n        .replace(\/&amp;\/g, '&');\n\n      \/\/ \u524d\u5f8c\u306e\u4f59\u5206\u306a\u6539\u884c\u3092\u524a\u9664\n      decoded = decoded.replace(\/^\\n+\/, '').replace(\/\\n+$\/, '');\n\n      \/\/ \u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u5185\u30a4\u30f3\u30c7\u30f3\u30c8\u6574\u5f62\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\u3002\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u5fa9\u53f7\u5f8c\u306e\u751f < > \u3067\u6574\u5f62\uff09\n      const reBtn = document.getElementById('convertReindentCode');\n      if (reBtn && reBtn.checked) {\n        decoded = reindentCodeBlock(decoded, lang || '');\n      }\n\n      \/\/ \u4e2d\u8eab\u306b\u542b\u307e\u308c\u308b\u30d0\u30c3\u30af\u30af\u30a9\u30fc\u30c8\u9023\u7d9a\u306e\u6700\u9577\u6570\u3092\u8abf\u3079\u3001\n      \/\/ \u305d\u308c\u3088\u308a1\u3064\u591a\u3044\u6570\uff08\u6700\u4f4e3\u3064\uff09\u3067\u30d5\u30a7\u30f3\u30b9\u3092\u4f5c\u308b\u3002\n      \/\/ \u4f8b: \u4e2d\u8eab\u306b ``` \u304c\u542b\u307e\u308c\u308b \u2192 \u5916\u5074\u306f ```` \uff084\u3064\uff09\u3067\u56f2\u3080\n      let maxBackticks = 0;\n      const backtickRuns = decoded.match(\/`+\/g);\n      if (backtickRuns) {\n        backtickRuns.forEach(function (run) {\n          if (run.length > maxBackticks) maxBackticks = run.length;\n        });\n      }\n      const fenceLen = Math.max(3, maxBackticks + 1);\n      const fenceChars = '`'.repeat(fenceLen);\n\n      const fence = fenceChars + (lang || '');\n      const block = fence + '\\n' + decoded + '\\n' + fenceChars;\n\n      \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u306b\u7f6e\u63db\u3057\u3066turndown\u304b\u3089\u4fdd\u8b77\n      \/\/ turndown\u306f\u30d5\u30ea\u30fc\u30c6\u30ad\u30b9\u30c8\u306e\u6539\u884c\u3092\u534a\u89d2\u30b9\u30da\u30fc\u30b9\u306b\u6298\u308a\u305f\u305f\u3080\u305f\u3081\u3001\n      \/\/ \u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u5358\u72ec\u3060\u3068\u524d\u5f8c\u306e\u30c6\u30ad\u30b9\u30c8\u30fb\u30c6\u30fc\u30d6\u30eb\u3068\u540c\u4e00\u6bb5\u843d\u3068\u3057\u3066\u9023\u7d50\u3055\u308c\u3066\u3057\u307e\u3046\u3002\n      \/\/ <p>...<\/p> \u3067\u56f2\u3080\u3053\u3068\u3067\u3001turndown\u304c\u72ec\u7acb\u3057\u305f\u6bb5\u843d\u3068\u3057\u3066\u6271\u3044\u3001\n      \/\/ \u5fa9\u5143\u6642\u306b\u524d\u5f8c\u306e\u6539\u884c\u304c\u78ba\u4fdd\u3055\u308c\u308b\u3002\n      const index = codeBlocks.length;\n      codeBlocks.push(block);\n      return '<p>___CODE_BLOCK_' + index + '___<\/p>';\n    });\n  }\n\n\n  \/\/ <code> \u3092\u4f34\u308f\u306a\u3044\u88f8\u306e <pre>\u2026<\/pre> \u3092\u4fdd\u8b77\u3059\u308b\uff08<pre><code> \u306f decodePreCode \u3067\u51e6\u7406\u6e08\u307f\uff09\u3002\n  function decodeBarePre(text, codeBlocks) {\n    return text.replace(\/<pre[^>]*>([\\s\\S]*?)<\\\/pre>\/gi, function (match, content) {\n      \/\/ HTML\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u30c7\u30b3\u30fc\u30c9\n      let decoded = content\n        .replace(\/&lt;\/g, '<')\n        .replace(\/&gt;\/g, '>')\n        .replace(\/&quot;\/g, '\"')\n        .replace(\/&#39;\/g, \"'\")\n        .replace(\/&lsqb;\/g, '[')\n        .replace(\/&rsqb;\/g, ']')\n        .replace(\/&#091;\/g, '[')\n        .replace(\/&#093;\/g, ']')\n        .replace(\/&amp;\/g, '&');\n      decoded = decoded.replace(\/^\\n+\/, '').replace(\/\\n+$\/, '');\n\n      \/\/ \u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u5185\u30a4\u30f3\u30c7\u30f3\u30c8\u6574\u5f62\uff08\u88f8<pre>\u306b\u306f\u8a00\u8a9e\u6307\u5b9a\u304c\u7121\u3044\u306e\u3067\u8a00\u8a9e\u306a\u3057\u3067\u5b9f\u884c\uff09\n      const reBtn = document.getElementById('convertReindentCode');\n      if (reBtn && reBtn.checked) {\n        decoded = reindentCodeBlock(decoded, '');\n      }\n\n      let maxBackticks = 0;\n      const runs = decoded.match(\/`+\/g);\n      if (runs) {\n        runs.forEach(function (r) { if (r.length > maxBackticks) maxBackticks = r.length; });\n      }\n      const fenceChars = '`'.repeat(Math.max(3, maxBackticks + 1));\n      const block = fenceChars + '\\n' + decoded + '\\n' + fenceChars;\n\n      const index = codeBlocks.length;\n      codeBlocks.push(block);\n      return '<p>___CODE_BLOCK_' + index + '___<\/p>';\n    });\n  }\n\n\n  \/\/ \u30a4\u30f3\u30e9\u30a4\u30f3 <code>\u2026<\/code> \u3092\u4fdd\u8b77\u3059\u308b\uff08<pre><code> \u306f decodePreCode \u3067\u51e6\u7406\u6e08\u307f\uff09\u3002\n  \/\/ turndown \/ removeTags \u304c\u4e2d\u8eab\u306e\u30bf\u30b0\u72b6\u30c6\u30ad\u30b9\u30c8\u3092\u6d88\u3059\u306e\u3092\u9632\u304e\u3001`\u2026` \u306b\u5fa9\u5143\u3059\u308b\u3002\n  function decodeInlineCode(text, inlineCodes) {\n    const stripSpans = (function () {\n      const el = document.getElementById('decodeRemoveTags');\n      return el ? el.checked : true;\n    })();\n\n    return text.replace(\/<code\\b[^>]*>([\\s\\S]*?)<\\\/code>\/gi, function (match, content) {\n      \/\/ \u30b7\u30f3\u30bf\u30c3\u30af\u30b9\u30cf\u30a4\u30e9\u30a4\u30c8\u7528 <span> \u304c\u3042\u308c\u3070\u5265\u304c\u3059\uff08\u4e2d\u8eab\u306f\u4fdd\u6301\uff09\n      if (stripSpans) {\n        content = content.replace(\/<\\\/?span\\b[^>]*>\/gi, '');\n      }\n      \/\/ HTML\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u30c7\u30b3\u30fc\u30c9\uff08&lsqb;\/&rsqb; \u306f\u30a8\u30f3\u30b3\u30fc\u30c9\u65b9\u5411\u306e [ ] \u9000\u907f\u306b\u5bfe\u5fdc\u3001&amp; \u306f\u6700\u5f8c\uff09\n      let decoded = content\n        .replace(\/&lt;\/g, '<')\n        .replace(\/&gt;\/g, '>')\n        .replace(\/&quot;\/g, '\"')\n        .replace(\/&#39;\/g, \"'\")\n        .replace(\/&lsqb;\/g, '[')\n        .replace(\/&rsqb;\/g, ']')\n        .replace(\/&#091;\/g, '[')\n        .replace(\/&#093;\/g, ']')\n        .replace(\/&amp;\/g, '&');\n\n      \/\/ \u4e2d\u8eab\u306e\u30d0\u30c3\u30af\u30af\u30a9\u30fc\u30c8\u6700\u9577\u9023\u7d9a\u306b\u5408\u308f\u305b\u3066\u30d5\u30a7\u30f3\u30b9\u9577\u3092\u6c7a\u3081\u308b\uff08\u6700\u4f4e1\uff09\n      let maxBackticks = 0;\n      const runs = decoded.match(\/`+\/g);\n      if (runs) {\n        runs.forEach(function (r) { if (r.length > maxBackticks) maxBackticks = r.length; });\n      }\n      const bt = '`'.repeat(Math.max(1, maxBackticks + 1));\n\n      \/\/ \u5148\u982d\/\u672b\u5c3e\u304c\u30d0\u30c3\u30af\u30af\u30a9\u30fc\u30c8\u3001\u307e\u305f\u306f\u7a7a\u306e\u3068\u304d\u306f\u30a4\u30f3\u30e9\u30a4\u30f3\u4ed5\u69d8\u306b\u5f93\u3044\u5185\u5074\u306b\u7a7a\u767d\u3092\u5165\u308c\u308b\n      let inline;\n      if (decoded === '' || decoded.startsWith('`') || decoded.endsWith('`')) {\n        inline = bt + ' ' + decoded + ' ' + bt;\n      } else {\n        inline = bt + decoded + bt;\n      }\n\n      const index = inlineCodes.length;\n      inlineCodes.push(inline);\n      return 'XINLCODEX' + index + 'X';\n    });\n  }\n\n\n  \/\/ ============================================================\n  \/\/ <picture> \u30bf\u30b0\u3092\u5265\u304c\u3057\u3066\u4e2d\u306e <img> \u306e\u307f\u306b\u3059\u308b\n  \/\/ + \u30d6\u30ed\u30c3\u30af\u30ec\u30d9\u30eb\u306e <img> \u306e\u5f8c\u306b <br \/> \u3092\u88dc\u5b8c\u3059\u308b\n  \/\/ ============================================================\n  function decodeStripPicture(text, skipBr) {\n    \/\/ <picture> \u3092\u5265\u304c\u3057\u3066\u4e2d\u306e <img> \u3060\u3051\u6b8b\u3059\n    text = text.replace(\/<picture[^>]*>\\s*([\\s\\S]*?)\\s*<\\\/picture>\/gi, function (match, inner) {\n      const imgMatch = inner.match(\/<img[^>]*\\\/?>\/i);\n      return imgMatch ? imgMatch[0] : inner;\n    });\n\n    \/\/ img\u30bf\u30b0\u3092\u6b8b\u3059\u30e2\u30fc\u30c9\u3067\u306f <br> \u88dc\u5b8c\u3092\u3057\u306a\u3044\uff08float\u7b49\u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u5d29\u3055\u306a\u3044\u305f\u3081\uff09\n    if (skipBr) return text;\n\n    \/\/ \u30d6\u30ed\u30c3\u30af\u30ec\u30d9\u30eb\u306e <img> \u306e\u5f8c\u306b <br \/> \u304c\u306a\u3051\u308c\u3070\u88dc\u5b8c\n    \/\/ \uff08\u76f4\u5f8c\u304c <br\u3001\u6539\u884c+<\u3001\u6539\u884c+\u7a7a\u884c \u3067\u306a\u3051\u308c\u3070\u8ffd\u52a0\uff09\n    text = text.replace(\/(<img[^>]*\\\/?>)(?!\\s*<br)(\\s*\\n)\/gi, '$1<br \/>\\n');\n\n    return text;\n  }\n\n\n  \/\/HTML\u3092 \u2192 Markdown\u8a18\u6cd5 \u306b\u30c7\u30b3\u30fc\u30c9\n  function decodeHtml2Md(text) {\n    const options = {};\n    if (document.getElementById('decodeHeadingAtx').checked) {\n      options.headingStyle = 'atx';\n    }\n    const turndownService = new TurndownService(options);\n    let result = turndownService.turndown(text);\n\n    \/\/ \u30c6\u30fc\u30d6\u30eb\u306e\u5404\u884c\u3092\u6539\u884c\u3067\u533a\u5207\u308b\n    \/\/ \u30d1\u30bf\u30fc\u30f31: | | \u3092 |\\n| \u306b\u5909\u63db\uff08\u884c\u306e\u7d42\u308f\u308a\u3068\u6b21\u306e\u884c\u306e\u59cb\u307e\u308a\uff09\n    result = result.replace(\/\\|\\s+\\|\/g, '|\\n|');\n\n    \/\/ \u30d1\u30bf\u30fc\u30f32: \u30c6\u30fc\u30d6\u30eb\u884c\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u691c\u51fa\u3057\u3066\u6539\u884c\u3092\u8ffd\u52a0\n    \/\/ |xxx|yyy|zzz| |aaa|bbb|ccc| \u306e\u3088\u3046\u306a\u9023\u7d9a\u3092\u5206\u5272\n    \/\/ \u305f\u3060\u3057\u3001\u30bb\u30eb\u5185\u306e\u30b9\u30da\u30fc\u30b9\u306f\u4fdd\u6301\n\n    \/\/ Zenn\/Qiita \u5bfe\u7b56\uff1a\u592a\u5b57\uff08** **\uff09\u30fb\u659c\u4f53\uff08_ _\uff09\u306e\u5916\u5074\u306b\u534a\u89d2\u30b9\u30da\u30fc\u30b9\u3092\u5165\u308c\u308b\u3002\n    \/\/ CJK\u7b49\u306b\u76f4\u63a5\u96a3\u63a5\u3059\u308b\u3068\u592a\u5b57\/\u659c\u4f53\u3068\u8a8d\u8b58\u3055\u308c\u306a\u3044\u30d1\u30fc\u30b5\u30fc\uff08Zenn\/Qiita\uff09\u5411\u3051\u3002\n    \/\/ \u203b\u3053\u306e\u6642\u70b9\u3067\u30b3\u30fc\u30c9\u5185\u5bb9\u306f\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u306b\u9000\u907f\u6e08\u307f\u306a\u306e\u3067\u3001\u30b3\u30fc\u30c9\u5185\u306e ** _ \u306f\u5bfe\u8c61\u5916\u3002\n    \/\/   \u659c\u4f53\u306f\u30eb\u30c3\u30af\u30a2\u30e9\u30a6\u30f3\u30c9\u3067 ___CODE_BLOCK___ \u7b49\u306e\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u3092\u58ca\u3055\u306a\u3044\u3088\u3046\u4fdd\u8b77\u3059\u308b\u3002\n    \/\/ \u592a\u5b57\uff08\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u306b * \u306f\u7121\u3044\u306e\u3067\u5b89\u5168\uff09\n    \/\/ \u203b\u5fc5\u305a1\u30d1\u30b9\u3067\u51e6\u7406\u3057\u3001\u958b\u304d ** \u306e\u76f4\u5f8c\u30fb\u9589\u3058 ** \u306e\u76f4\u524d\u306b\u7a7a\u767d\u3092\u8a31\u3055\u306a\u3044\uff08CommonMark\u6e96\u62e0\u3002\u659c\u4f53\u5074\u3068\u540c\u6761\u4ef6\uff09\u3002\n    \/\/   \u65e7\u5b9f\u88c5\u306f2\u30d1\u30b9\uff08\u524d\u7528\u30fb\u5f8c\u7528\uff09\u304b\u3064\u7a7a\u767d\u30ac\u30fc\u30c9\u304c\u7121\u304b\u3063\u305f\u305f\u3081\u3001\n    \/\/   \u300c\u884c\u5185\u306b\u592a\u5b57\u304c2\u3064\u4ee5\u4e0a\u3042\u308a\u3001\u6700\u521d\u306e\u592a\u5b57\u306e\u76f4\u524d\u304c\u7a7a\u767d\u300d\u306e\u3068\u304d\u7834\u640d\u3057\u3066\u3044\u305f\u3002\n    \/\/     \u5165\u529b: Cloud Console \u2192 **API\u3068\u30b5\u30fc\u30d3\u30b9** \u2192 **\u30e9\u30a4\u30d6\u30e9\u30ea** \u3067\n    \/\/     1\u56de\u76ee: \u672c\u7269\u306e **API\u3068\u30b5\u30fc\u30d3\u30b9** \u306f\u76f4\u524d\u304c\u7a7a\u767d\u3067 (?<=\\S) \u306b\u5f3e\u304b\u308c\u3001\u8d70\u67fb\u304c\u7d9a\u3044\u305f\u7d50\u679c\n    \/\/            \u96a3\u63a5\u3059\u308b2\u3064\u306e\u592a\u5b57\u306e\u3010\u9699\u9593\u3011\"** \u2192 **\" \u3092\u592a\u5b57\u3068\u8aa4\u8a8d \u2192 **API\u3068\u30b5\u30fc\u30d3\u30b9 ** \u2192 **\u30e9\u30a4\u30d6\u30e9\u30ea**\n    \/\/     2\u56de\u76ee: \u540c\u3058\u9699\u9593\u306b\u518d\u3073\u30de\u30c3\u30c1           \u2192 **API\u3068\u30b5\u30fc\u30d3\u30b9 ** \u2192 ** \u30e9\u30a4\u30d6\u30e9\u30ea**\n    \/\/     \u2192 \u672c\u7269\u306e\u592a\u5b57\u306e\u5185\u5074\u306b\u30b9\u30da\u30fc\u30b9\u304c\u5165\u308a\u3001Markdown \u306e\u5f37\u8abf\u304c\u9589\u3058\u306a\u304f\u306a\u308b\u3002\n    \/\/   1\u30d1\u30b9\u306a\u3089\u672c\u7269\u306e\u592a\u5b57\u3092\u6d88\u8cbb\u3057\u305f\u6642\u70b9\u3067\u8d70\u67fb\u4f4d\u7f6e\u304c\u5148\u3078\u9032\u3080\u305f\u3081\u3001\u9699\u9593\u3092\u898b\u308b\u6a5f\u4f1a\u81ea\u4f53\u304c\u7121\u3044\u3002\n    result = result.replace(\/\\*\\*(?!\\s)[^*\\n]+?(?<!\\s)\\*\\*\/g, function (m, offset, s) {\n      const before = s[offset - 1];\n      const after = s[offset + m.length];\n      return ((before && \/\\S\/.test(before)) ? ' ' : '') + m\n        + ((after && \/\\S\/.test(after)) ? ' ' : '');\n    });\n    \/\/ \u659c\u4f53\uff08\u672c\u7269\u306e\u659c\u4f53\u30de\u30fc\u30ab\u30fc\u306e\u307f\u3002\u958b\u59cb _ \u304c \\\uff08\u30a8\u30b9\u30b1\u30fc\u30d7\uff09\u3084 _ \u3084\u82f1\u6570\u5b57\u306b\u96a3\u63a5\u305b\u305a\u3001\n    \/\/   turndown\u304c\u30a8\u30b9\u30b1\u30fc\u30d7\u3057\u305f\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u306e \\_ \u3092\u8aa4\u691c\u51fa\u3057\u306a\u3044\u3088\u3046\u306b\u3059\u308b\uff09\n    result = result.replace(\/(?<=\\S)((?<![\\\\_\\w])_(?!\\s)[^_\\n]*?[^\\s\\\\]_(?![_\\w]))\/g, ' $1');\n    result = result.replace(\/((?<![\\\\_\\w])_(?!\\s)[^_\\n]*?[^\\s\\\\]_(?![_\\w]))(?=\\S)\/g, '$1 ');\n\n    \/\/ &lsqb; &rsqb; \u3092 [ ] \u306b\u623b\u3059\n    result = result.replace(\/&lsqb;\/g, '[');\n    result = result.replace(\/&rsqb;\/g, ']');\n\n    return result;\n  }\n\n\n\n\n  \/\/\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u3078\u306e\u30b3\u30d4\u30fc\n  function copyToClipboard(text, isDecode = false) {\n    navigator.clipboard.writeText(text).then(function () {\n      if (isDecode) {\n        \/\/\u53f3\u304b\u3089\u5de6\u3078\u306e\u5909\u63db\u6642\u306f\u5de6\u5074(decodedMessage)\u306b\u8868\u793a\n        showMessage(\"\u30c6\u30ad\u30b9\u30c8\u304c\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u30b3\u30d4\u30fc\u3055\u308c\u307e\u3057\u305f\uff01\", true, 'decodedMessage');\n      } else {\n        \/\/\u5de6\u304b\u3089\u53f3\u3078\u306e\u5909\u63db\u6642\u306f\u53f3\u5074(encodedMessage)\u306b\u8868\u793a\n        showMessage(\"\u30c6\u30ad\u30b9\u30c8\u304c\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u30b3\u30d4\u30fc\u3055\u308c\u307e\u3057\u305f\uff01\", true, 'encodedMessage');\n      }\n    }, function (err) {\n      if (isDecode) {\n        showMessage(\"\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u3078\u306e\u30b3\u30d4\u30fc\u306b\u5931\u6557\u3057\u307e\u3057\u305f: \" + err, false, 'decodedMessage');\n      } else {\n        showMessage(\"\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u3078\u306e\u30b3\u30d4\u30fc\u306b\u5931\u6557\u3057\u307e\u3057\u305f: \" + err, false, 'encodedMessage');\n      }\n    });\n  }\n\n\n\n\n  \/\/\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\n  function showMessage(msg, isSuccess, messageAreaId) {\n    let messageArea = document.getElementById(messageAreaId);\n    const messageHTML = isSuccess ?\n      `<p class=\"alert is-ghosted is-primary mt-0.5r\">\n<i class=\"icon mas ma-check_circle c-primary mr-0.5r\"><\/i>\n<span>${msg}<\/span>\n<\/p>` :\n      `<p class=\"alert is-ghosted is-caution mt-0.5r\">\n<i class=\"icon mas ma-error c-caution mr-0.5r\"><\/i>\n<span>${msg}<\/span>\n<\/p>`;\n\n    messageArea.innerHTML = '';\n    messageArea.insertAdjacentHTML('beforeend', messageHTML);\n\n    setTimeout(() => {\n      messageArea.innerHTML = '';\n    }, 3000);\n  }\n\n\n\n\n  \/\/\u3059\u3079\u3066\u306e\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u3092\u5916\u3059\n  function uncheckAllOptions() {\n    const checkboxes = document.querySelectorAll('input[type=\"checkbox\"]');\n    checkboxes.forEach(checkbox => {\n      checkbox.checked = false;\n    });\n    saveOptions();\n    showMessage('\u3059\u3079\u3066\u306e\u30c1\u30a7\u30c3\u30af\u304c\u5916\u308c\u307e\u3057\u305f', true, 'decodedMessage');\n  }\n\n\n  \/\/\u30c7\u30d5\u30a9\u30eb\u30c8\u72b6\u614b\u306b\u623b\u3059\uff08HTML \u306e defaultChecked \/ defaultSelected \u3092\u4f7f\u7528\uff09\n  function resetDefaultOptions() {\n    OPTION_SELECTORS.forEach(sel => {\n      document.querySelectorAll(sel).forEach(el => {\n        if (el.type === 'checkbox') {\n          el.checked = el.defaultChecked;\n        } else if (el.tagName === 'SELECT') {\n          el.value = el.querySelector('option[selected]')?.value ?? el.options[0]?.value;\n        } else {\n          el.value = el.defaultValue;\n        }\n      });\n    });\n    saveOptions();\n    showMessage('\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u306b\u623b\u3057\u307e\u3057\u305f', true, 'decodedMessage');\n  }\n\n\n\n\n  \/\/ =========================================\n  \/\/ localStorage\uff1a\u30c6\u30ad\u30b9\u30c8\uff0b\u30aa\u30d7\u30b7\u30e7\u30f3\u72b6\u614b\u306e\u4fdd\u5b58\u30fb\u5fa9\u5143\n  \/\/ =========================================\n\n  const LS_KEY_TEXT = 'encodedText';\n  const LS_KEY_OPTIONS = 'cnvtVkaA_options';\n\n  \/\/ \u4fdd\u5b58\u5bfe\u8c61\u30bb\u30ec\u30af\u30bf\u30fc\uff08id\u5c5e\u6027\u306e\u3042\u308b\u8981\u7d20\u306e\u307f\u5bfe\u8c61\uff09\n  const OPTION_SELECTORS = [\n    'input[type=\"checkbox\"]',\n    'input[type=\"text\"]',\n    'input[type=\"number\"]',\n    'select',\n  ];\n\n\n  \/\/ \u30aa\u30d7\u30b7\u30e7\u30f3\u72b6\u614b\u3092\u4fdd\u5b58\n  function saveOptions() {\n    const state = {};\n    OPTION_SELECTORS.forEach(sel => {\n      document.querySelectorAll(sel).forEach(el => {\n        if (!el.id) return;\n        state[el.id] = (el.type === 'checkbox') ? el.checked : el.value;\n      });\n    });\n    localStorage.setItem(LS_KEY_OPTIONS, JSON.stringify(state));\n  }\n\n\n  \/\/ \u30aa\u30d7\u30b7\u30e7\u30f3\u72b6\u614b\u3092\u5fa9\u5143\n  function loadOptions() {\n    const saved = localStorage.getItem(LS_KEY_OPTIONS);\n    if (!saved) return;\n    let state;\n    try { state = JSON.parse(saved); } catch (e) { return; }\n    Object.entries(state).forEach(([id, val]) => {\n      const el = document.getElementById(id);\n      if (!el) return;\n      if (el.type === 'checkbox') el.checked = val;\n      else el.value = val;\n    });\n  }\n\n\n  \/\/ \u30da\u30fc\u30b8\u8aad\u307f\u8fbc\u307f\u6642\u306b\u5fa9\u5143\n  window.addEventListener('load', function () {\n\n    \/\/ \u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u3092\u5fa9\u5143\n    const savedText = localStorage.getItem(LS_KEY_TEXT);\n    if (savedText) {\n      document.getElementById('encodeArea').value = savedText;\n    }\n\n    \/\/ \u30aa\u30d7\u30b7\u30e7\u30f3\u72b6\u614b\u3092\u5fa9\u5143\n    loadOptions();\n\n    \/\/ \u5fa9\u5143\u5f8c\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u5909\u66f4\u30a4\u30d9\u30f3\u30c8\u3092\u4e00\u62ec\u767b\u9332\n    OPTION_SELECTORS.forEach(sel => {\n      document.querySelectorAll(sel).forEach(el => {\n        const evType = (el.tagName === 'SELECT' || el.type === 'checkbox') ? 'change' : 'input';\n        el.addEventListener(evType, saveOptions);\n      });\n    });\n  });\n\n\n  \/\/ \u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u306e\u5185\u5bb9\u304c\u5909\u66f4\u3055\u308c\u305f\u3089\u4fdd\u5b58\n  document.getElementById('encodeArea').addEventListener('input', function () {\n    localStorage.setItem(LS_KEY_TEXT, this.value);\n  });\n<\/script>","protected":false},"excerpt":{"rendered":"\u5168\u89d2\u3068\u534a\u89d2\u3092\u4e00\u62ec\u3067\u76f8\u4e92\u5909\u63db\u3059\u308b\u30c4\u30fc\u30eb\u3002\u5168\u89d2\u306e\u82f1\u6570\u5b57\u30fb\u8a18\u53f7\u3092\u534a\u89d2\u306b\u3001\u5358\u72ec\u306e\u534a\u89d2\u82f1\u6570\u5b57\u3092\u5168\u89d2\u306b\u7d71\u4e00\u3002\u6ce2\u30c0\u30c3\u30b7\u30e5\u306e\u7d71\u4e00\u306b\u3082\u5bfe\u5fdc\u3002","protected":false},"author":1,"featured_media":15558,"parent":173,"menu_order":47,"comment_status":"closed","ping_status":"closed","template":"templates\/page-converter.php","meta":{"_acf_changed":false,"footnotes":""},"categories":[11,16],"tags":[54,55,56,57,58,59],"group":[],"pg":[],"class_list":["post-7127","page","type-page","status-publish","has-post-thumbnail","category-textedit","category-tool","tag-54","tag-55","tag-56","tag-57","tag-58","tag-59"],"acf":[],"_links":{"self":[{"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pages\/7127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/comments?post=7127"}],"version-history":[{"count":0,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pages\/7127\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pages\/173"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/media\/15558"}],"wp:attachment":[{"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/media?parent=7127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/categories?post=7127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/tags?post=7127"},{"taxonomy":"group","embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/group?post=7127"},{"taxonomy":"pg","embeddable":true,"href":"https:\/\/code-plus.jp\/gp\/wp-json\/wp\/v2\/pg?post=7127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}