teamcopilot 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +10 -0
- package/LICENSE.md +21 -0
- package/README.md +131 -0
- package/bin/teamcopilot.js +281 -0
- package/dist/auth/index.js +189 -0
- package/dist/change-user-role.js +77 -0
- package/dist/chat/index.js +849 -0
- package/dist/constants.js +2 -0
- package/dist/create-user.js +98 -0
- package/dist/cronjob/index.js +16 -0
- package/dist/cronjob/resource-reconciliation.js +33 -0
- package/dist/delete-user.js +66 -0
- package/dist/frontend/assets/abap-CRCWOmpq.js +1 -0
- package/dist/frontend/assets/apex-DnsZk_dE.js +1 -0
- package/dist/frontend/assets/azcli-1IWB1ccx.js +1 -0
- package/dist/frontend/assets/bat-DPkNLes8.js +1 -0
- package/dist/frontend/assets/bicep-Corcdgou.js +2 -0
- package/dist/frontend/assets/cameligo-CGrWLZr3.js +1 -0
- package/dist/frontend/assets/clojure-D9WOWImG.js +1 -0
- package/dist/frontend/assets/codicon-DCmgc-ay.ttf +0 -0
- package/dist/frontend/assets/coffee-B7EJu28W.js +1 -0
- package/dist/frontend/assets/cpp-SEyurbux.js +1 -0
- package/dist/frontend/assets/csharp-BoL64M5l.js +1 -0
- package/dist/frontend/assets/csp-C46ZqvIl.js +1 -0
- package/dist/frontend/assets/css-DQU6DXDx.js +3 -0
- package/dist/frontend/assets/cssMode-BDT3WbVs.js +4 -0
- package/dist/frontend/assets/cypher-D84EuPTj.js +1 -0
- package/dist/frontend/assets/dart-D8lhlL1r.js +1 -0
- package/dist/frontend/assets/dockerfile-DLk6rpji.js +1 -0
- package/dist/frontend/assets/ecl-BO6FnfXk.js +1 -0
- package/dist/frontend/assets/editor.worker-B4pQIWZD.js +12 -0
- package/dist/frontend/assets/elixir-BRjLKONM.js +1 -0
- package/dist/frontend/assets/flow9-Cac8vKd7.js +1 -0
- package/dist/frontend/assets/freemarker2-C7-hEgID.js +3 -0
- package/dist/frontend/assets/fsharp-fd1GTHhf.js +1 -0
- package/dist/frontend/assets/go-O9LJTZXk.js +1 -0
- package/dist/frontend/assets/graphql-LQdxqEYJ.js +1 -0
- package/dist/frontend/assets/handlebars-4cwTkPir.js +1 -0
- package/dist/frontend/assets/hcl-DxDQ3s82.js +1 -0
- package/dist/frontend/assets/html-YNfE1Q0A.js +1 -0
- package/dist/frontend/assets/htmlMode-opTQ1HoB.js +4 -0
- package/dist/frontend/assets/index-DWyaVa1h.js +782 -0
- package/dist/frontend/assets/index-lXrsgeTF.css +1 -0
- package/dist/frontend/assets/ini-BvajGCUy.js +1 -0
- package/dist/frontend/assets/java-SYsfObOQ.js +1 -0
- package/dist/frontend/assets/javascript-BEwGzk7T.js +1 -0
- package/dist/frontend/assets/jsonMode-CGhIS5Al.js +10 -0
- package/dist/frontend/assets/julia-DQXNmw_w.js +1 -0
- package/dist/frontend/assets/kotlin-qQ0MG-9I.js +1 -0
- package/dist/frontend/assets/less-GGFNNJHn.js +2 -0
- package/dist/frontend/assets/lexon-Canl7DCW.js +1 -0
- package/dist/frontend/assets/liquid-QekTGCGJ.js +1 -0
- package/dist/frontend/assets/lua-D28Ae8-K.js +1 -0
- package/dist/frontend/assets/m3-DPitgjJI.js +1 -0
- package/dist/frontend/assets/markdown-B811l8j2.js +1 -0
- package/dist/frontend/assets/mdx-BAVDaB7v.js +1 -0
- package/dist/frontend/assets/mips-CdjsipkG.js +1 -0
- package/dist/frontend/assets/msdax-CYqgjx_P.js +1 -0
- package/dist/frontend/assets/mysql-BHd6q0vd.js +1 -0
- package/dist/frontend/assets/objective-c-B1aVtJYH.js +1 -0
- package/dist/frontend/assets/pascal-BhNW15KB.js +1 -0
- package/dist/frontend/assets/pascaligo-5jv8CcQD.js +1 -0
- package/dist/frontend/assets/perl-DlYyT36c.js +1 -0
- package/dist/frontend/assets/pgsql-Dy0bjov7.js +1 -0
- package/dist/frontend/assets/php-120yhfDK.js +1 -0
- package/dist/frontend/assets/pla-CjnFlu4u.js +1 -0
- package/dist/frontend/assets/postiats-CQpG440k.js +1 -0
- package/dist/frontend/assets/powerquery-DdJtto1Z.js +1 -0
- package/dist/frontend/assets/powershell-Bu_VLpJB.js +1 -0
- package/dist/frontend/assets/protobuf-IBS6jZEB.js +2 -0
- package/dist/frontend/assets/pug-kFxLfcjb.js +1 -0
- package/dist/frontend/assets/python-BQlHw7XO.js +1 -0
- package/dist/frontend/assets/qsharp-q7JyzKFN.js +1 -0
- package/dist/frontend/assets/r-BIFz-_sK.js +1 -0
- package/dist/frontend/assets/razor-Be3Wwc2E.js +1 -0
- package/dist/frontend/assets/redis-CHOsPHWR.js +1 -0
- package/dist/frontend/assets/redshift-CBifECDb.js +1 -0
- package/dist/frontend/assets/restructuredtext-CghPJEOS.js +1 -0
- package/dist/frontend/assets/ruby-CYWGW-b1.js +1 -0
- package/dist/frontend/assets/rust-DMDD0SHb.js +1 -0
- package/dist/frontend/assets/sb-BYAiYHFx.js +1 -0
- package/dist/frontend/assets/scala-Bqvq8jcR.js +1 -0
- package/dist/frontend/assets/scheme-Dhb-2j9p.js +1 -0
- package/dist/frontend/assets/scss-CTwUZ5N7.js +3 -0
- package/dist/frontend/assets/shell-CsDZo4DB.js +1 -0
- package/dist/frontend/assets/solidity-CME5AdoB.js +1 -0
- package/dist/frontend/assets/sophia-RYC1BQQz.js +1 -0
- package/dist/frontend/assets/sparql-KEyrF7De.js +1 -0
- package/dist/frontend/assets/sql-BdTr02Mf.js +1 -0
- package/dist/frontend/assets/st-C7iG7M4S.js +1 -0
- package/dist/frontend/assets/swift-D7IUmUK8.js +1 -0
- package/dist/frontend/assets/systemverilog-DgMryOEJ.js +1 -0
- package/dist/frontend/assets/tcl-PloMZuKG.js +1 -0
- package/dist/frontend/assets/tsMode-CIBFoN3z.js +11 -0
- package/dist/frontend/assets/twig-BfRIq3la.js +1 -0
- package/dist/frontend/assets/typescript-BuV9wEIE.js +1 -0
- package/dist/frontend/assets/typespec-CzxlYoT_.js +1 -0
- package/dist/frontend/assets/vb-BwAE3J76.js +1 -0
- package/dist/frontend/assets/wgsl-B_1kOXbF.js +298 -0
- package/dist/frontend/assets/xml-DcDKYaM4.js +1 -0
- package/dist/frontend/assets/yaml-CuBNmOuI.js +1 -0
- package/dist/frontend/index.html +14 -0
- package/dist/frontend/logo.svg +50 -0
- package/dist/index.js +169 -0
- package/dist/logging.js +30 -0
- package/dist/opencode-auth/index.js +122 -0
- package/dist/opencode-server.js +91 -0
- package/dist/prisma/client.js +38 -0
- package/dist/reset-password.js +73 -0
- package/dist/rotate-jwt-secret.js +20 -0
- package/dist/scripts/prisma-workspace.js +34 -0
- package/dist/skills/index.js +311 -0
- package/dist/types/permissions.js +2 -0
- package/dist/types/shared/permissions.js +17 -0
- package/dist/types/shared/skill.js +17 -0
- package/dist/types/shared/workflow-files.js +17 -0
- package/dist/types/shared/workflow.js +17 -0
- package/dist/types/skill.js +2 -0
- package/dist/types/workflow-files.js +2 -0
- package/dist/types/workflow.js +2 -0
- package/dist/users/index.js +22 -0
- package/dist/utils/approval-snapshot-common.js +596 -0
- package/dist/utils/assert.js +20 -0
- package/dist/utils/chat-session.js +44 -0
- package/dist/utils/cli-bootstrap.js +26 -0
- package/dist/utils/index.js +95 -0
- package/dist/utils/jwt-secret.js +63 -0
- package/dist/utils/opencode-auth.js +126 -0
- package/dist/utils/opencode-client.js +109 -0
- package/dist/utils/password-policy.js +12 -0
- package/dist/utils/permission-common.js +280 -0
- package/dist/utils/redact.js +108 -0
- package/dist/utils/resource-access.js +37 -0
- package/dist/utils/resource-file-routes.js +115 -0
- package/dist/utils/resource-files.js +572 -0
- package/dist/utils/runtime-paths.js +61 -0
- package/dist/utils/session-abort.js +52 -0
- package/dist/utils/skill-approval-snapshot.js +39 -0
- package/dist/utils/skill-files.js +17 -0
- package/dist/utils/skill-permissions.js +15 -0
- package/dist/utils/skill.js +217 -0
- package/dist/utils/user-role.js +14 -0
- package/dist/utils/workflow-approval-snapshot.js +38 -0
- package/dist/utils/workflow-files.js +17 -0
- package/dist/utils/workflow-interruption.js +50 -0
- package/dist/utils/workflow-permissions.js +27 -0
- package/dist/utils/workflow-runner.js +414 -0
- package/dist/utils/workflow.js +158 -0
- package/dist/utils/workspace-sync.js +204 -0
- package/dist/workflows/index.js +751 -0
- package/dist/workspace_files/.opencode/opencode.json +17 -0
- package/dist/workspace_files/.opencode/package.json +14 -0
- package/dist/workspace_files/.opencode/plugins/createSkill.ts +339 -0
- package/dist/workspace_files/.opencode/plugins/createWorkflow.ts +345 -0
- package/dist/workspace_files/.opencode/plugins/findSimilarWorkflow.ts +173 -0
- package/dist/workspace_files/.opencode/plugins/findSkill.ts +211 -0
- package/dist/workspace_files/.opencode/plugins/getSkillContent.ts +135 -0
- package/dist/workspace_files/.opencode/plugins/honeytoken-protection.ts +64 -0
- package/dist/workspace_files/.opencode/plugins/listAvailableSkills.ts +93 -0
- package/dist/workspace_files/.opencode/plugins/listAvailableWorkflows.ts +93 -0
- package/dist/workspace_files/.opencode/plugins/python-protection.ts +184 -0
- package/dist/workspace_files/.opencode/plugins/runWorkflow.ts +168 -0
- package/dist/workspace_files/.opencode/tsconfig.json +16 -0
- package/dist/workspace_files/AGENTS.md +483 -0
- package/dist/workspace_files/package-lock.json +167 -0
- package/dist/workspace_files/package.json +5 -0
- package/package.json +86 -0
- package/prisma/migrations/20260203040755_init/migration.sql +20 -0
- package/prisma/migrations/20260204034845_replace_google_auth_with_email_password/migration.sql +25 -0
- package/prisma/migrations/20260207022226_add_user_role/migration.sql +25 -0
- package/prisma/migrations/20260210161254_add_workflow_runs/migration.sql +16 -0
- package/prisma/migrations/20260211050606_adds_workflow_table/migration.sql +40 -0
- package/prisma/migrations/20260211050750_adds_fkey_constraint/migration.sql +21 -0
- package/prisma/migrations/20260211051912_removes_workflow_table/migration.sql +34 -0
- package/prisma/migrations/20260211052238_changes_workflow_id_to_slug/migration.sql +27 -0
- package/prisma/migrations/20260212051912_add_output_to_workflow_runs/migration.sql +2 -0
- package/prisma/migrations/20260213073006_add_chat_sessions/migration.sql +13 -0
- package/prisma/migrations/20260216053202_add_chat_sessions_opencode_session_id_idx/migration.sql +2 -0
- package/prisma/migrations/20260216053237_drop_redundant_chat_sessions_opencode_idx/migration.sql +2 -0
- package/prisma/migrations/20260219060705_makes/migration.sql +24 -0
- package/prisma/migrations/20260222040542_add_workflow_execution_permissions/migration.sql +18 -0
- package/prisma/migrations/20260222040815_remove_workflow_execution_permissions/migration.sql +10 -0
- package/prisma/migrations/20260222041348_add_workflow_execution_permissions_final/migration.sql +17 -0
- package/prisma/migrations/20260222041741_rename_to_tool_execution_permissions/migration.sql +30 -0
- package/prisma/migrations/20260222041826_simplify_tool_execution_permissions/migration.sql +29 -0
- package/prisma/migrations/20260222041950_add_fields_for_standalone_permissions/migration.sql +32 -0
- package/prisma/migrations/20260222042954_simplify_tool_permissions_table/migration.sql +27 -0
- package/prisma/migrations/20260223073902_add_workflow_run_permissions_tables/migration.sql +23 -0
- package/prisma/migrations/20260225025151_add_workflow_metadata/migration.sql +16 -0
- package/prisma/migrations/20260225031035_merge_workflow_permissions_into_metadata/migration.sql +44 -0
- package/prisma/migrations/20260225031752_removes_default_for_run_permission_mode/migration.sql +20 -0
- package/prisma/migrations/20260225033603_remove_workflow_metadata_user_fkeys/migration.sql +18 -0
- package/prisma/migrations/20260225043032_restore_workflow_metadata_user_fkeys/migration.sql +20 -0
- package/prisma/migrations/20260225091423_add_workflow_approved_snapshots/migration.sql +28 -0
- package/prisma/migrations/20260226032121_add_is_approved_to_workflow_metadata/migration.sql +21 -0
- package/prisma/migrations/20260226032444_undoes_last_db_change/migration.sql +26 -0
- package/prisma/migrations/20260227120000_remove_snapshot_hash_from_approved_snapshots/migration.sql +16 -0
- package/prisma/migrations/20260228071125_adds_workspace_path_to_snapshot_table/migration.sql +22 -0
- package/prisma/migrations/20260228071217_modifies_index_and_removes_default_value/migration.sql +22 -0
- package/prisma/migrations/20260228071710_undoes_previous/migration.sql +27 -0
- package/prisma/migrations/20260228105022_add_must_change_password_first_login/migration.sql +20 -0
- package/prisma/migrations/20260301115439_add_workflow_run_log_refs/migration.sql +8 -0
- package/prisma/migrations/20260301122557_add_workflow_aborted_sessions/migration.sql +5 -0
- package/prisma/migrations/20260302045545_move_workflow_run_log_refs_into_workflow_runs/migration.sql +17 -0
- package/prisma/migrations/20260303040318_add_skill_tables/migration.sql +61 -0
- package/prisma/migrations/20260303051533_unify_resource_permissions/migration.sql +97 -0
- package/prisma/migrations/20260303064255_unify_resource_metadata_and_snapshots/migration.sql +179 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +147 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_1_3)">
|
|
3
|
+
<path d="M453.637 -0.0146684C456.419 0.00393577 459.202 0.0221047 461.984 0.0399613C464.402 0.0594793 464.402 0.0594793 466.868 0.0793916C473.209 0.117043 479.55 0.117009 485.891 0.113976C497.559 0.111156 509.226 0.16416 520.893 0.25711C527.729 0.309915 534.564 0.341875 541.4 0.32897C548.106 0.317065 554.811 0.357582 561.517 0.434422C564.047 0.454404 566.578 0.455868 569.108 0.437795C572.634 0.415771 576.154 0.461135 579.679 0.521936C581.674 0.52995 583.67 0.537965 585.726 0.546222C591.672 1.99937 592.1 2.49819 595.882 7.33754C604.345 16.577 616.687 14.1779 627.542 14.0243C630.139 14.0272 632.735 14.035 635.332 14.0473C640.911 14.0635 646.489 14.046 652.068 14.0023C660.897 13.9339 669.725 13.9442 678.555 13.9654C695.708 13.9958 712.861 13.9451 730.014 13.8871C751.837 13.8176 773.659 13.7886 795.481 13.8243C804.25 13.836 813.018 13.8104 821.787 13.7549C827.253 13.7271 832.718 13.7289 838.183 13.7382C840.708 13.7363 843.233 13.722 845.758 13.6942C862.674 13.5157 877.17 14.9058 890.043 29.1822C902.517 46.2193 905.048 68.6359 908.923 89.9022C910.506 98.5411 912.44 106.919 914.774 115.321C916.367 121.94 916.507 126.783 915.711 133.648C913.232 136.764 910.64 139.758 907.987 142.671C906.028 145.161 904.07 147.652 902.127 150.159C889.145 166.896 875.389 182.732 861.648 198.612C862.729 199.156 863.809 199.701 864.923 200.262C869.917 202.785 874.905 205.322 879.894 207.86C881.593 208.716 883.293 209.572 885.044 210.454C914.633 225.545 914.633 225.545 925.558 236.958C927.344 238.759 927.344 238.759 929.166 240.595C939.673 255.258 941.57 269.117 941.517 287.838C941.54 290.095 941.564 292.353 941.588 294.679C941.643 300.618 941.665 306.556 941.671 312.496C941.686 318.581 941.744 324.667 941.798 330.752C941.894 342.646 941.949 354.54 941.97 366.434C942.836 366.833 943.703 367.232 944.595 367.643C948.595 369.488 952.592 371.341 956.589 373.194C957.952 373.821 959.315 374.448 960.719 375.094C1009.48 397.745 1009.48 397.745 1020.75 416.961C1023.4 424.751 1024.23 431.293 1024.26 439.652C1024.27 441.98 1024.29 444.307 1024.3 446.706C1024.3 449.235 1024.3 451.764 1024.3 454.293C1024.31 456.933 1024.31 459.574 1024.32 462.214C1024.33 467.76 1024.33 473.306 1024.32 478.851C1024.32 484.458 1024.33 490.064 1024.36 495.67C1024.85 595.013 1024.85 595.013 1007.58 618.306C1003.7 622.68 999.122 625.332 994.295 627.98C993.234 628.58 992.174 629.181 991.081 629.8C978.165 636.928 964.732 642.514 951.237 647.942C950.001 648.457 948.764 648.972 947.49 649.503C946.271 650 945.053 650.497 943.798 651.009C942.706 651.459 941.613 651.91 940.488 652.374C937.336 653.356 937.336 653.356 931.157 653.356C931.181 655.643 931.204 657.93 931.228 660.286C931.474 697.16 930.444 733.993 929.432 770.843C929.175 780.231 928.943 789.62 928.716 799.009C928.535 806.331 928.335 813.652 928.131 820.973C928.038 824.435 927.951 827.898 927.871 831.361C927.194 860.339 925.397 889.72 907.637 912.153C896.954 923.314 879.236 934.864 864.737 934.864C864.98 936.251 865.223 937.637 865.473 939.066C867.827 958.357 870.119 983.374 860.743 1000.36C851.67 1013.15 838.833 1016.48 825.349 1019C824.255 1019.22 823.162 1019.44 822.036 1019.66C818.766 1020.31 815.5 1020.92 812.219 1021.48C810.418 1021.8 808.616 1022.11 806.76 1022.44C798.464 1023.63 790.181 1023.58 781.833 1023.59C780.106 1023.6 778.38 1023.6 776.601 1023.61C772.951 1023.62 769.3 1023.62 765.649 1023.62C760.169 1023.63 754.689 1023.66 749.208 1023.69C676.352 1023.9 676.352 1023.9 659.974 1008.51C650.957 997.955 647.6 984.868 643.852 970.955C642.597 966.709 641.337 962.465 640.069 958.225C639.218 954.714 639.218 954.714 639.218 949.301C556.132 949.301 473.045 949.301 387.44 949.301C386.421 954.66 385.401 960.02 384.351 965.542C382.948 970.537 381.507 975.413 379.91 980.316C379.534 981.529 379.158 982.742 378.77 983.992C374.554 997.096 369.01 1006.82 358.647 1014.29C353.354 1016.88 347.89 1017.82 342.259 1018.89C341.168 1019.12 340.077 1019.34 338.953 1019.58C316.331 1023.96 293.181 1023.67 270.319 1023.72C265.463 1023.74 260.609 1023.79 255.753 1023.85C239.32 1023.95 223.142 1023.25 206.813 1021C205.323 1020.81 203.834 1020.61 202.3 1020.41C189.264 1018.4 175.892 1014.87 167.231 1002.53C166.242 1001.18 165.252 999.818 164.232 998.418C160.074 991.213 160.179 984.512 160.172 975.96C160.17 973.801 160.168 971.643 160.166 969.419C160.172 967.172 160.178 964.924 160.184 962.609C160.178 960.348 160.172 958.087 160.166 955.758C160.168 953.604 160.17 951.45 160.172 949.23C160.173 947.254 160.175 945.278 160.177 943.241C160.377 938.474 160.377 938.474 161.921 934.864C159.946 934.418 157.971 933.971 155.936 933.511C136.435 928.361 120.068 917.387 108.535 897.871C98.4932 878.369 96.8729 856.169 96.5873 834.004C96.5569 832.067 96.5266 830.129 96.4953 828.132C96.397 821.756 96.3082 815.381 96.2196 809.005C96.1531 804.572 96.0861 800.14 96.0184 795.708C95.8423 784.064 95.6744 772.42 95.5081 760.776C95.3368 748.885 95.1579 736.995 94.9796 725.104C94.6312 701.79 94.2911 678.475 93.9569 655.161C92.8268 654.713 91.6966 654.265 90.5322 653.804C85.3217 651.734 80.115 649.652 74.9082 647.569C73.1311 646.865 71.3539 646.161 69.5229 645.436C22.2108 626.458 22.2108 626.458 11.0527 607.453C-1.35557 572.999 0.529627 533.327 0.673801 496.639C0.700536 489.764 0.684725 482.889 0.657255 476.014C0.640466 470.645 0.645828 465.276 0.657821 459.907C0.660883 457.37 0.65726 454.833 0.646366 452.297C0.581083 432.886 1.75842 418.746 13.4443 404.104C19.4375 397.922 26.2836 393.978 33.426 389.893C35.7534 388.521 35.7534 388.521 38.1278 387.121C76.6446 364.629 76.6446 364.629 84.689 364.629C84.6787 363.418 84.6684 362.207 84.6578 360.959C84.555 348.312 84.4853 335.666 84.4345 323.018C84.4112 318.303 84.3796 313.588 84.3394 308.873C84.283 302.082 84.2569 295.292 84.2365 288.5C84.2126 286.404 84.1886 284.307 84.164 282.148C84.1608 263.818 87.6356 250.044 98.5909 236.507C116.482 218.077 141.484 208.48 163.466 198.612C162.087 196.69 160.702 194.774 159.315 192.86C158.544 191.792 157.774 190.724 156.98 189.624C153.619 185.222 150.066 181.104 146.475 176.957C144.962 175.191 143.449 173.424 141.938 171.656C141.161 170.749 140.384 169.842 139.584 168.907C137.215 166.139 134.846 163.371 132.477 160.604C131.714 159.714 130.952 158.825 130.167 157.909C128.06 155.444 125.963 152.966 123.866 150.488C121.674 147.961 119.431 145.49 117.096 143.143C116.183 142.206 115.269 141.268 114.327 140.302C113.393 139.379 112.459 138.456 111.497 137.504C107.135 129.47 109.169 119.692 110.767 110.845C111.389 107.802 112.03 104.764 112.686 101.73C113.033 100.1 113.379 98.47 113.736 96.7904C114.474 93.3638 115.221 89.9399 115.977 86.5187C116.74 83.0683 117.49 79.6143 118.228 76.1567C127.654 32.2302 127.654 32.2302 143.772 19.8494C150.949 15.137 156.669 14.3258 164.886 14.3359C165.98 14.3346 167.074 14.3333 168.201 14.332C171.876 14.3297 175.55 14.3399 179.225 14.3498C181.856 14.3503 184.487 14.3498 187.118 14.3484C192.79 14.3464 198.461 14.349 204.133 14.3545C213.103 14.361 222.073 14.3446 231.044 14.3224C232.557 14.3187 234.071 14.3151 235.63 14.3113C238.726 14.3038 241.821 14.2962 244.916 14.2886C265.803 14.2378 286.689 14.2015 307.576 14.2327C321.661 14.2535 335.746 14.2362 349.831 14.1748C357.284 14.1438 364.737 14.1325 372.191 14.1678C379.205 14.2007 386.218 14.1833 393.232 14.1276C395.803 14.1162 398.374 14.1231 400.945 14.15C416.369 14.9287 416.369 14.9287 429.751 7.34318C431.081 5.55246 432.41 3.76174 433.78 1.91675C440.15 -0.731496 446.929 -0.0966605 453.637 -0.0146684Z" fill="#113A6E"/>
|
|
4
|
+
<path d="M453.637 -0.0146684C456.419 0.00393577 459.202 0.0221047 461.984 0.0399613C464.402 0.0594793 464.402 0.0594793 466.868 0.0793916C473.209 0.117043 479.55 0.117009 485.891 0.113976C497.559 0.111156 509.226 0.16416 520.893 0.25711C527.729 0.309915 534.564 0.341875 541.4 0.32897C548.106 0.317065 554.811 0.357582 561.517 0.434422C564.047 0.454404 566.578 0.455868 569.108 0.437795C572.634 0.415771 576.154 0.461135 579.679 0.521936C581.674 0.52995 583.67 0.537965 585.726 0.546222C591.672 1.99937 592.1 2.49819 595.882 7.33754C604.345 16.577 616.687 14.1779 627.542 14.0243C630.139 14.0272 632.735 14.035 635.332 14.0473C640.911 14.0635 646.489 14.046 652.068 14.0023C660.897 13.9339 669.725 13.9442 678.555 13.9654C695.708 13.9958 712.861 13.9451 730.014 13.8871C751.837 13.8176 773.659 13.7886 795.481 13.8243C804.25 13.836 813.018 13.8104 821.787 13.7549C827.253 13.7271 832.718 13.7289 838.183 13.7382C840.708 13.7363 843.233 13.722 845.758 13.6942C862.674 13.5157 877.17 14.9058 890.043 29.1822C902.517 46.2193 905.048 68.6359 908.923 89.9022C910.506 98.5411 912.44 106.919 914.774 115.321C916.367 121.94 916.507 126.783 915.711 133.648C913.232 136.764 910.64 139.758 907.987 142.671C906.028 145.161 904.07 147.652 902.127 150.159C889.145 166.896 875.389 182.732 861.648 198.612C862.729 199.156 863.809 199.701 864.923 200.262C869.917 202.785 874.905 205.322 879.894 207.86C881.593 208.716 883.293 209.572 885.044 210.454C914.633 225.545 914.633 225.545 925.558 236.958C927.344 238.759 927.344 238.759 929.166 240.595C939.673 255.258 941.57 269.117 941.517 287.838C941.54 290.095 941.564 292.353 941.588 294.679C941.643 300.618 941.665 306.556 941.671 312.496C941.686 318.581 941.744 324.667 941.798 330.752C941.894 342.646 941.949 354.54 941.97 366.434C942.836 366.833 943.703 367.232 944.595 367.643C948.595 369.488 952.592 371.341 956.589 373.194C957.952 373.821 959.315 374.448 960.719 375.094C1009.48 397.745 1009.48 397.745 1020.75 416.961C1023.4 424.751 1024.23 431.293 1024.26 439.652C1024.27 441.98 1024.29 444.307 1024.3 446.706C1024.3 449.235 1024.3 451.764 1024.3 454.293C1024.31 456.933 1024.31 459.574 1024.32 462.214C1024.33 467.76 1024.33 473.306 1024.32 478.851C1024.32 484.458 1024.33 490.064 1024.36 495.67C1024.85 595.013 1024.85 595.013 1007.58 618.306C1003.7 622.68 999.122 625.332 994.295 627.98C993.234 628.58 992.174 629.181 991.081 629.8C978.165 636.928 964.732 642.514 951.237 647.942C950.001 648.457 948.764 648.972 947.49 649.503C946.271 650 945.053 650.497 943.798 651.009C942.706 651.459 941.613 651.91 940.488 652.374C937.336 653.356 937.336 653.356 931.157 653.356C931.181 655.643 931.204 657.93 931.228 660.286C931.474 697.16 930.444 733.993 929.432 770.843C929.175 780.231 928.943 789.62 928.716 799.009C928.535 806.331 928.335 813.652 928.131 820.973C928.038 824.435 927.951 827.898 927.871 831.361C927.194 860.339 925.397 889.72 907.637 912.153C896.954 923.314 879.236 934.864 864.737 934.864C864.98 936.251 865.223 937.637 865.473 939.066C867.827 958.357 870.119 983.374 860.743 1000.36C851.67 1013.15 838.833 1016.48 825.349 1019C824.255 1019.22 823.162 1019.44 822.036 1019.66C818.766 1020.31 815.5 1020.92 812.219 1021.48C810.418 1021.8 808.616 1022.11 806.76 1022.44C798.464 1023.63 790.181 1023.58 781.833 1023.59C780.106 1023.6 778.38 1023.6 776.601 1023.61C772.951 1023.62 769.3 1023.62 765.649 1023.62C760.169 1023.63 754.689 1023.66 749.208 1023.69C676.352 1023.9 676.352 1023.9 659.974 1008.51C650.957 997.955 647.6 984.868 643.852 970.955C642.597 966.709 641.337 962.465 640.069 958.225C639.218 954.714 639.218 954.714 639.218 949.301C556.132 949.301 473.045 949.301 387.44 949.301C386.421 954.66 385.401 960.02 384.351 965.542C382.948 970.537 381.507 975.413 379.91 980.316C379.534 981.529 379.158 982.742 378.77 983.992C374.554 997.096 369.01 1006.82 358.647 1014.29C353.354 1016.88 347.89 1017.82 342.259 1018.89C341.168 1019.12 340.077 1019.34 338.953 1019.58C316.331 1023.96 293.181 1023.67 270.319 1023.72C265.463 1023.74 260.609 1023.79 255.753 1023.85C239.32 1023.95 223.142 1023.25 206.813 1021C205.323 1020.81 203.834 1020.61 202.3 1020.41C189.264 1018.4 175.892 1014.87 167.231 1002.53C166.242 1001.18 165.252 999.818 164.232 998.418C160.074 991.213 160.179 984.512 160.172 975.96C160.17 973.801 160.168 971.643 160.166 969.419C160.172 967.172 160.178 964.924 160.184 962.609C160.178 960.348 160.172 958.087 160.166 955.758C160.168 953.604 160.17 951.45 160.172 949.23C160.173 947.254 160.175 945.278 160.177 943.241C160.377 938.474 160.377 938.474 161.921 934.864C159.946 934.418 157.971 933.971 155.936 933.511C136.435 928.361 120.068 917.387 108.535 897.871C98.4932 878.369 96.8729 856.169 96.5873 834.004C96.5569 832.067 96.5266 830.129 96.4953 828.132C96.397 821.756 96.3082 815.381 96.2196 809.005C96.1531 804.572 96.0861 800.14 96.0184 795.708C95.8423 784.064 95.6744 772.42 95.5081 760.776C95.3368 748.885 95.1579 736.995 94.9796 725.104C94.6312 701.79 94.2911 678.475 93.9569 655.161C92.8268 654.713 91.6966 654.265 90.5322 653.804C85.3217 651.734 80.115 649.652 74.9082 647.569C73.1311 646.865 71.3539 646.161 69.5229 645.436C22.2108 626.458 22.2108 626.458 11.0527 607.453C-1.35557 572.999 0.529627 533.327 0.673801 496.639C0.700536 489.764 0.684725 482.889 0.657255 476.014C0.640466 470.645 0.645828 465.276 0.657821 459.907C0.660883 457.37 0.65726 454.833 0.646366 452.297C0.581083 432.886 1.75842 418.746 13.4443 404.104C19.4375 397.922 26.2836 393.978 33.426 389.893C35.7534 388.521 35.7534 388.521 38.1278 387.121C76.6446 364.629 76.6446 364.629 84.689 364.629C84.6787 363.418 84.6684 362.207 84.6578 360.959C84.555 348.312 84.4853 335.666 84.4345 323.018C84.4112 318.303 84.3796 313.588 84.3394 308.873C84.283 302.082 84.2569 295.292 84.2365 288.5C84.2126 286.404 84.1886 284.307 84.164 282.148C84.1608 263.818 87.6356 250.044 98.5909 236.507C116.482 218.077 141.484 208.48 163.466 198.612C162.087 196.69 160.702 194.774 159.315 192.86C158.544 191.792 157.774 190.724 156.98 189.624C153.619 185.222 150.066 181.104 146.475 176.957C144.962 175.191 143.449 173.424 141.938 171.656C141.161 170.749 140.384 169.842 139.584 168.907C137.215 166.139 134.846 163.371 132.477 160.604C131.714 159.714 130.952 158.825 130.167 157.909C128.06 155.444 125.963 152.966 123.866 150.488C121.674 147.961 119.431 145.49 117.096 143.143C116.183 142.206 115.269 141.268 114.327 140.302C113.393 139.379 112.459 138.456 111.497 137.504C107.135 129.47 109.169 119.692 110.767 110.845C111.389 107.802 112.03 104.764 112.686 101.73C113.033 100.1 113.379 98.47 113.736 96.7904C114.474 93.3638 115.221 89.9399 115.977 86.5187C116.74 83.0683 117.49 79.6143 118.228 76.1567C127.654 32.2302 127.654 32.2302 143.772 19.8494C150.949 15.137 156.669 14.3258 164.886 14.3359C165.98 14.3346 167.074 14.3333 168.201 14.332C171.876 14.3297 175.55 14.3399 179.225 14.3498C181.856 14.3503 184.487 14.3498 187.118 14.3484C192.79 14.3464 198.461 14.349 204.133 14.3545C213.103 14.361 222.073 14.3446 231.044 14.3224C232.557 14.3187 234.071 14.3151 235.63 14.3113C238.726 14.3038 241.821 14.2962 244.916 14.2886C265.803 14.2378 286.689 14.2015 307.576 14.2327C321.661 14.2535 335.746 14.2362 349.831 14.1748C357.284 14.1438 364.737 14.1325 372.191 14.1678C379.205 14.2007 386.218 14.1833 393.232 14.1276C395.803 14.1162 398.374 14.1231 400.945 14.15C416.369 14.9287 416.369 14.9287 429.751 7.34318C431.081 5.55246 432.41 3.76174 433.78 1.91675C440.15 -0.731496 446.929 -0.0966605 453.637 -0.0146684ZM132.573 252.748C130.921 253.677 129.269 254.607 127.567 255.564C123.745 257.842 121.32 259.634 118.671 263.575C116.993 270.53 117.299 276.935 117.721 284.095C117.782 286.093 117.842 288.09 117.905 290.148C118.038 294.306 118.201 298.462 118.393 302.617C118.65 308.215 118.823 313.805 118.953 319.409C119.167 328.372 119.455 337.328 119.77 346.287C120.14 356.824 120.483 367.363 120.831 377.902C120.907 380.158 120.982 382.413 121.06 384.738C121.948 411.461 122.736 438.188 123.522 464.916C123.684 470.416 123.847 475.917 124.009 481.417C124.423 495.434 124.836 509.45 125.248 523.467C125.538 533.327 125.829 543.188 126.121 553.049C127.174 588.66 128.219 624.271 129.254 659.883C129.407 665.158 129.561 670.433 129.714 675.708C130.158 690.919 130.597 706.13 131.031 721.342C131.163 725.949 131.296 730.557 131.43 735.165C132.383 767.932 133.05 800.69 133.24 833.476C133.48 853.642 136.565 873.897 148.78 888.99C161.543 903.144 176.528 903.242 193.333 903.503C195.666 903.559 197.998 903.616 200.33 903.675C205.631 903.804 210.931 903.915 216.231 904.014C224.321 904.166 232.41 904.345 240.499 904.53C263.032 905.044 285.565 905.492 308.099 905.925C315.237 906.062 322.375 906.206 329.514 906.353C384.343 907.487 384.343 907.487 439.179 907.838C440.211 907.837 441.244 907.836 442.308 907.835C453.183 907.825 464.058 907.788 474.934 907.724C476.71 907.717 478.486 907.709 480.316 907.702C483.629 907.687 486.942 907.666 490.255 907.635C491.71 907.63 493.166 907.624 494.665 907.618C495.928 907.609 497.191 907.6 498.493 907.591C501.744 907.796 501.744 907.796 506.378 909.601C509.053 909.737 511.733 909.762 514.41 909.726C516.107 909.707 517.805 909.688 519.554 909.668C521.454 909.637 523.354 909.605 525.312 909.573C527.393 909.544 529.474 909.516 531.554 909.489C538.673 909.391 545.792 909.271 552.911 909.15C555.423 909.108 557.935 909.067 560.447 909.026C576.897 908.753 593.346 908.446 609.796 908.126C619.885 907.93 629.973 907.738 640.062 907.551C667.414 907.044 694.765 906.507 722.116 905.916C734.894 905.641 747.672 905.376 760.451 905.139C771.523 904.934 782.593 904.704 793.664 904.444C799.41 904.31 805.156 904.187 810.903 904.093C817.239 903.99 823.573 903.832 829.907 903.67C831.741 903.649 833.574 903.627 835.462 903.604C851.043 903.13 866.755 900.602 878.639 887.946C881.461 882.851 881.461 882.851 883.659 877.232C884.432 875.392 885.204 873.552 886 871.656C889.786 861.006 889.872 850.397 890.262 839.014C890.365 836.237 890.365 836.237 890.469 833.405C890.695 827.213 890.912 821.02 891.129 814.827C891.287 810.414 891.445 806 891.604 801.587C892.031 789.658 892.448 777.729 892.861 765.799C893.076 759.611 893.293 753.422 893.511 747.234C896.317 667.409 898.612 587.58 900.417 507.715C900.46 505.834 900.503 503.954 900.547 502.017C900.746 493.314 900.94 484.612 901.124 475.909C901.492 459.119 902.075 442.377 902.999 425.615C903.63 413.416 903.939 401.206 904.222 388.991C904.271 386.948 904.271 386.948 904.321 384.864C905.265 344.445 905.038 304.006 904.898 263.575C901.719 261.381 898.532 259.204 895.34 257.034C894.477 256.436 893.614 255.838 892.725 255.222C890.829 253.939 888.915 252.693 886.987 251.479C884.382 249.838 881.801 248.142 879.241 246.408C864.158 237.083 851.087 236.769 834.352 236.912C831.463 236.897 828.574 236.878 825.685 236.854C817.791 236.802 809.898 236.817 802.004 236.843C793.473 236.86 784.942 236.815 776.411 236.778C759.714 236.716 743.017 236.713 726.319 236.732C712.74 236.747 699.161 236.742 685.582 236.722C682.679 236.718 682.679 236.718 679.718 236.714C675.787 236.708 671.855 236.703 667.923 236.697C641.536 236.662 615.148 236.647 588.761 236.674C587.73 236.675 586.699 236.677 585.637 236.678C577.267 236.686 568.897 236.696 560.527 236.705C527.9 236.742 495.274 236.712 462.648 236.628C425.942 236.534 389.237 236.488 352.531 236.513C333.115 236.526 313.699 236.518 294.283 236.454C277.751 236.401 261.219 236.399 244.687 236.462C236.261 236.492 227.836 236.5 219.411 236.445C211.679 236.395 203.949 236.413 196.217 236.482C193.438 236.495 190.66 236.485 187.882 236.447C167.01 236.183 151.207 241.919 132.573 252.748Z" fill="#04112D"/>
|
|
5
|
+
<path d="M367.62 339.97C393.788 361.752 413.898 394.676 419.34 432.224C422.417 462.131 419.9 496.394 404.621 521.847C394.938 534.679 379.382 545.481 364.652 547.456C351.321 548.324 339.06 548.572 327.535 539.855C326.275 538.959 325.015 538.063 323.717 537.14C303.025 521.44 291.803 499.588 286.119 471.791C280.974 443.365 284.338 414.754 297.568 389.941C299.279 387.043 301.045 384.189 302.868 381.387C303.818 379.885 304.768 378.384 305.747 376.836C309.364 371.938 313.126 368.402 317.611 364.618C319.808 362.734 319.808 362.734 322.049 360.812C325.994 357.977 325.994 357.977 330.619 357.977C330.619 356.789 330.619 355.6 330.619 354.376C301.733 355.713 277.291 362.496 256.153 386.902C250.072 394.632 245.5 402.817 241.2 412C240.605 413.154 240.011 414.308 239.399 415.496C227.899 439.324 227.686 466.473 227.324 493.035C226.307 493.035 225.289 493.035 224.241 493.035C218.716 476.932 217.478 462.168 217.496 444.977C217.494 443.097 217.492 441.217 217.49 439.28C217.909 403.946 227.592 375.416 248.306 349.494C281.448 312.428 329.913 311.156 367.62 339.97Z" fill="#04102C"/>
|
|
6
|
+
<path d="M768.323 337.891C790.352 357.312 805.467 386.445 809.581 418.493C811.711 446.807 810.601 475.365 800.755 501.796C800.245 501.796 799.736 501.796 799.211 501.796C799.259 499.798 799.259 499.798 799.309 497.76C800.231 453.999 796.836 418.121 769.867 384.721C749.008 360.988 723.651 355.884 695.736 354.101C695.736 355.29 695.736 356.479 695.736 357.704C696.871 357.887 698.006 358.071 699.175 358.26C712.757 362.208 724.148 378.731 731.076 392.158C744.333 421.107 747.096 450.456 738.979 481.983C731.786 507.215 719.01 528.744 698.535 541.196C685.311 548.721 668.478 549.366 654.164 545.657C644.561 541.49 635.527 534.814 627.783 527.012C627.783 525.823 627.783 524.634 627.783 523.41C626.352 522.72 626.352 522.72 624.893 522.016C619.348 518.291 617.87 512.051 615.428 505.398C614.996 504.258 614.564 503.118 614.119 501.943C603.874 472.825 604.098 435.489 613.883 406.335C627.047 371.681 648.274 343.991 678.265 328.548C708.166 315.443 741.584 316.095 768.323 337.891Z" fill="#04112C"/>
|
|
7
|
+
<path d="M191.436 236.177C194.332 236.163 197.227 236.144 200.123 236.12C208.02 236.071 215.917 236.09 223.814 236.121C232.354 236.142 240.894 236.099 249.434 236.065C266.141 236.008 282.847 236.012 299.553 236.038C313.136 236.058 326.718 236.057 340.301 236.041C343.205 236.038 343.205 236.038 346.168 236.034C350.101 236.03 354.035 236.025 357.969 236.02C393.77 235.98 429.571 236.004 465.373 236.054C498.015 236.099 530.656 236.082 563.298 236.012C600.021 235.933 636.744 235.898 673.467 235.928C677.385 235.931 681.304 235.934 685.223 235.937C687.151 235.939 689.079 235.94 691.065 235.942C704.625 235.949 718.185 235.925 731.745 235.889C748.279 235.846 764.813 235.85 781.347 235.912C789.776 235.942 798.205 235.952 806.635 235.905C814.363 235.862 822.089 235.881 829.818 235.946C832.601 235.959 835.386 235.951 838.169 235.918C856.994 235.711 870.034 239.282 886.502 250.611C888.953 252.262 888.953 252.262 891.455 253.946C901.577 260.871 901.577 260.871 903.49 265.474C885.124 275.177 863.628 273.446 843.97 273.402C840.955 273.409 837.94 273.418 834.924 273.428C826.689 273.45 818.454 273.45 810.219 273.446C801.318 273.445 792.417 273.465 783.515 273.483C766.098 273.514 748.68 273.524 731.262 273.526C717.101 273.528 702.941 273.536 688.78 273.547C655.133 273.575 621.486 273.598 587.838 273.596C586.764 273.596 585.689 273.596 584.582 273.596C579.136 273.595 573.691 273.595 568.245 273.594C566.623 273.594 566.623 273.594 564.968 273.594C562.781 273.594 560.594 273.594 558.407 273.594C524.376 273.592 490.346 273.619 456.315 273.67C418.037 273.727 379.76 273.759 341.482 273.756C321.23 273.755 300.979 273.765 280.728 273.805C263.49 273.839 246.253 273.847 229.015 273.821C220.226 273.809 211.437 273.809 202.648 273.841C194.591 273.871 186.535 273.865 178.479 273.833C175.575 273.827 172.672 273.834 169.768 273.855C152.286 273.971 137.166 272.117 120.49 265.474C120.49 264.248 120.49 263.021 120.49 261.758C142.78 242.383 164.572 235.927 191.436 236.177Z" fill="#FAFBFB"/>
|
|
8
|
+
<path d="M119.611 262.861C130.218 265.841 140.825 268.821 151.754 271.891C152.462 291.119 153.163 310.348 153.859 329.576C153.911 331.016 153.963 332.455 154.017 333.938C155.664 379.43 157.161 424.924 158.417 470.434C159.066 493.964 159.066 493.964 160.179 517.469C161.203 535.462 161.564 553.479 162.012 571.503C163.377 625.923 165.137 680.324 166.95 734.726C167.155 740.901 167.36 747.075 167.564 753.25C167.892 763.129 168.221 773.008 168.553 782.887C168.676 786.544 168.798 790.202 168.92 793.859C169.248 803.74 169.594 813.621 169.958 823.501C170.124 828.264 170.263 833.028 170.4 837.792C170.503 840.847 170.606 843.901 170.711 846.955C170.743 848.321 170.775 849.687 170.809 851.094C171.482 869.139 177.816 885.671 188.49 898.637C188.49 899.233 188.49 899.829 188.49 900.443C173.884 901.326 161.621 901.919 150.23 890.029C143.983 882.244 140.422 874.571 137.978 864.32C137.471 862.623 136.964 860.927 136.442 859.179C134.065 849.279 134.27 839.106 134.083 828.887C134.001 825.376 133.92 821.865 133.838 818.354C133.753 814.574 133.674 810.794 133.597 807.015C133.433 798.962 133.249 790.91 133.062 782.858C132.997 780.06 132.932 777.262 132.867 774.465C132.834 773.06 132.802 771.656 132.768 770.209C132.668 765.865 132.57 761.521 132.472 757.177C131.785 726.837 130.955 696.503 130.111 666.169C129.908 658.843 129.707 651.518 129.505 644.192C129.179 632.343 128.851 620.495 128.523 608.646C128.193 596.723 127.864 584.8 127.535 572.877C127.474 570.661 127.474 570.661 127.412 568.401C127.33 565.421 127.248 562.441 127.166 559.461C126.409 532 125.649 504.539 124.885 477.078C124.473 462.25 124.062 447.422 123.655 432.594C123.346 421.365 123.034 410.136 122.722 398.907C122.596 394.357 122.47 389.806 122.346 385.256C121.747 363.361 121.115 341.476 120.098 319.601C119.54 307.451 119.431 295.348 119.515 283.18C119.522 281.189 119.529 279.199 119.536 277.148C119.554 272.385 119.581 267.623 119.611 262.861Z" fill="#1FC3BE"/>
|
|
9
|
+
<path d="M158.972 48.5319C163.415 47.861 163.415 47.861 169.219 47.8763C170.284 47.8716 171.348 47.867 172.445 47.8622C176.031 47.8531 179.615 47.8832 183.2 47.913C185.763 47.9145 188.326 47.9136 190.889 47.9106C197.862 47.909 204.835 47.9411 211.808 47.9791C219.09 48.0131 226.371 48.0164 233.653 48.0229C247.449 48.0398 261.244 48.0846 275.04 48.1393C290.743 48.2001 306.445 48.2302 322.148 48.2575C354.457 48.3146 386.765 48.4105 419.073 48.5319C419.107 50.1233 419.107 50.1233 419.142 51.7469C419.259 56.6584 419.408 61.5679 419.557 66.4782C419.592 68.1462 419.627 69.8142 419.663 71.5327C420.115 85.2354 421.898 98.1341 427.879 110.095C431.934 114.468 435.908 116.957 440.9 119.6C443.845 121.226 443.845 121.226 448.49 124.861C347.84 124.861 247.19 124.861 143.49 124.861C144.476 114.439 145.471 105.227 147.451 95.1724C147.682 93.9984 147.913 92.8243 148.151 91.6147C148.635 89.1675 149.123 86.7214 149.615 84.2763C150.365 80.5359 151.097 76.7908 151.827 73.0448C152.302 70.6521 152.779 68.2598 153.257 65.8677C153.685 63.7163 154.113 61.5648 154.554 59.3481C155.876 53.984 155.876 53.984 158.972 48.5319Z" fill="#23C5BF"/>
|
|
10
|
+
<path d="M906.453 262.861C906.688 329.217 905.812 395.301 903.191 461.586C902.276 484.968 901.553 508.35 901.041 531.749C901.013 533.022 900.985 534.294 900.956 535.605C900.81 542.266 900.666 548.927 900.523 555.589C899.252 614.503 897.418 673.378 895.32 732.261C895.18 736.215 895.04 740.168 894.9 744.121C894.564 753.569 894.224 763.017 893.882 772.465C893.755 775.945 893.63 779.425 893.505 782.905C892.747 803.906 891.818 824.881 890.69 845.861C879.766 845.861 868.842 845.861 857.587 845.861C857.099 793.622 858.524 741.527 860.226 689.329C860.522 680.215 860.81 671.1 861.099 661.986C862.816 607.781 864.662 553.585 866.805 499.4C866.994 494.616 867.183 489.831 867.371 485.046C867.418 483.844 867.466 482.642 867.514 481.404C869.186 438.759 870.604 396.101 872.069 353.447C872.214 349.247 872.358 345.047 872.503 340.847C873.314 317.258 874.122 293.669 874.926 270.08C876.428 269.862 877.93 269.643 879.477 269.418C881.454 269.115 883.431 268.813 885.468 268.501C887.425 268.208 889.382 267.915 891.398 267.613C896.191 266.635 901.77 262.861 906.453 262.861Z" fill="#21C4BF"/>
|
|
11
|
+
<path d="M695.245 353.017C722.595 351.722 746.494 358.278 767.81 379.421C787.657 401.951 800.445 433.365 801.48 465.78C801.775 495.927 795.453 526.33 777.402 548.836C776.466 550.009 775.531 551.183 774.568 552.392C754.126 575.398 726.979 582.195 699.538 581.848C676.308 580.356 654.314 565.72 637.891 547.023C633.503 541.181 629.404 535.176 625.49 528.892C626.257 527.097 626.257 527.097 627.04 525.265C627.979 526.097 628.918 526.929 629.886 527.787C648.452 543.69 664.552 548.439 687.337 544.417C702.538 539.93 715.948 527.611 724.697 512.573C739.419 481.579 745.949 452.779 738.8 417.539C732.579 393.768 721.252 372.613 702.572 359.979C699.631 358.222 699.631 358.222 695.245 356.643C695.245 355.447 695.245 354.25 695.245 353.017Z" fill="#FAFBFB"/>
|
|
12
|
+
<path d="M254.49 183.861C425.43 183.861 596.37 183.861 772.49 183.861C767.424 196.11 762.776 207.159 752.448 213.686C738.875 217.842 724.394 216.791 710.477 216.61C704.681 216.559 698.885 216.638 693.089 216.699C681.752 216.799 670.418 216.777 659.081 216.713C649.862 216.662 640.645 216.655 631.426 216.679C629.455 216.685 629.455 216.685 627.443 216.69C624.772 216.697 622.101 216.704 619.431 216.712C594.414 216.775 569.399 216.702 544.382 216.582C522.943 216.482 501.506 216.499 480.067 216.602C455.139 216.722 430.212 216.769 405.285 216.701C402.623 216.693 399.962 216.686 397.301 216.679C395.337 216.674 395.337 216.674 393.334 216.669C384.134 216.65 374.934 216.682 365.733 216.735C354.511 216.798 343.29 216.78 332.068 216.662C326.347 216.603 320.63 216.579 314.91 216.654C277.049 217.107 277.049 217.107 266.384 205.664C257.573 194.286 257.573 194.286 257.573 187.589C256.556 187.589 255.538 187.589 254.49 187.589C254.49 186.358 254.49 185.128 254.49 183.861Z" fill="#092F53"/>
|
|
13
|
+
<path d="M319.982 352.926C321.062 352.935 322.143 352.943 323.256 352.951C325.909 352.972 328.562 353.005 331.215 353.04C331.215 354.234 331.215 355.428 331.215 356.659C329.969 357.293 328.723 357.927 327.438 358.581C308.668 369.901 297.096 388.355 290.304 411.372C282.324 441.61 285.415 471.724 296.643 500.287C305.812 520.017 319.303 534.738 337.135 543.334C352.935 548.185 371.002 546.463 385.446 537.608C391.274 533.62 396.927 529.415 402.49 524.942C398.764 535.017 391.762 542.342 385.446 550.275C384.199 551.917 382.953 553.559 381.669 555.251C358.147 579.371 330.033 581.325 300.226 579.227C293.364 577.88 287.818 575.654 281.633 571.989C279.903 571.004 278.173 570.02 276.391 569.006C252.086 554.464 238.914 534.853 230.646 505.002C222.687 473.224 226.368 437.88 239.894 408.98C253.229 382.479 271.925 364.466 297.363 356.164C298.819 355.73 300.276 355.296 301.776 354.849C302.744 354.492 303.713 354.135 304.711 353.768C309.776 352.637 314.847 352.853 319.982 352.926Z" fill="#FBFBFC"/>
|
|
14
|
+
<path d="M158.972 48.5319C163.415 47.861 163.415 47.861 169.219 47.8763C170.284 47.8716 171.348 47.867 172.445 47.8622C176.031 47.8531 179.615 47.8832 183.2 47.913C185.763 47.9145 188.326 47.9136 190.889 47.9106C197.862 47.909 204.835 47.9411 211.808 47.9791C219.09 48.0131 226.371 48.0164 233.653 48.0229C247.449 48.0398 261.244 48.0846 275.04 48.1393C290.743 48.2001 306.445 48.2302 322.148 48.2575C354.457 48.3146 386.765 48.4105 419.073 48.5319C419.073 49.7314 419.073 50.9308 419.073 52.1666C341.415 52.1666 263.756 52.1666 183.744 52.1666C182.722 59.3633 181.7 66.56 180.647 73.9748C179.114 81.1715 177.582 88.3682 176.002 95.783C257.238 95.783 338.473 95.783 422.17 95.783C425.235 102.98 425.235 102.98 428.363 110.322C434.835 116.794 440.211 120.436 448.49 123.043C448.49 123.643 448.49 124.243 448.49 124.861C347.84 124.861 247.19 124.861 143.49 124.861C144.476 114.439 145.471 105.227 147.451 95.1724C147.682 93.9984 147.913 92.8243 148.151 91.6147C148.635 89.1675 149.123 86.7214 149.615 84.2763C150.365 80.5359 151.097 76.7908 151.827 73.0448C152.302 70.6521 152.779 68.2598 153.257 65.8677C153.685 63.7163 154.113 61.5648 154.554 59.3481C155.876 53.984 155.876 53.984 158.972 48.5319Z" fill="#F9FAFB"/>
|
|
15
|
+
<path d="M607.713 50.8605C692.984 50.8605 778.254 50.8605 866.109 50.8605C873.145 77.6947 873.145 77.6947 875.53 88.8758C876.01 91.093 876.489 93.3103 876.984 95.5947C878.803 105.275 880.101 115.082 881.49 124.861C781.5 124.861 681.51 124.861 578.49 124.861C581.736 121.052 583.174 120.484 587.43 118.995C594.505 116.011 597.349 112.274 601.561 105.007C602.576 102.029 603.591 99.0508 604.637 95.9825C684.832 95.9825 765.027 95.9825 847.652 95.9825C844.607 79.0076 844.607 79.0076 841.5 61.6898C841.5 59.3074 841.5 56.9249 841.5 54.4703C764.35 54.4703 687.201 54.4703 607.713 54.4703C607.713 53.2791 607.713 52.0879 607.713 50.8605Z" fill="#FAFBFC"/>
|
|
16
|
+
<path d="M608.025 54.8605C685.022 54.8605 762.019 54.8605 841.35 54.8605C847.49 86.1649 847.49 86.1649 847.49 94.8605C767.96 94.8605 688.43 94.8605 606.49 94.8605C606.996 81.6605 607.503 68.4605 608.025 54.8605Z" fill="#20C5BE"/>
|
|
17
|
+
<path d="M454.086 30.0659C455.332 30.0667 456.579 30.0676 457.863 30.0684C459.823 30.0593 459.823 30.0593 461.822 30.05C466.163 30.0327 470.504 30.0292 474.845 30.0273C477.849 30.0214 480.854 30.0153 483.858 30.009C490.164 29.9981 496.471 29.9948 502.777 29.9958C510.875 29.996 518.972 29.9713 527.069 29.9401C533.276 29.9199 539.484 29.9162 545.691 29.9172C548.677 29.915 551.663 29.907 554.649 29.893C558.819 29.8753 562.988 29.8804 567.158 29.8914C568.401 29.8812 569.645 29.871 570.926 29.8605C579.471 29.9179 579.471 29.9179 582.914 33.9569C583.63 41.9294 583.415 49.9622 583.397 57.9737C583.422 60.2004 583.447 62.4271 583.473 64.7213C583.474 66.8779 583.475 69.0345 583.476 71.2565C583.48 73.2268 583.485 75.1971 583.49 77.2271C582.827 83.7607 581.126 88.1367 578.279 93.7722C562.103 106.859 531.176 103.504 512.128 103.402C510.917 103.4 509.707 103.397 508.459 103.395C459.513 103.228 459.513 103.228 446.942 91.9597C443.353 85.6301 443.473 80.039 443.496 72.5664C443.5 69.0563 443.5 69.0563 443.505 65.4754C443.514 64.2637 443.524 63.0521 443.534 61.8037C443.562 58.0805 443.565 54.3581 443.565 50.6348C443.644 30.1374 443.644 30.1374 454.086 30.0659Z" fill="#F8F9FA"/>
|
|
18
|
+
<path d="M603.361 674C608.304 676.022 608.304 676.022 611.405 679.618C612.579 687.526 612.122 694.099 609.079 701.302C593.147 723.004 577.878 732.702 554.032 738.939C552.976 739.262 551.92 739.585 550.832 739.917C541.252 742.715 532.095 743.091 522.244 742.984C519.788 742.964 519.788 742.964 517.283 742.943C480.266 742.36 442.689 735.022 414.476 704.784C410.647 698.126 410.647 694.679 411.375 686.808C414.736 682.163 416.814 681.516 421.987 680.832C428.203 681.573 429.995 683.842 434.44 688.83C444.823 699.189 455.698 703.98 468.748 708.38C470.535 708.991 472.322 709.603 474.163 710.234C502.282 717.937 539.256 718.543 566.437 706.582C567.74 706.021 569.044 705.461 570.386 704.883C579.101 700.495 583.685 693.205 589.097 684.652C596.143 674.274 596.143 674.274 603.361 674Z" fill="#051231"/>
|
|
19
|
+
<path d="M946.49 409.861C956.733 413.468 965.447 416.829 974.761 422.459C975.823 423.076 976.886 423.693 977.98 424.329C987.755 430.138 987.755 430.138 990.957 435.057C991.51 439.396 991.51 439.396 991.479 444.592C991.479 446.537 991.478 448.483 991.478 450.487C991.454 452.585 991.431 454.683 991.406 456.844C991.4 458.994 991.393 461.144 991.386 463.358C991.361 470.235 991.303 477.112 991.244 483.989C991.221 488.646 991.2 493.304 991.181 497.962C991.131 509.39 991.054 520.817 990.957 532.245C986.134 532.859 981.31 533.453 976.486 534.045C975.139 534.217 973.792 534.388 972.404 534.565C971.065 534.728 969.726 534.89 968.346 535.057C966.527 535.283 966.527 535.283 964.672 535.514C958.623 535.97 952.551 535.845 946.49 535.845C946.49 494.27 946.49 452.695 946.49 409.861Z" fill="#20C2BD"/>
|
|
20
|
+
<path d="M80.4897 407.861C80.4897 449.771 80.4897 491.681 80.4897 534.861C64.8946 534.861 64.8946 534.861 58.872 534.067C57.5963 533.903 56.3206 533.739 55.0063 533.571C53.7266 533.398 52.447 533.225 51.1286 533.046C49.7953 532.873 48.462 532.7 47.0884 532.522C43.8457 532.1 40.604 531.667 37.3625 531.232C37.1674 517.154 37.0324 503.077 36.9395 488.998C36.9007 484.207 36.8481 479.417 36.7815 474.627C36.6882 467.745 36.6444 460.865 36.6104 453.983C36.5508 450.765 36.5508 450.765 36.49 447.482C36.4857 432.655 36.4857 432.655 40.8443 426.648C42.2367 425.836 43.6291 425.025 45.0638 424.189C46.168 423.487 47.2722 422.785 48.4098 422.062C49.5016 421.503 50.5933 420.945 51.7182 420.369C53.526 419.434 53.526 419.434 55.3703 418.48C56.6072 417.857 57.8442 417.234 59.1186 416.592C60.3675 415.947 61.6164 415.303 62.9031 414.639C76.1165 407.861 76.1165 407.861 80.4897 407.861Z" fill="#22C6BF"/>
|
|
21
|
+
<path d="M843.057 124.861C855.74 124.861 868.423 124.861 881.49 124.861C874.536 134.383 867.494 143.238 859.88 151.958C852.223 160.815 845.185 170.214 838.309 179.911C815.456 211.722 815.456 211.722 801.585 213.81C793.722 214.1 786.221 213.11 778.49 211.47C780.836 205.667 783.252 201.929 787.233 197.486C792.405 191.696 797.07 185.545 801.747 179.214C806.379 173.046 811.228 167.126 816.058 161.174C823.786 151.606 831.087 141.981 837.802 131.401C838.522 130.434 839.241 129.466 839.982 128.469C840.997 128.469 842.012 128.469 843.057 128.469C843.057 127.278 843.057 126.088 843.057 124.861Z" fill="#117284"/>
|
|
22
|
+
<path d="M79.9452 407.861C80.4549 407.861 80.9646 407.861 81.4897 407.861C81.4897 473.201 81.4897 538.541 81.4897 605.861C69.3158 603.834 69.3158 603.834 64.3793 601.649C62.7904 600.951 62.7904 600.951 61.1695 600.239C59.5688 599.513 59.5688 599.513 57.9357 598.773C56.8446 598.296 55.7535 597.819 54.6294 597.328C49.7953 595.178 45.6541 593.018 41.332 589.661C40.3806 586.318 40.3806 586.318 39.8659 582.257C39.6714 580.762 39.4769 579.267 39.2765 577.727C39.0947 576.133 38.9129 574.54 38.7256 572.898C38.5289 571.284 38.3322 569.669 38.1295 568.006C36.6774 555.344 36.1583 543.036 36.6984 530.261C51.6093 529.7 64.6635 531.882 79.9452 533.861C79.9452 492.281 79.9452 450.701 79.9452 407.861Z" fill="#0B6287"/>
|
|
23
|
+
<path d="M144.49 124.269C150.528 123.846 156.564 123.59 162.61 123.364C164.312 123.243 166.014 123.121 167.768 122.996C180.226 122.646 180.226 122.646 185.479 127.192C188.272 130.894 190.677 134.701 193.072 138.755C194.452 140.589 195.862 142.394 197.308 144.159C200.139 147.711 202.97 151.264 205.799 154.818C206.55 155.761 207.301 156.704 208.075 157.675C211.605 162.11 215.119 166.562 218.636 171.009C223.562 177.228 228.515 183.412 233.512 189.555C234.521 190.797 235.531 192.039 236.571 193.319C238.565 195.77 240.563 198.218 242.565 200.662C249.49 209.174 249.49 209.174 249.49 211.185C244.04 211.717 238.596 212.034 233.132 212.316C231.606 212.468 230.08 212.62 228.507 212.776C221.969 213.029 217.043 213.014 211.755 208.251C209.511 205.294 207.347 202.255 205.236 199.17C199.784 191.215 193.443 184.279 187.189 177.177C184.663 174.282 182.138 171.387 179.613 168.491C175.685 163.997 171.754 159.506 167.819 155.02C163.985 150.644 160.159 146.256 156.335 141.867C155.145 140.517 153.956 139.167 152.73 137.775C151.646 136.529 150.562 135.283 149.445 133.998C148.485 132.903 147.525 131.808 146.537 130.679C144.49 127.891 144.49 127.891 144.49 124.269Z" fill="#12788A"/>
|
|
24
|
+
<path d="M989.112 532.132C989.842 579.889 989.842 579.889 986.068 589.83C979.951 597.301 972.733 599.859 964.566 602.902C963.332 603.386 962.098 603.869 960.826 604.367C951.722 607.861 951.722 607.861 946.49 607.861C946.49 584.06 946.49 560.26 946.49 535.738C976.526 531.553 976.526 531.553 989.112 532.132Z" fill="#086188"/>
|
|
25
|
+
<path d="M812.359 941.861C813.776 941.881 815.194 941.902 816.654 941.924C818.075 941.94 819.497 941.957 820.961 941.973C822.06 941.994 823.158 942.015 824.29 942.037C827.715 954.776 827.637 966.653 827.383 979.926C802.17 981.573 777.047 981.954 751.799 981.843C748.154 981.834 744.509 981.825 740.864 981.818C732.073 981.798 723.281 981.769 714.49 981.73C714.49 980.539 714.49 979.348 714.49 978.121C722.27 975.168 730.051 972.217 737.832 969.268C740.47 968.268 743.108 967.267 745.746 966.265C765.241 958.864 784.752 951.583 804.451 944.947C812.336 941.862 812.336 941.862 812.359 941.861Z" fill="#12376F"/>
|
|
26
|
+
<path d="M202.665 942.303C215.916 940.521 225.826 944.32 237.827 950.151C244.831 953.489 252.016 955.985 259.248 958.548C269.371 962.2 279.395 966.202 289.433 970.159C291.588 971.006 293.743 971.852 295.898 972.699C301.096 974.741 306.293 976.787 311.49 978.835C311.49 979.438 311.49 980.041 311.49 980.662C298.961 980.704 286.433 980.737 273.904 980.756C268.086 980.766 262.267 980.779 256.448 980.799C250.824 980.819 245.199 980.83 239.574 980.835C237.438 980.838 235.302 980.845 233.165 980.855C221.828 980.905 210.794 980.655 199.556 978.835C199.145 966.295 200.709 954.617 202.665 942.303Z" fill="#113771"/>
|
|
27
|
+
<path d="M163.583 47.8607C166.459 47.8632 166.459 47.8632 169.393 47.8657C170.456 47.8642 171.52 47.8627 172.616 47.8611C176.206 47.8581 179.797 47.868 183.387 47.8778C185.951 47.8783 188.514 47.8781 191.077 47.877C198.059 47.8765 205.04 47.8871 212.021 47.8997C219.308 47.9109 226.595 47.912 233.883 47.9141C247.693 47.9197 261.502 47.9345 275.312 47.9525C291.03 47.9726 306.747 47.9825 322.465 47.9915C354.807 48.0104 387.148 48.042 419.49 48.0821C419.49 49.2695 419.49 50.457 419.49 51.6804C341.813 51.6804 264.137 51.6804 184.107 51.6804C183.085 58.8051 182.063 65.9299 181.01 73.2705C179.609 80.5259 177.986 87.6649 176.364 94.8605C167.165 94.8605 157.967 94.8605 148.49 94.8605C156.838 48.2118 156.838 48.2118 163.583 47.8607Z" fill="#ADCEE3"/>
|
|
28
|
+
<path d="M607.49 50.8605C692.88 50.8605 778.27 50.8605 866.248 50.8605C875.49 85.1805 875.49 85.1805 875.49 94.8605C866.341 94.8605 857.192 94.8605 847.766 94.8605C846.731 89.4356 845.706 84.0089 844.685 78.5805C844.391 77.0446 844.097 75.5086 843.795 73.9262C843.517 72.4401 843.239 70.9541 842.952 69.423C842.694 68.0589 842.436 66.6949 842.17 65.2894C841.605 61.4205 841.605 61.4205 841.605 54.3805C764.347 54.3805 687.089 54.3805 607.49 54.3805C607.49 53.2189 607.49 52.0573 607.49 50.8605Z" fill="#AFE2F2"/>
|
|
29
|
+
<path d="M160.662 241.824C160.011 243.325 159.359 244.825 158.688 246.371C157.842 248.344 156.995 250.316 156.123 252.349C154.859 255.279 154.859 255.279 153.57 258.269C151.15 263.942 151.15 263.942 149.846 271.109C388.979 271.109 628.111 271.109 874.49 271.109C874.49 271.713 874.49 272.317 874.49 272.94C805.142 273.065 735.795 273.182 666.448 273.25C665.421 273.251 664.393 273.252 663.335 273.253C641.012 273.275 618.689 273.295 596.365 273.314C585.417 273.323 574.469 273.332 563.521 273.342C562.432 273.343 561.342 273.344 560.22 273.345C524.936 273.376 489.651 273.431 454.367 273.498C418.095 273.567 381.823 273.612 345.55 273.627C322.184 273.637 298.819 273.668 275.453 273.73C260.131 273.769 244.809 273.78 229.486 273.771C220.65 273.766 211.813 273.773 202.976 273.812C194.875 273.848 186.775 273.85 178.674 273.825C175.754 273.822 172.834 273.831 169.914 273.854C152.378 273.985 137.215 272.191 120.49 265.618C120.49 264.41 120.49 263.202 120.49 261.958C151.291 236.274 151.291 236.274 160.662 241.824Z" fill="#EEF1F6"/>
|
|
30
|
+
<path d="M368.975 381.491C376.054 385.177 381.802 389.762 385.862 397.57C387.002 405.569 386.7 413.075 384.039 420.573C377.853 429.013 372.689 432.948 363.122 433.861C356.362 433.731 352.655 431.354 347.482 426.156C341.542 418.515 340.2 412.023 340.538 401.988C341.893 394.538 345.542 389.772 350.553 385.064C356.533 380.963 362.157 380.07 368.975 381.491Z" fill="#F9F9FA"/>
|
|
31
|
+
<path d="M674.168 385.211C678.765 388.562 681.972 391.828 684.78 397.207C686.131 406.399 685.676 414.467 682.346 422.975C676.111 430.272 670.213 432.285 661.512 433.861C654.253 433.602 650.229 428.876 645.162 423.378C640.073 416.979 640.462 410.578 640.519 402.246C641.552 394.178 645.023 389.733 650.511 384.766C658.841 379.301 666.029 379.683 674.168 385.211Z" fill="#F9F9FA"/>
|
|
32
|
+
<path d="M168.482 827.861C168.99 827.861 169.498 827.861 170.021 827.861C170.027 831.152 170.027 831.152 170.033 834.509C170.398 858.925 173.42 880.337 188.49 898.627C188.49 899.226 188.49 899.824 188.49 900.441C173.804 901.328 161.473 901.924 150.02 889.979C143.717 882.131 140.215 874.461 137.702 864.151C137.099 862.093 136.495 860.034 135.874 857.914C134.376 850.167 134.35 843.02 134.624 835.119C135.132 835.119 135.639 835.119 136.163 835.119C136.163 838.711 136.163 842.304 136.163 846.006C146.828 846.006 157.494 846.006 168.482 846.006C168.482 840.018 168.482 834.03 168.482 827.861Z" fill="#118999"/>
|
|
33
|
+
<path d="M856.843 827.861C857.347 827.861 857.852 827.861 858.372 827.861C858.372 833.863 858.372 839.865 858.372 846.049C868.971 846.049 879.57 846.049 890.49 846.049C890.117 862.876 887.332 878.624 877.119 891.15C868.247 899.122 859.503 901.085 848.622 900.841C846.718 900.808 844.813 900.775 842.851 900.741C841.412 900.699 839.973 900.657 838.49 900.614C839.081 899.774 839.673 898.935 840.282 898.07C851.868 880.812 855.171 863.345 856.174 841.729C856.24 840.39 856.306 839.052 856.374 837.672C856.534 834.402 856.689 831.131 856.843 827.861Z" fill="#0F8797"/>
|
|
34
|
+
<path d="M944.65 409.861C955.056 413.036 964.607 416.887 974.195 422.412C975.305 423.027 976.415 423.642 977.559 424.275C987.406 429.854 987.406 429.854 991.121 434.964C991.469 439.716 991.575 444.021 991.421 448.748C991.388 450.636 991.388 450.636 991.355 452.562C991.299 455.662 991.213 458.762 991.121 461.861C948.837 459.374 948.837 459.374 944.65 454.688C944.51 451.364 944.478 448.034 944.493 444.707C944.498 442.69 944.503 440.674 944.509 438.596C944.522 436.473 944.536 434.35 944.549 432.162C944.557 430.032 944.564 427.902 944.571 425.708C944.59 420.425 944.617 415.143 944.65 409.861Z" fill="#F6F8F9"/>
|
|
35
|
+
<path d="M80.4897 407.861C80.4897 423.228 80.4897 438.595 80.4897 454.428C75.9295 455.315 71.3693 456.201 66.6709 457.115C65.2639 457.395 63.8569 457.676 62.4072 457.965C53.893 459.569 45.8223 460.043 37.1971 459.801C36.988 455.171 36.835 450.554 36.7139 445.92C36.6492 444.614 36.5844 443.307 36.5177 441.961C36.3921 435.562 36.5404 432.024 40.2109 427.107C46.3244 423.054 52.5643 419.687 59.0367 416.48C60.2904 415.844 61.544 415.208 62.8357 414.553C76.0997 407.861 76.0997 407.861 80.4897 407.861Z" fill="#FAFBFC"/>
|
|
36
|
+
<path d="M491.127 56.8605C493.334 56.9297 495.541 57.0107 497.747 57.1009C498.908 57.1422 500.069 57.1835 501.266 57.2261C503.725 57.3162 506.185 57.4114 508.644 57.5112C512.421 57.6626 516.199 57.7932 519.976 57.9216C522.36 58.0115 524.744 58.1027 527.128 58.1952C528.834 58.2531 528.834 58.2531 530.574 58.3122C538.548 58.6553 538.548 58.6553 540.272 60.8245C540.562 66.5392 540.562 66.5392 540.272 72.4971C537.18 76.388 537.18 76.388 533.667 76.8605C531.507 76.8485 531.507 76.8485 529.303 76.8363C527.708 76.8326 526.113 76.8288 524.47 76.8249C522.796 76.8011 521.121 76.7773 519.396 76.7527C517.77 76.7515 516.143 76.7502 514.467 76.7489C504.427 76.6786 494.57 75.9644 484.603 74.4425C484.452 62.4736 484.452 62.4736 484.603 58.8791C486.149 56.9337 486.149 56.9337 491.127 56.8605Z" fill="#1EC4BF"/>
|
|
37
|
+
<path d="M160.49 241.817C159.841 243.293 159.193 244.769 158.525 246.29C157.682 248.241 156.839 250.193 155.97 252.203C154.712 255.095 154.712 255.095 153.428 258.045C151.494 263.114 150.396 267.387 149.72 272.861C139.605 271.728 130.233 268.936 120.49 265.556C120.49 264.351 120.49 263.146 120.49 261.904C151.159 236.28 151.159 236.28 160.49 241.817Z" fill="#93EEE7"/>
|
|
38
|
+
<path d="M867.49 240.861C879.783 245.288 896.181 251.532 903.49 265.236C897.288 268.882 891.835 269.68 885.021 270.157C883.14 270.298 881.258 270.438 879.32 270.582C877.891 270.674 876.462 270.766 874.99 270.861C874.7 269.638 874.41 268.415 874.111 267.154C872.01 258.341 869.872 249.564 867.49 240.861Z" fill="#9FF3EB"/>
|
|
39
|
+
<path d="M183.49 54.8605C260.38 54.8605 337.27 54.8605 416.49 54.8605C415.981 55.9605 415.471 57.0605 414.947 58.1939C413.782 58.1877 412.617 58.1816 411.417 58.1752C383.099 58.0281 354.781 57.9178 326.462 57.8485C312.768 57.8141 299.074 57.7671 285.379 57.6909C273.446 57.6246 261.512 57.5815 249.579 57.5666C243.257 57.5579 236.937 57.5374 230.616 57.489C224.67 57.4438 218.724 57.4298 212.777 57.4398C210.592 57.438 208.407 57.4247 206.222 57.3992C203.243 57.3661 200.265 57.3779 197.287 57.3922C195.618 57.386 193.95 57.3799 192.231 57.3735C187.893 57.7797 187.893 57.7797 185.231 61.5773C184.657 62.6608 184.082 63.7442 183.49 64.8605C183.49 61.5605 183.49 58.2605 183.49 54.8605Z" fill="#13C4B9"/>
|
|
40
|
+
<path d="M787.49 196.861C788.48 197.438 789.47 198.016 790.49 198.611C789.005 200.668 789.005 200.668 787.49 202.767C784.187 206.862 784.187 206.862 784.49 210.861C782.51 210.861 780.53 210.861 778.49 210.861C780.654 204.97 783.489 201.217 787.49 196.861Z" fill="#157C8A"/>
|
|
41
|
+
<path d="M142.49 21.8605C142.49 27.4855 142.49 27.4855 138.561 32.5246C137.265 33.9555 135.968 35.3863 134.633 36.8605C133.595 36.2418 132.558 35.623 131.49 34.9855C138.954 23.9699 138.954 23.9699 142.49 21.8605Z" fill="#151F38"/>
|
|
42
|
+
<path d="M182.49 124.861C189.75 124.861 197.01 124.861 204.49 124.861C204.49 125.356 204.49 125.851 204.49 126.361C201.707 126.613 198.924 126.862 196.142 127.111C194.592 127.25 193.042 127.389 191.446 127.532C187.204 127.861 187.204 127.861 182.49 127.861C182.49 126.871 182.49 125.881 182.49 124.861Z" fill="#091B37"/>
|
|
43
|
+
<path d="M426 174C426.66 174.66 427.32 175.32 428 176C426.35 177.65 424.7 179.3 423 181C422.34 180.67 421.68 180.34 421 180C422.65 178.02 424.3 176.04 426 174Z" fill="#1AC4BA"/>
|
|
44
|
+
</g>
|
|
45
|
+
<defs>
|
|
46
|
+
<clipPath id="clip0_1_3">
|
|
47
|
+
<rect width="1024" height="1024" fill="white"/>
|
|
48
|
+
</clipPath>
|
|
49
|
+
</defs>
|
|
50
|
+
</svg>
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
BigInt.prototype.toJSON = function () {
|
|
7
|
+
const num = Number(this);
|
|
8
|
+
if (num > Number.MAX_SAFE_INTEGER || num < Number.MIN_SAFE_INTEGER) {
|
|
9
|
+
throw new Error(`BigInt ${this} exceeds Number safe range`);
|
|
10
|
+
}
|
|
11
|
+
return num;
|
|
12
|
+
};
|
|
13
|
+
const dotenv_1 = __importDefault(require("dotenv"));
|
|
14
|
+
dotenv_1.default.config();
|
|
15
|
+
const express_1 = __importDefault(require("express"));
|
|
16
|
+
const logging_1 = require("./logging");
|
|
17
|
+
const auth_1 = __importDefault(require("./auth"));
|
|
18
|
+
const workflows_1 = __importDefault(require("./workflows"));
|
|
19
|
+
const chat_1 = __importDefault(require("./chat"));
|
|
20
|
+
const skills_1 = __importDefault(require("./skills"));
|
|
21
|
+
const users_1 = __importDefault(require("./users"));
|
|
22
|
+
const cronjob_1 = require("./cronjob");
|
|
23
|
+
const opencode_server_1 = require("./opencode-server");
|
|
24
|
+
const path_1 = __importDefault(require("path"));
|
|
25
|
+
const assert_1 = require("./utils/assert");
|
|
26
|
+
const utils_1 = require("./utils");
|
|
27
|
+
const redact_1 = require("./utils/redact");
|
|
28
|
+
const workspace_sync_1 = require("./utils/workspace-sync");
|
|
29
|
+
const opencode_auth_1 = require("./utils/opencode-auth");
|
|
30
|
+
const opencode_auth_2 = __importDefault(require("./opencode-auth"));
|
|
31
|
+
const jwt_secret_1 = require("./utils/jwt-secret");
|
|
32
|
+
const runtime_paths_1 = require("./utils/runtime-paths");
|
|
33
|
+
const app = (0, express_1.default)();
|
|
34
|
+
const frontendDistDirectory = (0, runtime_paths_1.getFrontendDistDirectory)();
|
|
35
|
+
app.use(express_1.default.json());
|
|
36
|
+
// Logging middleware
|
|
37
|
+
// app.use((req, res, next) => {
|
|
38
|
+
// const start = Date.now();
|
|
39
|
+
// res.on('finish', async () => {
|
|
40
|
+
// const duration = Date.now() - start;
|
|
41
|
+
// const logData = {
|
|
42
|
+
// method: req.method,
|
|
43
|
+
// path: req.path,
|
|
44
|
+
// statusCode: res.statusCode,
|
|
45
|
+
// duration: `${duration}ms`,
|
|
46
|
+
// userAgent: req.get('user-agent'),
|
|
47
|
+
// ip: req.ip
|
|
48
|
+
// };
|
|
49
|
+
// logInfo(`HTTP Request: ${req.method} ${req.path} ${res.statusCode}`, { meta: logData });
|
|
50
|
+
// });
|
|
51
|
+
// next();
|
|
52
|
+
// });
|
|
53
|
+
// Mount auth routes directly (no sanitization for token responses)
|
|
54
|
+
app.use('/api/auth', auth_1.default);
|
|
55
|
+
const apiRouter = express_1.default.Router();
|
|
56
|
+
apiRouter.use((_req, res, next) => {
|
|
57
|
+
const originalJson = res.json.bind(res);
|
|
58
|
+
const originalSend = res.send.bind(res);
|
|
59
|
+
const shouldSkipSanitization = () => Boolean(res.locals.skipResponseSanitization);
|
|
60
|
+
const hasJsonContentType = () => {
|
|
61
|
+
const contentType = res.getHeader("Content-Type");
|
|
62
|
+
if (typeof contentType === "string") {
|
|
63
|
+
return contentType.includes("application/json");
|
|
64
|
+
}
|
|
65
|
+
if (Array.isArray(contentType)) {
|
|
66
|
+
return contentType.some((value) => value.includes("application/json"));
|
|
67
|
+
}
|
|
68
|
+
return false;
|
|
69
|
+
};
|
|
70
|
+
res.json = ((body) => {
|
|
71
|
+
if (shouldSkipSanitization()) {
|
|
72
|
+
return originalJson(body);
|
|
73
|
+
}
|
|
74
|
+
return originalJson((0, redact_1.sanitizeForClient)(body));
|
|
75
|
+
});
|
|
76
|
+
res.send = ((body) => {
|
|
77
|
+
if (shouldSkipSanitization()) {
|
|
78
|
+
return originalSend(body);
|
|
79
|
+
}
|
|
80
|
+
if (typeof body === "string") {
|
|
81
|
+
if (hasJsonContentType()) {
|
|
82
|
+
return originalSend(body);
|
|
83
|
+
}
|
|
84
|
+
return originalSend((0, redact_1.sanitizeStringContent)(body));
|
|
85
|
+
}
|
|
86
|
+
if (Buffer.isBuffer(body)) {
|
|
87
|
+
if (hasJsonContentType()) {
|
|
88
|
+
return originalSend(body);
|
|
89
|
+
}
|
|
90
|
+
return originalSend(Buffer.from((0, redact_1.sanitizeStringContent)(body.toString("utf-8")), "utf-8"));
|
|
91
|
+
}
|
|
92
|
+
return originalSend((0, redact_1.sanitizeForClient)(body));
|
|
93
|
+
});
|
|
94
|
+
next();
|
|
95
|
+
});
|
|
96
|
+
apiRouter.get("/", (_req, res) => {
|
|
97
|
+
// for healthcheck
|
|
98
|
+
res.send("Hello from the API!");
|
|
99
|
+
});
|
|
100
|
+
apiRouter.get("/workspace", (0, utils_1.apiHandler)(async (_req, res) => {
|
|
101
|
+
const workspaceDir = (0, workspace_sync_1.getWorkspaceDirFromEnv)();
|
|
102
|
+
res.json({ workspace_dir: workspaceDir });
|
|
103
|
+
}, false));
|
|
104
|
+
apiRouter.use('/workflows', workflows_1.default);
|
|
105
|
+
apiRouter.use('/chat', chat_1.default);
|
|
106
|
+
apiRouter.use('/skills', skills_1.default);
|
|
107
|
+
apiRouter.use('/users', users_1.default);
|
|
108
|
+
apiRouter.use('/opencode-auth', opencode_auth_2.default);
|
|
109
|
+
app.use('/api', apiRouter);
|
|
110
|
+
// Serve static assets (JS, CSS, etc.) with correct MIME types
|
|
111
|
+
app.use(express_1.default.static(frontendDistDirectory));
|
|
112
|
+
// SPA fallback: serve index.html for non-API routes (client-side routing)
|
|
113
|
+
app.get("*", (_req, res) => {
|
|
114
|
+
res.sendFile(path_1.default.join(frontendDistDirectory, "index.html"));
|
|
115
|
+
});
|
|
116
|
+
app.use(async (err, req, res, _) => {
|
|
117
|
+
let status = err.status || 500;
|
|
118
|
+
let doLogging = err.doLogging !== false;
|
|
119
|
+
if (status !== 404 && doLogging) {
|
|
120
|
+
(0, logging_1.logError)({ err, apiPath: req.path, apiMethod: req.method });
|
|
121
|
+
}
|
|
122
|
+
res.status(status).json({ message: err.message || 'Unknown error' });
|
|
123
|
+
});
|
|
124
|
+
let httpServer = null;
|
|
125
|
+
let isShuttingDown = false;
|
|
126
|
+
async function shutdown(exitCode) {
|
|
127
|
+
if (isShuttingDown) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
isShuttingDown = true;
|
|
131
|
+
(0, opencode_server_1.stopOpencodeServer)();
|
|
132
|
+
if (httpServer) {
|
|
133
|
+
await new Promise((resolve) => {
|
|
134
|
+
httpServer.close(() => resolve());
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
process.exit(exitCode);
|
|
138
|
+
}
|
|
139
|
+
async function bootstrap() {
|
|
140
|
+
await (0, workspace_sync_1.initializeWorkspaceDirectory)();
|
|
141
|
+
await (0, opencode_auth_1.initializeOpencodeAuthStorage)();
|
|
142
|
+
await (0, workspace_sync_1.ensureWorkspaceDatabase)();
|
|
143
|
+
await (0, jwt_secret_1.loadJwtSecret)();
|
|
144
|
+
await (0, opencode_server_1.startOpencodeServer)();
|
|
145
|
+
(0, cronjob_1.startCronJobs)();
|
|
146
|
+
const TEAMCOPILOT_HOST = (0, assert_1.assertEnv)("TEAMCOPILOT_HOST");
|
|
147
|
+
const TEAMCOPILOT_PORT = (0, assert_1.parseIntStrict)((0, assert_1.assertEnv)("TEAMCOPILOT_PORT"), "TEAMCOPILOT_PORT");
|
|
148
|
+
httpServer = app.listen(TEAMCOPILOT_PORT, TEAMCOPILOT_HOST, () => {
|
|
149
|
+
console.log(`Server running at http://${TEAMCOPILOT_HOST}:${TEAMCOPILOT_PORT}`);
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
process.on("SIGINT", () => {
|
|
153
|
+
void shutdown(0);
|
|
154
|
+
});
|
|
155
|
+
process.on("SIGTERM", () => {
|
|
156
|
+
void shutdown(0);
|
|
157
|
+
});
|
|
158
|
+
process.on("uncaughtException", (err) => {
|
|
159
|
+
console.error("Uncaught exception:", err);
|
|
160
|
+
void shutdown(1);
|
|
161
|
+
});
|
|
162
|
+
process.on("unhandledRejection", (reason) => {
|
|
163
|
+
console.error("Unhandled rejection:", reason);
|
|
164
|
+
void shutdown(1);
|
|
165
|
+
});
|
|
166
|
+
void bootstrap().catch((err) => {
|
|
167
|
+
console.error("Failed to start server:", err);
|
|
168
|
+
process.exit(1);
|
|
169
|
+
});
|
package/dist/logging.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.logError = logError;
|
|
4
|
+
const axios_1 = require("axios");
|
|
5
|
+
function logError({ err, apiPath, apiMethod, customMeta }) {
|
|
6
|
+
if (err instanceof axios_1.AxiosError) {
|
|
7
|
+
err = {
|
|
8
|
+
message: JSON.stringify({
|
|
9
|
+
url: err.config?.url,
|
|
10
|
+
method: err.config?.method,
|
|
11
|
+
data: err.response?.data || "Error when querying with axios"
|
|
12
|
+
}),
|
|
13
|
+
status: err.response?.status,
|
|
14
|
+
stack: err.stack
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
if (typeof err === "string") {
|
|
18
|
+
err = {
|
|
19
|
+
message: err
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const status = err.status || 500;
|
|
23
|
+
let message = err.message || "Unknown error";
|
|
24
|
+
if (typeof message !== "string") {
|
|
25
|
+
message = JSON.stringify(message);
|
|
26
|
+
}
|
|
27
|
+
const ourCodeStack = new Error("Our code stack").stack;
|
|
28
|
+
const meta = { status, stack: err.stack, ourCodeStack, apiPath, apiMethod, ...customMeta };
|
|
29
|
+
console.error(message, meta);
|
|
30
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const express_1 = __importDefault(require("express"));
|
|
7
|
+
const index_1 = require("../utils/index");
|
|
8
|
+
const opencode_auth_1 = require("../utils/opencode-auth");
|
|
9
|
+
const opencode_client_1 = require("../utils/opencode-client");
|
|
10
|
+
const router = express_1.default.Router({ mergeParams: true });
|
|
11
|
+
function getOpencodeBaseUrl() {
|
|
12
|
+
return `http://localhost:${(0, opencode_client_1.getOpencodePort)()}`;
|
|
13
|
+
}
|
|
14
|
+
async function opencodeRequest(input, init, errorMessagePrefix, status) {
|
|
15
|
+
const response = await fetch(input, init);
|
|
16
|
+
if (!response.ok) {
|
|
17
|
+
const errorMessage = await response.text();
|
|
18
|
+
throw {
|
|
19
|
+
status,
|
|
20
|
+
message: `${errorMessagePrefix}: ${errorMessage}`,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return response;
|
|
24
|
+
}
|
|
25
|
+
async function fetchProviderAuthMethods(providerId) {
|
|
26
|
+
const directory = encodeURIComponent((0, opencode_client_1.getWorkspaceDir)());
|
|
27
|
+
const response = await opencodeRequest(`${getOpencodeBaseUrl()}/provider/auth?directory=${directory}`, undefined, "Failed to fetch provider auth methods from opencode", 500);
|
|
28
|
+
const data = await response.json();
|
|
29
|
+
const methods = data[providerId] || [];
|
|
30
|
+
return methods.map((method, index) => ({
|
|
31
|
+
index,
|
|
32
|
+
type: method.type,
|
|
33
|
+
label: method.label,
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
router.get("/status", (0, index_1.apiHandler)(async (_req, res) => {
|
|
37
|
+
const providerId = (0, opencode_auth_1.getConfiguredModelProviderId)();
|
|
38
|
+
const model = process.env.OPENCODE_MODEL;
|
|
39
|
+
const methods = await fetchProviderAuthMethods(providerId);
|
|
40
|
+
const auth = await (0, opencode_auth_1.getRuntimeProviderAuth)(providerId);
|
|
41
|
+
res.json({
|
|
42
|
+
provider_id: providerId,
|
|
43
|
+
model,
|
|
44
|
+
has_credentials: Boolean(auth),
|
|
45
|
+
configured_auth_type: auth?.type,
|
|
46
|
+
methods,
|
|
47
|
+
});
|
|
48
|
+
}, true));
|
|
49
|
+
router.post("/api", (0, index_1.apiHandler)(async (req, res) => {
|
|
50
|
+
const providerId = (0, opencode_auth_1.getConfiguredModelProviderId)();
|
|
51
|
+
const key = req.body?.key;
|
|
52
|
+
if (typeof key !== "string" || key.length === 0) {
|
|
53
|
+
throw {
|
|
54
|
+
status: 400,
|
|
55
|
+
message: "key is required",
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
await (0, opencode_auth_1.setRuntimeProviderAuth)(providerId, {
|
|
59
|
+
type: "api",
|
|
60
|
+
key,
|
|
61
|
+
});
|
|
62
|
+
res.json({ success: true });
|
|
63
|
+
}, true));
|
|
64
|
+
router.post("/oauth/authorize", (0, index_1.apiHandler)(async (req, res) => {
|
|
65
|
+
const providerId = (0, opencode_auth_1.getConfiguredModelProviderId)();
|
|
66
|
+
const method = req.body?.method;
|
|
67
|
+
if (typeof method !== "number") {
|
|
68
|
+
throw {
|
|
69
|
+
status: 400,
|
|
70
|
+
message: "method is required",
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
const directory = encodeURIComponent((0, opencode_client_1.getWorkspaceDir)());
|
|
74
|
+
const response = await opencodeRequest(`${getOpencodeBaseUrl()}/provider/${encodeURIComponent(providerId)}/oauth/authorize?directory=${directory}`, {
|
|
75
|
+
method: "POST",
|
|
76
|
+
headers: {
|
|
77
|
+
"Content-Type": "application/json",
|
|
78
|
+
},
|
|
79
|
+
body: JSON.stringify({ method }),
|
|
80
|
+
}, "Failed to initiate OAuth flow", 400);
|
|
81
|
+
const data = await response.json();
|
|
82
|
+
if (!data) {
|
|
83
|
+
throw {
|
|
84
|
+
status: 400,
|
|
85
|
+
message: "Selected auth method is not OAuth",
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
res.json(data);
|
|
89
|
+
}, true));
|
|
90
|
+
router.post("/oauth/callback", (0, index_1.apiHandler)(async (req, res) => {
|
|
91
|
+
const providerId = (0, opencode_auth_1.getConfiguredModelProviderId)();
|
|
92
|
+
const method = req.body?.method;
|
|
93
|
+
const code = req.body?.code;
|
|
94
|
+
if (typeof method !== "number") {
|
|
95
|
+
throw {
|
|
96
|
+
status: 400,
|
|
97
|
+
message: "method is required",
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
if (code !== undefined && typeof code !== "string") {
|
|
101
|
+
throw {
|
|
102
|
+
status: 400,
|
|
103
|
+
message: "code must be a string",
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
const directory = encodeURIComponent((0, opencode_client_1.getWorkspaceDir)());
|
|
107
|
+
await opencodeRequest(`${getOpencodeBaseUrl()}/provider/${encodeURIComponent(providerId)}/oauth/callback?directory=${directory}`, {
|
|
108
|
+
method: "POST",
|
|
109
|
+
headers: {
|
|
110
|
+
"Content-Type": "application/json",
|
|
111
|
+
},
|
|
112
|
+
body: JSON.stringify({ method, code }),
|
|
113
|
+
}, "Failed to complete OAuth callback", 400);
|
|
114
|
+
if (!await (0, opencode_auth_1.getRuntimeProviderAuth)(providerId)) {
|
|
115
|
+
throw {
|
|
116
|
+
status: 400,
|
|
117
|
+
message: `OAuth callback completed but no credentials were stored for provider ${providerId}`,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
res.json({ success: true });
|
|
121
|
+
}, true));
|
|
122
|
+
exports.default = router;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.startOpencodeServer = startOpencodeServer;
|
|
7
|
+
exports.stopOpencodeServer = stopOpencodeServer;
|
|
8
|
+
const child_process_1 = require("child_process");
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const util_1 = require("util");
|
|
11
|
+
const assert_1 = require("./utils/assert");
|
|
12
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
13
|
+
let server = null;
|
|
14
|
+
function ensureLocalNodeBinInPath() {
|
|
15
|
+
const localBin = path_1.default.resolve(__dirname, "../node_modules/.bin");
|
|
16
|
+
const currentPath = process.env.PATH || "";
|
|
17
|
+
const entries = currentPath.split(":");
|
|
18
|
+
if (!entries.includes(localBin)) {
|
|
19
|
+
process.env.PATH = `${localBin}:${currentPath}`;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async function loadCreateOpencodeServer() {
|
|
23
|
+
ensureLocalNodeBinInPath();
|
|
24
|
+
const sdk = await import("@opencode-ai/sdk");
|
|
25
|
+
return sdk.createOpencodeServer;
|
|
26
|
+
}
|
|
27
|
+
async function killProcessOnPort(port) {
|
|
28
|
+
try {
|
|
29
|
+
const { stdout } = await execAsync(`lsof -ti:${port}`);
|
|
30
|
+
const pids = stdout.trim().split("\n").filter(Boolean);
|
|
31
|
+
for (const pid of pids) {
|
|
32
|
+
console.log(`Killing process ${pid} on port ${port}`);
|
|
33
|
+
await execAsync(`kill -9 ${pid}`);
|
|
34
|
+
}
|
|
35
|
+
// Give the OS a moment to release the port
|
|
36
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// No process found on port, or kill failed - that's fine
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async function startOpencodeServer() {
|
|
43
|
+
if (server) {
|
|
44
|
+
return server;
|
|
45
|
+
}
|
|
46
|
+
// Ensure plugins running inside opencode can resolve backend base URL from TEAMCOPILOT_PORT.
|
|
47
|
+
process.env.TEAMCOPILOT_PORT = (0, assert_1.assertEnv)("TEAMCOPILOT_PORT");
|
|
48
|
+
const createOpencodeServer = await loadCreateOpencodeServer();
|
|
49
|
+
const port = (0, assert_1.parseIntStrict)((0, assert_1.assertEnv)("OPENCODE_PORT"), "OPENCODE_PORT");
|
|
50
|
+
const model = (0, assert_1.assertEnv)("OPENCODE_MODEL");
|
|
51
|
+
if (!model.includes("/")) {
|
|
52
|
+
throw new Error("OPENCODE_MODEL must be in the format of <model_owner>/<model_name>");
|
|
53
|
+
}
|
|
54
|
+
const fullModel = model;
|
|
55
|
+
const startServer = async () => {
|
|
56
|
+
return await createOpencodeServer({
|
|
57
|
+
hostname: "127.0.0.1",
|
|
58
|
+
port,
|
|
59
|
+
config: {
|
|
60
|
+
model: fullModel,
|
|
61
|
+
autoupdate: false,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
try {
|
|
66
|
+
server = await startServer();
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
console.log(`Failed to start opencode server on port ${port}, attempting to kill existing process and retry...`);
|
|
70
|
+
await killProcessOnPort(port);
|
|
71
|
+
server = await startServer();
|
|
72
|
+
}
|
|
73
|
+
(0, assert_1.assertCondition)(server, "Failed to initialize opencode server");
|
|
74
|
+
console.log(`Opencode server running at ${server.url}`);
|
|
75
|
+
return server;
|
|
76
|
+
}
|
|
77
|
+
function stopOpencodeServer() {
|
|
78
|
+
if (!server) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
server.close();
|
|
83
|
+
console.log("Opencode server closed.");
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
console.error("Error closing opencode server:", err);
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
server = null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const client_1 = require("@prisma/client");
|
|
4
|
+
const workspace_sync_1 = require("../utils/workspace-sync");
|
|
5
|
+
let prismaClient = null;
|
|
6
|
+
function createPrismaClient() {
|
|
7
|
+
const client = new client_1.PrismaClient({
|
|
8
|
+
datasourceUrl: (0, workspace_sync_1.getWorkspaceDatabaseUrl)(),
|
|
9
|
+
transactionOptions: {
|
|
10
|
+
timeout: 60000, // 60 sec
|
|
11
|
+
maxWait: 60000 // 60 sec
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
// Enable WAL mode for better SQLite concurrency (allows reads during writes)
|
|
15
|
+
client.$executeRawUnsafe('PRAGMA journal_mode = WAL;').catch(() => { });
|
|
16
|
+
return client;
|
|
17
|
+
}
|
|
18
|
+
function getPrismaClient() {
|
|
19
|
+
if (!prismaClient) {
|
|
20
|
+
prismaClient = createPrismaClient();
|
|
21
|
+
}
|
|
22
|
+
return prismaClient;
|
|
23
|
+
}
|
|
24
|
+
const prisma = new Proxy({}, {
|
|
25
|
+
get(_target, property, receiver) {
|
|
26
|
+
const client = getPrismaClient();
|
|
27
|
+
const value = Reflect.get(client, property, receiver);
|
|
28
|
+
if (typeof value === "function") {
|
|
29
|
+
return value.bind(client);
|
|
30
|
+
}
|
|
31
|
+
return value;
|
|
32
|
+
},
|
|
33
|
+
set(_target, property, value) {
|
|
34
|
+
const client = getPrismaClient();
|
|
35
|
+
return Reflect.set(client, property, value);
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
exports.default = prisma;
|