From c3e52961aaa645fd0758c3616cd9dcf9fa35293f Mon Sep 17 00:00:00 2001 From: Kenichiro NOGI Date: Sat, 1 Aug 2026 10:42:16 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E3=83=97=E3=83=AD=E3=82=BB=E3=82=B9?= =?UTF-8?q?=E3=83=95=E3=83=AD=E3=83=BC=E3=83=81=E3=83=A3=E3=83=BC=E3=83=88?= =?UTF-8?q?=E7=94=9F=E6=88=90=E3=81=AE=E5=9C=9F=E5=8F=B0=EF=BC=88=E3=82=B5?= =?UTF-8?q?=E3=82=A4=E3=83=88=E3=83=95=E3=82=A9=E3=83=AB=E3=83=80=E8=A7=A3?= =?UTF-8?q?=E6=B1=BA=E3=83=BBChoicesText=E3=83=91=E3=83=BC=E3=82=B5?= =?UTF-8?q?=E3=83=BC=EF=BC=89=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5 --- .../generate-process-flowchart.js | 76 +++++++++++++++++++ .../generate-process-flowchart.test.js | 31 ++++++++ .../private_20250530180606.key | 28 ------- .../modules/private_20250530180606.key | 28 ------- .../modules/private_20260307130919.key | 28 ------- lineworks-sync/private_20260307184804.key | 28 ------- lineworks-sync/private_20260709122316.key | 28 ------- 7 files changed, 107 insertions(+), 140 deletions(-) create mode 100644 ClaudePleasanter/営業積算システム/generate-process-flowchart.js create mode 100644 ClaudePleasanter/営業積算システム/generate-process-flowchart.test.js delete mode 100644 NodeJS/LINEWORKS_sendMessage/private_20250530180606.key delete mode 100644 NodeJS/express/modules/private_20250530180606.key delete mode 100644 NodeJS/express/modules/private_20260307130919.key delete mode 100644 lineworks-sync/private_20260307184804.key delete mode 100644 lineworks-sync/private_20260709122316.key diff --git a/ClaudePleasanter/営業積算システム/generate-process-flowchart.js b/ClaudePleasanter/営業積算システム/generate-process-flowchart.js new file mode 100644 index 00000000..cf09edba --- /dev/null +++ b/ClaudePleasanter/営業積算システム/generate-process-flowchart.js @@ -0,0 +1,76 @@ +/** + * generate-process-flowchart.js + * ------------------------------------------------------------ + * configs/site-{SiteId}_{サイト名}/processes.json と + * siteSettingJsons/site-{SiteId}_latest.json(Status列ChoicesText)から + * Mermaid横向きフローチャート(Status遷移図)を生成し、標準出力へ表示します。 + * + * このスクリプトはファイル書き込み・API送信を一切行いません(標準出力のみ)。 + * 出力された```mermaid```ブロックは、仕様書「8. プロセス設定」節へ手動で組み込んでください。 + * + * 使い方: + * node generate-process-flowchart.js site-335411 + * (フォルダ名は "site-{SiteId}_{サイト名}" 形式だが、"site-{SiteId}" だけの + * 前方一致指定でも configs/ 配下から自動的に該当フォルダを探して解決する) + * ------------------------------------------------------------ + */ + +const fs = require("fs"); +const path = require("path"); + +function readJson(p) { + return JSON.parse(fs.readFileSync(p, "utf-8")); +} + +// フォルダ名は "site-{SiteId}_{サイト名}" 形式。"site-{SiteId}" のみの指定でも +// configs/ 配下から前方一致で該当フォルダを探して解決する。 +// (build-desired-config.js の resolveSiteDir と同一ロジック) +function resolveSiteDir(baseDir, arg) { + const configsDir = path.join(baseDir, "configs"); + const direct = path.isAbsolute(arg) ? arg : path.join(configsDir, path.basename(arg)); + const baseName = path.basename(arg); + + const candidates = fs.existsSync(configsDir) + ? fs.readdirSync(configsDir).filter((name) => { + const full = path.join(configsDir, name); + return ( + fs.statSync(full).isDirectory() && (name === baseName || name.startsWith(`${baseName}_`)) + ); + }) + : []; + + const suffixed = candidates.filter((name) => name !== baseName); + if (suffixed.length === 1) return path.join(configsDir, suffixed[0]); + if (suffixed.length > 1) { + console.error(`[エラー] "${baseName}" に一致するフォルダが複数見つかりました: ${suffixed.join(", ")}`); + console.error("フォルダ名をフルで指定してください。"); + process.exit(1); + } + + if (candidates.includes(baseName)) return path.join(configsDir, baseName); + if (fs.existsSync(direct) && fs.statSync(direct).isDirectory()) return direct; + + console.error(`[エラー] フォルダが見つかりません: ${direct}`); + console.error("先に node extract-site-config.js(またはnode get-site-config.js)を実行してください。"); + process.exit(1); +} + +// "値,ラベル,短縮ラベル,色" 形式(改行区切り)のChoicesTextを 値→ラベル のMapへ変換する +function parseChoicesText(choicesText) { + const map = new Map(); + if (!choicesText) return map; + const lines = choicesText.split("\n").filter((line) => line.trim().length > 0); + for (const line of lines) { + const parts = line.split(","); + const value = (parts[0] || "").trim(); + if (!value) continue; + const label = (parts[1] || value).trim(); + map.set(value, label); + } + return map; +} + +module.exports = { + resolveSiteDir, + parseChoicesText, +}; diff --git a/ClaudePleasanter/営業積算システム/generate-process-flowchart.test.js b/ClaudePleasanter/営業積算システム/generate-process-flowchart.test.js new file mode 100644 index 00000000..27c7b187 --- /dev/null +++ b/ClaudePleasanter/営業積算システム/generate-process-flowchart.test.js @@ -0,0 +1,31 @@ +const test = require("node:test"); +const assert = require("node:assert/strict"); +const path = require("path"); +const os = require("os"); +const fs = require("fs"); +const { parseChoicesText, resolveSiteDir } = require("./generate-process-flowchart"); + +test("parseChoicesText: 値,ラベル,短縮ラベル,色 形式を 値→ラベル のMapへ変換する", () => { + const input = "100,新規,新規,new-status-white\n450,依頼者質疑中,質疑中,new-status-yellow"; + const result = parseChoicesText(input); + assert.equal(result.get("100"), "新規"); + assert.equal(result.get("450"), "依頼者質疑中"); + assert.equal(result.size, 2); +}); + +test("parseChoicesText: undefinedやから文字列は空Mapを返す", () => { + assert.equal(parseChoicesText(undefined).size, 0); + assert.equal(parseChoicesText("").size, 0); +}); + +test("parseChoicesText: ラベル省略時は値をラベルとして使う", () => { + const result = parseChoicesText("999"); + assert.equal(result.get("999"), "999"); +}); + +test("resolveSiteDir: site-{id}_{name}形式のフォルダを前方一致で解決する", () => { + const tmpBase = fs.mkdtempSync(path.join(os.tmpdir(), "gpf-test-")); + fs.mkdirSync(path.join(tmpBase, "configs", "site-999_テストサイト"), { recursive: true }); + const result = resolveSiteDir(tmpBase, "site-999"); + assert.equal(result, path.join(tmpBase, "configs", "site-999_テストサイト")); +}); diff --git a/NodeJS/LINEWORKS_sendMessage/private_20250530180606.key b/NodeJS/LINEWORKS_sendMessage/private_20250530180606.key deleted file mode 100644 index c8eb9b01..00000000 --- a/NodeJS/LINEWORKS_sendMessage/private_20250530180606.key +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCtzzwneLOn8XcL -uR/qxOqifCbEEKdF2NH2/mLqa/eGmHIy4nvlKH9O0b0Rt8idACu5o/x4iZoljIQd -YztoxyGKEEy9NfySUYXZt2pECeR4lbqryEK11KAZW5slcmStki+Eval/ccOvxFqj -TgzaJOGpjlExlxPwPxp39sV35T1KzOX+aSg0WlHtioMF6nn1ErNX0tSfjQxFbMQ4 -Np+CIgLsYlEbzG7QUcgLi0verAlf9x0r+9v2aeZuPA4InCtFFJJSV2AyQQ2lPVle -Z+SkyUEgqwoDBVUduLHsTCGj88FG9S/YRzFVNRQRojoebYxomJEpfHgwG9+QX544 -5mGszzJRAgMBAAECggEAKM9AgMUQq8VgjgZaxeET9XBAmucNG3OIAx4iJAgTL41i -POvcKsdqMtvAsKUOC70DRzyHdlbatGfMimjnBVhCGfxvRDrlkYZmLuMnpo+LDzwa -vyRPc4mXyLRvVmjIVk+9bAWrQ1L3HzEzleXo0xx3Rrw1eLcQFaf/Yzz0Cw1uaX4U -8tJGA7waPHEmY6AW53ibvXaYtPsVqDstfrQyjtOegrJtoJ0wgf+KujojgiB2Rolu -QOCVeffJi6KWcao+yvUndbuhYfuSf3f8kg3/KPOqSRqMYM/8L5vEqA8zOTNjXRHc -6ajjdxQd8R+TD/KnyY0lWDRtbOXfNeGKGYSgbh5vBQKBgQDI4knTTxu2zFlF2gXR -Ta4OYBYIf1gS7Vl4FcABKMUKJ7wgRTgrI6S3/XfDm5rBxJBS6Cuo4VhGID5E9Qbx -2gNq2turq2bxumZRve4WgrbRJzrWq5LGk9bI1LbN/rsIwseDx3qmqajapgEBgHbs -A60EidcJsiwzSoL0xBb0zxTkNQKBgQDdf0oemx5BrqOBk51P7Pitd8RqApbC/sw5 -6DLg1B0LS8w2ZwaBhJsdytd3TgtDVvrjdtg5mDxenLSLrdWb0gYHoVsnWtyDa9x9 -d6pCilHm8USwE69Hy0TubmIPe5Hol7j/98Oihf0+qT9R54GNAUWnqRyxcdlUAu/h -t1g4fF9hLQKBgDZh/HZ2Phx4qdpdMaH+E5bUsGJQhzlohAYcbURjEySyqR1bX99d -4OPmfJu57mVyn1eyfs9TYiBp7jGg2+ZxjOdKpJmO52mdesG6V1BExtVMd4NSI4Qa -1dS8sViHE39Fq9mjETM5TvsSYcdUTd2LCTXnUw3O7GReUaGNzGEuBovZAoGBALAl -5bUXWWWU1BVdZnLEmzOhFsPT0T+70ICQx72DEqIEIqB1KHhiE9YKlXYcy9o+1wGE -ZwrOpdv8NZ0Lnt/vk7oHuW0/1jRx2ASz4ORQCjhmUWDSFsg6wFP51uRHOk9GMerm -iF+8vRxTDrc9LAsOIu3mEJqRVut39nuECpXJWzT1AoGBAKOeVuHtf9zqlzcauUKU -ymcEIN96+/Jj1lk9dV5o0FDbn+SIeWPOlE8EfrwzfyokrvXRLcR7APdeF9VO1tDK -C4bk6eFQjbXj6SuWOTPu722b/raqGJU6spTECVYFWI1JD2zNsYM08p3qbsFVDPA9 -nY4oYnYiafU5v1pGAUjkh9EK ------END PRIVATE KEY----- diff --git a/NodeJS/express/modules/private_20250530180606.key b/NodeJS/express/modules/private_20250530180606.key deleted file mode 100644 index c8eb9b01..00000000 --- a/NodeJS/express/modules/private_20250530180606.key +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCtzzwneLOn8XcL -uR/qxOqifCbEEKdF2NH2/mLqa/eGmHIy4nvlKH9O0b0Rt8idACu5o/x4iZoljIQd -YztoxyGKEEy9NfySUYXZt2pECeR4lbqryEK11KAZW5slcmStki+Eval/ccOvxFqj -TgzaJOGpjlExlxPwPxp39sV35T1KzOX+aSg0WlHtioMF6nn1ErNX0tSfjQxFbMQ4 -Np+CIgLsYlEbzG7QUcgLi0verAlf9x0r+9v2aeZuPA4InCtFFJJSV2AyQQ2lPVle -Z+SkyUEgqwoDBVUduLHsTCGj88FG9S/YRzFVNRQRojoebYxomJEpfHgwG9+QX544 -5mGszzJRAgMBAAECggEAKM9AgMUQq8VgjgZaxeET9XBAmucNG3OIAx4iJAgTL41i -POvcKsdqMtvAsKUOC70DRzyHdlbatGfMimjnBVhCGfxvRDrlkYZmLuMnpo+LDzwa -vyRPc4mXyLRvVmjIVk+9bAWrQ1L3HzEzleXo0xx3Rrw1eLcQFaf/Yzz0Cw1uaX4U -8tJGA7waPHEmY6AW53ibvXaYtPsVqDstfrQyjtOegrJtoJ0wgf+KujojgiB2Rolu -QOCVeffJi6KWcao+yvUndbuhYfuSf3f8kg3/KPOqSRqMYM/8L5vEqA8zOTNjXRHc -6ajjdxQd8R+TD/KnyY0lWDRtbOXfNeGKGYSgbh5vBQKBgQDI4knTTxu2zFlF2gXR -Ta4OYBYIf1gS7Vl4FcABKMUKJ7wgRTgrI6S3/XfDm5rBxJBS6Cuo4VhGID5E9Qbx -2gNq2turq2bxumZRve4WgrbRJzrWq5LGk9bI1LbN/rsIwseDx3qmqajapgEBgHbs -A60EidcJsiwzSoL0xBb0zxTkNQKBgQDdf0oemx5BrqOBk51P7Pitd8RqApbC/sw5 -6DLg1B0LS8w2ZwaBhJsdytd3TgtDVvrjdtg5mDxenLSLrdWb0gYHoVsnWtyDa9x9 -d6pCilHm8USwE69Hy0TubmIPe5Hol7j/98Oihf0+qT9R54GNAUWnqRyxcdlUAu/h -t1g4fF9hLQKBgDZh/HZ2Phx4qdpdMaH+E5bUsGJQhzlohAYcbURjEySyqR1bX99d -4OPmfJu57mVyn1eyfs9TYiBp7jGg2+ZxjOdKpJmO52mdesG6V1BExtVMd4NSI4Qa -1dS8sViHE39Fq9mjETM5TvsSYcdUTd2LCTXnUw3O7GReUaGNzGEuBovZAoGBALAl -5bUXWWWU1BVdZnLEmzOhFsPT0T+70ICQx72DEqIEIqB1KHhiE9YKlXYcy9o+1wGE -ZwrOpdv8NZ0Lnt/vk7oHuW0/1jRx2ASz4ORQCjhmUWDSFsg6wFP51uRHOk9GMerm -iF+8vRxTDrc9LAsOIu3mEJqRVut39nuECpXJWzT1AoGBAKOeVuHtf9zqlzcauUKU -ymcEIN96+/Jj1lk9dV5o0FDbn+SIeWPOlE8EfrwzfyokrvXRLcR7APdeF9VO1tDK -C4bk6eFQjbXj6SuWOTPu722b/raqGJU6spTECVYFWI1JD2zNsYM08p3qbsFVDPA9 -nY4oYnYiafU5v1pGAUjkh9EK ------END PRIVATE KEY----- diff --git a/NodeJS/express/modules/private_20260307130919.key b/NodeJS/express/modules/private_20260307130919.key deleted file mode 100644 index f2c61661..00000000 --- a/NodeJS/express/modules/private_20260307130919.key +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCimBufaDXu3jev -jE9UA249K9z+MMO67Habi8JKjzQwAua/NFWZ6uuPkBHuh71k3HQ1Mo6sATjJORjw -j+Yffl5tijf8WbnKOdaClHXAwXr0D4A2Sg8SPkXfhmwjFg0/7I6OwMKe8qJ989Xv -OqRXQ6qgohhQIIy3x20lIKsumGy61pP/eKPgysDyH/mDW4atrsejd7IBUg0ApTw5 -dmIWrf8cqMzkKexQVKolNsoBfjrCJoKUi2bOtGKhqdpix8e/rVMtJ9ToON9Q/65d -SBO9pqA5Wcv5RJVK6NV9uj4z7kVnKybnlbKdMVHwNx/qZRuu0y+tFDYBYudflYEl -dsddkD7pAgMBAAECggEABTdLeuQ+h1nwyox+AVQ12GJcmHlLLNHdUTVH0kQAo4H9 -pzMgLuFK1W7EqyoGxkz4hmSyOoGJ3JIHbd+JPUfncsH9H0w9P1KhLMxjRap/Ta6P -SU6RaAoANwDqiFVIBLMLn2KUK8IID/HUp7Qc0GGEQFsgMWEwmncG65VoyxnKh9OB -eDccUiZggIWD9GSL/0QwNZEYtYJhMlYdyikc8pyQXqkGnOOMJxfW+Nl6No0GVzRg -xmOdN60PqMJGsZapiT+r8Ifp5lv6Knlz91rJHHeuvNGh9o+6+FYmzi+dIvLTjABQ -TydtSW5f6C7CrajJInrrylvn8MqjJcuku50l931dHQKBgQDBtwPacWVZutcsQxGc -0swz5GVfE8bKWViLUdHcEVNyYlkjpuyrUpjj+8PFDJ/+szvXPvno0RZ9TIM0BiqZ -/hKkUWi+yb4AJlH9yVq+nbov93Td7umsWEgTr+iZ5wWzEffq8qukQZtdgi0+IzH9 -+OO1qbykbQ0mTP0buFaar0qMHQKBgQDW337WkwTDssrMbiSgV5HcPH4VHpWDpkb2 -gA2X3M3+uRDOs87wsMd3NxAJkepfoE62KLjCJ1keboQuVq9y0/SK7vZoCyeXgQPy -akC+1hkz30KqF6ovXs0P5Sq+kETmc9x4NCRrQtunghlnUB5ExmCFvUh+h5dH9zF4 -n6RcS1GMPQKBgQCAVpsD7xqhfwqtdWXGy1Wkj42llvmd9+GUs8lgjk4FuyipWR71 -RkyqxpLmCr45RU/BBCUX3OaUbsuB/Q/eZBi/qnvF4uyxNrIdfHhVTzQaMUzI+E7x -8q8V8/YbeJYrFB13F/0lXp3rLqKAx1qIk4txQJoNKX6LwHf0FIW0B6xQ9QKBgQDM -T/9fMLRbEOrcr+6LuDitXafVlRs97yGSyfgi6oXFK1vb8AVZv/4qUWUidGiTPO8b -LmVf1+JZmWR+W1bArOHeKZKLI/AlkzuZiYa+7v1P4X6WFaJxIIeEEbgvMycQqiJ8 -+beXdh8+i+pz3i6p3qdxA6anCW7DszyLIeE7ETMdUQKBgQCvJZW+DIwdIQc9w7jN -h8swEYOM3SEajLfAiBiqUlvAde0BKJGXIsMtGU9ptbfIV0fa/5Ks+Xc8CM0VTyaR -uUpdFgX0Gtxb01fuYEO+lgE8/cxFYiHQwSQqtNQcIh6dQrlUsn1YhvGkQHJn+LRD -asVILYALim44EoNpb9pq2Vt7ew== ------END PRIVATE KEY----- diff --git a/lineworks-sync/private_20260307184804.key b/lineworks-sync/private_20260307184804.key deleted file mode 100644 index 88bbe7de..00000000 --- a/lineworks-sync/private_20260307184804.key +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC4y+NNY1b9Xf0J -L3wzZGufiqfZyD62VH+8imzsC5A1D0DE0gvHz28LOYuy99wL0QaHlhl6zeUTV1nb -Bt5SFR86ZQH0X5bSV5T4tPDONs9a5+cCyat/fRJ9pNN0pp5alvi7/cNZWCbTwzzJ -9BudhLCq51mrxgNsbq6D/pO8N+6crnTK0iy1/F4bgbcafDhvVUdwER6KWXcSFjIz -QjnD9RAQ/aFh1TvNrNfdXOXfq+no9O64TrVQ6wc3cYiK1KebM8JOEG+MzbRbAUbt -gU8kDwep9z3G3YkkxaTnvVB7tj3KB5rOBpw5gy80AGrUs2Bq6VpE+sudRGVNqWpB -v5D/gSIJAgMBAAECggEAGNLOnFEpWMyc1nSJ/w9Qw7Qo+wDCp9Ru+kEwA39EJlR/ -s1Cx42vSc1QOF4LjDLVN5r27e3sX+AKmX90q1STgNoRmAFEs3eGE8enAZTsInKIF -LqMvhecjqjwPaZ6OLAYWsI4UhTZptM2Hp2tCoGS4JKUCLyhgwlqV18ZFSyXKSEKO -CWwtlkq3xDFEqzvdG2mPSS9ZiMWtK4TeZ0PWloTGsjl/RjXhGpsNIi0tyc9M8qRL -M9Jw6LicNDcW58WSEqtFKVUGl1Fk/sL6Fjcen/WcmHP6VUtomS7WPS28QHV0rkZV -k8wlwEvA9W39lDp/kxXJ96VPYvojn93VhPp21tSn2QKBgQD6kOE2nyxhpkqJcNo8 -GhTW+4FHbDuLrc/N1LBbbPtt0f3ctTRdl+BRgLMQJYJi5DNEJUVfVAwEhPLfQbYS -CO25HchEeNfh6EBvCgLHi50VLOgYkdzTZe4eG6PLBBPvdQyT++TuX4YaHejdZIOF -RpZzNY1/We4yurl0b7mVb2Q4VQKBgQC8zdyTjfw6i31DfJLIJGEIDakiCXqckQMt -a4v0hFQMvBBQfw587PcXDd0lekW2XIaGAPPET2IaNoVgBjVmylBkoCjDyu2KNeuM -/TzuavGPcUA1Wko9fDVeLEfGKchWc/MbWNXH1ecevD0Bpb+z5ZqJu2TknavCtKCB -Fjq85yXG5QKBgBt+QCf1KTKBw5X3GwsTNYwtRo8mshXueWm1V7CAccooC3nnLBrE -6mkm/P7djsP5FCL7D/SYzUTFrbyPgkHSVvtD6FCTDeUMzd0hNRLeH9tN9R2VC6zq -d0k4cS16ghF5P2sRbZo2QwmklIOOXtwF1cZIbwE1ReytDmJXS/64nT+NAoGATmis -DzdrJaEiX3GPv8Cj72VE9Va8beMnT6iXUe/WvAcqO1PY33bF0vQ2AEd8RhS85U/l -7IQPONWlpFBPwyWIJ5H/+/f9mGV2MnJE6LrPIQQmZ0HdDRXVUAvRrvFROt4iexv0 -hG5H8pK4P0Pnjj1vZX3Gk88LMuwysAlcUXEpViUCgYAEiQmgR5jibRXasbSlPiQb -LbRCYQ7eY3Ci3RBJ1/Wo1glS4VU+yYqz67spcSefkY1equJbMUNVcef0mcawqi5y -towHdFmnfx1vwJudD2IKtopQWdhJWTsIIbwTrT4T1W+1iA6dN4EQYCPp5vdKxx65 -371xr7uy3rz2R1Ky1P2Twg== ------END PRIVATE KEY----- diff --git a/lineworks-sync/private_20260709122316.key b/lineworks-sync/private_20260709122316.key deleted file mode 100644 index 6ce6266b..00000000 --- a/lineworks-sync/private_20260709122316.key +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDyCeXM/bGWZCri -eqrX1rzN7URB+jysUjnJOyRy1ksTD8GpCPVTXIsEfqIOCoFGN+Ov9YmAEJkVV1il -oQpl6hoB+NhVqbvmKcFKgDNS8zQGS7okNkOJK+kGT9rvYyImymqZewUouRSxxu88 -itQX4QuAF/6Zm6jn2X6lN0obgxqmp4boBzI+uX+pUTgSrveu6ZXtW3jvyBZbWcLS -5mdLvC3HpTb0ibH4Kt2qWiuhCgfGxSAi3Jx88FShR38U/HmH3xl9HcsKmr2BYO7r -3YGNRQ/JYeNp/yQHFgMcIPSUzBk5reOpIM7DJTrTG4YXnSvht6t3DmK6E+PdbvsV -OzJWe4+/AgMBAAECggEAAamcE1Hkyo3VQOlVy2tqsEFtIsTiGM7scwY9zwTLeY3g -pyrBa06rQnR6OX13UNupFo1/DHWmD4r3jWpd72rxvcoPS7CsR+hJLxv9U5hfEZyr -N9IgREzHFNIvRKNaLzOxvWx7vGwKXoQ+zXF+A8ykbxSlx46q/4NeHCq/5BDSTzW7 -oIfFE80HtWfTYHo+yLdDCEm7H+0OzaI5g/lKFU+3HCvcEUDzLp27X1KlieVdZ8mf -LPkRP4PJXFjyviRBw/UsM7qAp+NQ2HFjEUssDFRvweX140isH6W8fKv+u8Erc2MA -1wERISit6aGOJv+OuKD6x8ZUpNpbB+fbmf3h8SvhGQKBgQD3Ar+pGqI7bGflFINW -sF49wR0IBdSn5/NOd7Ku3hpYHbphejfn5rF11dTgMnvNh58PqRAfk8Xq4E52K8GW -VxhQA1JFPzExjlprQc8WSCZMKcWpelT9KQFT9tAHQP5mbI1e4vUva7n/WxLS5nW7 -7RTi6uwtUR6X9vbOVayz68epuQKBgQD62NO/mV33gMESXsa6s6RqJxIiQJIOnUbn -Hc0Ko8Vr9D3qK4w1y5Nhu613GeCb+P8JN/ps2Kd/klrkFd8ZSFErWDiuCx7SggK3 -mHsIIRzRpme+xe1nOwtqAkIBd9/4DZp3T6dsaUBZ5/yw+0tscAUG3NKj0ZhiNufq -fO99uP9hNwKBgQCCR7ra8Cc8/FJX6tfS8zbhj2dGgfzFinszmcJupMp0S0mwfAvc -jjpvEhczIK1Xm/5y/hJ49THgTepUPYPfTZSPLxFHYKsLni9mftFAyVEZvrZ4SwNk -eyouJPFXwhnr37k4oK/9EO6LFnf5MIBMXCE2Bf4HcM+YCzPlZB6wzt0CUQKBgQCR -q1y8BSomUqTMMDGjtjKiWnITZf/rcLX9/LZXmWdKG5ng5M0VaFT8CmrfoS1oJh6k -kddhYidS1ADoNzNJkU9hpmez2k1Z3ZoKWAgKXoBH1ySkCnik3Ary0sDV7XEosW2k -H6OQN0bhbvC1LhlMrXid1ZqU+2BMmKnw6ACDt+zF3QKBgQDzjrav/FJuQ/UpdiaH -Xgpumzuthw+ih1mYzvPbe+DGk4vWVikK2dD1HMSAmOv36nYeozO98jIeb3n8VOYq -FtUVPMYAPUs2PqVawzpwKdINoTzaxym88JJASlGOAaa4LLVygbE/Vb59nZKCb3NF -SIjzWhRybR+otfa5MFOAj4D09g== ------END PRIVATE KEY-----