machineconfig 6.1__py3-none-any.whl → 6.22__py3-none-any.whl

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.

Potentially problematic release.


This version of machineconfig might be problematic. Click here for more details.

@@ -65,16 +65,16 @@ def get_securely_shared_file(url: Optional[str] = None, folder: Optional[str] =
65
65
  def main(
66
66
  source: Annotated[str, typer.Argument(help="📂 file/folder path to be taken from here.")],
67
67
  target: Annotated[str, typer.Argument(help="🎯 file/folder path to be be sent to here.")],
68
- overwrite: Annotated[bool, typer.Option(help="✍️ Overwrite existing file.")] = ArgsDefaults.overwrite,
69
- share: Annotated[bool, typer.Option(help="🔗 Share file / directory")] = ArgsDefaults.share,
70
- rel2home: Annotated[bool, typer.Option(help="🏠 Relative to `myhome` folder")] = ArgsDefaults.rel2home,
71
- root: Annotated[Optional[str], typer.Option(help="🌳 Remote root. None is the default, unless rel2home is raied, making the default `myhome`.")] = ArgsDefaults.root,
72
- key: Annotated[Optional[str], typer.Option(help="🔑 Key for encryption")] = ArgsDefaults.key,
73
- pwd: Annotated[Optional[str], typer.Option(help="🔒 Password for encryption")] = ArgsDefaults.pwd,
74
- encrypt: Annotated[bool, typer.Option(help="🔐 Encrypt before sending.")] = ArgsDefaults.encrypt,
68
+ overwrite: Annotated[bool, typer.Option("--overwrite", "-o", help="✍️ Overwrite existing file.")] = ArgsDefaults.overwrite,
69
+ share: Annotated[bool, typer.Option("--share", "-s", help="🔗 Share file / directory")] = ArgsDefaults.share,
70
+ rel2home: Annotated[bool, typer.Option("--relative2home", "-r", help="🏠 Relative to `myhome` folder")] = ArgsDefaults.rel2home,
71
+ root: Annotated[Optional[str], typer.Option("--root", "-R", help="🌳 Remote root. None is the default, unless rel2home is raied, making the default `myhome`.")] = ArgsDefaults.root,
72
+ key: Annotated[Optional[str], typer.Option("--key", "-k", help="🔑 Key for encryption")] = ArgsDefaults.key,
73
+ pwd: Annotated[Optional[str], typer.Option("--password", "-p", help="🔒 Password for encryption")] = ArgsDefaults.pwd,
74
+ encrypt: Annotated[bool, typer.Option("--encrypt", "-e", help="🔐 Encrypt before sending.")] = ArgsDefaults.encrypt,
75
75
  zip_: Annotated[bool, typer.Option("--zip", "-z", help="📦 unzip after receiving.")] = ArgsDefaults.zip_,
76
- os_specific: Annotated[bool, typer.Option(help="💻 choose path specific for this OS.")] = ArgsDefaults.os_specific,
77
- config: Annotated[Optional[str], typer.Option(help="⚙️ path to cloud.json file.")] = None,
76
+ os_specific: Annotated[bool, typer.Option("--os-specific", "-O", help="💻 choose path specific for this OS.")] = ArgsDefaults.os_specific,
77
+ config: Annotated[Optional[str], typer.Option("--config", "-c", help="⚙️ path to cloud.json file.")] = None,
78
78
  ) -> None:
79
79
  """📤 Upload or 📥 Download files/folders to/from cloud storage services like Google Drive, Dropbox, OneDrive, etc."""
80
80
  console.print(Panel("☁️ Cloud Copy Utility", title="[bold blue]Cloud Copy[/bold blue]", border_style="blue", width=152))
@@ -23,11 +23,10 @@ def update(copy_assets: Annotated[bool, typer.Option(..., "--copy-assets", "-c",
23
23
  import platform
24
24
  if platform.system() == "Windows":
25
25
  from machineconfig.utils.code import run_shell_script_after_exit
26
- if copy_assets:
27
- code += """
28
- devops self copy-assets both
29
- """
30
26
  run_shell_script_after_exit(code)
27
+ from machineconfig.profile.create_helper import copy_assets_to_machine
28
+ copy_assets_to_machine(which="scripts")
29
+ copy_assets_to_machine(which="settings")
31
30
  else:
32
31
  from machineconfig.utils.code import run_shell_script
33
32
  run_shell_script(code)
@@ -1,29 +1,14 @@
1
- #Requires -Version 5.1
1
+ # Set error action preference to stop on error, like set -e
2
+ $ErrorActionPreference = "Stop"
2
3
 
3
4
  $JOB_NAME = "outpatient_mapping"
4
- $REPO_ROOT = "$HOME/code/ machineconfig"
5
- $CONTEXT_PATH = "$REPO_ROOT/src/machineconfig/scripts/python/fire_jobs.py"
6
- $PROMPT_PATH = "$REPO_ROOT/src/machineconfig/scripts/python/helpers_fire/prompt.txt"
7
-
5
+ $REPO_ROOT = "$HOME/code/work/winter_planning/"
6
+ $CONTEXT_PATH = "$REPO_ROOT/data/outpatient_mapping/op_services.csv"
7
+ $PROMPT_PATH = "$REPO_ROOT/data/outpatient_mapping/prompt"
8
8
  $AGENTS_DIR = "$REPO_ROOT/.ai/agents/$JOB_NAME"
9
- $LAYOUT_PATH_UNBALANCED = "$REPO_ROOT/.ai/agents/$JOB_NAME/layout_unbalanced.json"
10
-
11
- agents create `
12
- --context-path "$CONTEXT_PATH" `
13
- --tasks-per-prompt 1 `
14
- --machine docker `
15
- --agent crush `
16
- --model "zai/glm-4.6" `
17
- --provider openrouter `
18
- --separator 'def ' `
19
- --prompt-path "$PROMPT_PATH" `
20
- --output-path "$LAYOUT_PATH_UNBALANCED" `
21
- --agents-dir "$AGENTS_DIR"
22
-
23
- # $LAYOUT_BALANCED_PATH = "$REPO_ROOT/.ai/agents/$JOB_NAME/layout_balanced.json"
24
- # sessions balance-load $LAYOUT_PATH --max-thresh 6 --breaking-method moreLayouts --thresh-type number --output-path $LAYOUT_BALANCED_PATH
25
- # sessions run $LAYOUT_BALANCED_PATH --kill-upon-completion
26
9
 
27
- sessions run $LAYOUT_PATH_UNBALANCED
10
+ agents create --agents crush --host docker --model x-ai/grok-4-fast:free --provider openrouter --context-path $CONTEXT_PATH --prompt-path $PROMPT_PATH --job-name $JOB_NAME --agents-dir $AGENTS_DIR
11
+ sessions balance-load "$AGENTS_DIR/layout.json" --max-thresh 6 --breaking-method moreLayouts --thresh-type number --output-path "$AGENTS_DIR/layout_balanced.json"
12
+ sessions run "$AGENTS_DIR/layout_balanced.json" --kill-upon-completion
28
13
 
29
- # agents collect $AGENTS_DIR "$REPO_ROOT/.ai/agents/$JOB_NAME/collected.txt"
14
+ # agents collect $AGENTS_DIR "$REPO_ROOT/.ai/agents/$JOB_NAME/collected.txt"
@@ -3,30 +3,13 @@
3
3
  # set -e # Exit immediately if a command exits with a non-zero status.
4
4
 
5
5
  JOB_NAME="outpatient_mapping"
6
- REPO_ROOT="$HOME/code/ machineconfig"
7
- CONTEXT_PATH="$REPO_ROOT/src/machineconfig/scripts/python/fire_jobs.py"
8
- PROMPT_PATH="$REPO_ROOT/src/machineconfig/scripts/python/helpers_fire/prompt.txt"
9
-
6
+ REPO_ROOT="$HOME/code/work/winter_planning/"
7
+ CONTEXT_PATH="$REPO_ROOT/data/outpatient_mapping/op_services.csv"
8
+ PROMPT_PATH="$REPO_ROOT/data/outpatient_mapping/prompt"
10
9
  AGENTS_DIR="$REPO_ROOT/.ai/agents/$JOB_NAME"
11
- LAYOUT_PATH_UNBALANCED="$REPO_ROOT/.ai/agents/$JOB_NAME/layout_unbalanced.json"
12
-
13
- # agents make-todo --output-path $CONTEXT_PATH
14
- ag create \
15
- --context-path "$CONTEXT_PATH" \
16
- --tasks-per-prompt 1 \
17
- --machine docker \
18
- --agent crush \
19
- --model "zai/glm-4.6" \
20
- --provider openrouter \
21
- --separator 'def ' \
22
- --prompt-path "$PROMPT_PATH" \
23
- --output-path "$LAYOUT_PATH_UNBALANCED" \
24
- --agents-dir "$AGENTS_DIR"
25
-
26
- # LAYOUT_BALANCED_PATH="$REPO_ROOT/.ai/agents/$JOB_NAME/layout_balanced.json"
27
- # sessions balance-load $LAYOUT_PATH --max-thresh 6 --breaking-method moreLayouts --thresh-type number --output-path $LAYOUT_BALANCED_PATH
28
- # sessions run $LAYOUT_BALANCED_PATH --kill-upon-completion
10
+ agents create --agents crush --host docker --model x-ai/grok-4-fast:free --provider openrouter --context-path $CONTEXT_PATH --prompt-path $PROMPT_PATH --job-name $JOB_NAME --agents-dir $AGENTS_DIR
11
+ sessions balance-load "$AGENTS_DIR/layout.json" --max-thresh 6 --breaking-method moreLayouts --thresh-type number --output-path "$AGENTS_DIR/layout_balanced.json"
12
+ sessions run "$AGENTS_DIR/layout_balanced.json" --kill-upon-completion
29
13
 
30
- ses run $LAYOUT_PATH_UNBALANCED
31
14
 
32
15
  # agents collect $AGENTS_DIR "$REPO_ROOT/.ai/agents/$JOB_NAME/collected.txt"
@@ -8,7 +8,7 @@ from git.exc import GitCommandError
8
8
  from rich import print as pprint
9
9
  from rich.progress import BarColumn, MofNCompleteColumn, Progress, SpinnerColumn, TextColumn, TimeElapsedColumn
10
10
 
11
- from machineconfig.utils.schemas.repos.repos_types import RepoRecordDict, RepoRecordFile, RepoRemote
11
+ from machineconfig.utils.schemas.repos.repos_types import RepoRecordDict, RepoRemote
12
12
  from machineconfig.utils.io import read_json
13
13
 
14
14
 
@@ -95,8 +95,7 @@ def clone_single_repo(repo_spec: RepoRecordDict, preferred_remote: Optional[str]
95
95
 
96
96
 
97
97
  def clone_repos(spec_path: Path, preferred_remote: Optional[str], checkout_branch_flag: bool, checkout_commit_flag: bool) -> list[tuple[CloneStatus, str]]:
98
- data = cast(RepoRecordFile, read_json(path=spec_path))
99
- repos = data["repos"]
98
+ repos = cast(list[RepoRecordDict], read_json(path=spec_path))
100
99
  results: list[tuple[CloneStatus, str]] = []
101
100
  with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}"), BarColumn(), MofNCompleteColumn(), TimeElapsedColumn()) as progress:
102
101
  task_id = progress.add_task("Processing repositories...", total=len(repos))
@@ -71,7 +71,7 @@ def find_layout_file(layout_path: str, ) -> Path:
71
71
  def run(ctx: typer.Context,
72
72
  layout_path: Annotated[Optional[str], typer.Argument(..., help="Path to the layout.json file")] = None,
73
73
  max_tabs: Annotated[int, typer.Option(..., help="A Sanity checker that throws an error if any layout exceeds the maximum number of tabs to launch.")] = 10,
74
- max_layouts: Annotated[int, typer.Option(..., help="A Sanity checker that throws an error if the total number of layouts exceeds this number.")] = 10,
74
+ max_layouts: Annotated[int, typer.Option(..., help="A Sanity checker that throws an error if the total number of *parallel layouts exceeds this number.")] = 10,
75
75
  sleep_inbetween: Annotated[float, typer.Option(..., help="Sleep time in seconds between launching layouts")] = 1.0,
76
76
  monitor: Annotated[bool, typer.Option(..., "--monitor", "-m", help="Monitor the layout sessions for completion")] = False,
77
77
  parallel: Annotated[bool, typer.Option(..., "--parallel", "-p", help="Launch multiple layouts in parallel")] = False,
@@ -89,7 +89,7 @@ def run(ctx: typer.Context,
89
89
  layouts_selected = select_layout(layouts_json_file=layout_path_resolved, selected_layouts_names=choose.split(",") if choose else None, select_interactively=choose_interactively)
90
90
 
91
91
  # ============= Basic sanity checks =============
92
- if len(layouts_selected) > max_layouts:
92
+ if parallel and len(layouts_selected) > max_layouts:
93
93
  raise ValueError(f"Number of layouts {len(layouts_selected)} exceeds the maximum allowed {max_layouts}. Please adjust your layout file.")
94
94
  for a_layout in layouts_selected:
95
95
  if len(a_layout["layoutTabs"]) > max_tabs:
@@ -98,7 +98,6 @@ def run(ctx: typer.Context,
98
98
  if not confirm:
99
99
  typer.echo("Aborting launch.")
100
100
  raise typer.Exit(0)
101
-
102
101
  import time
103
102
  import platform
104
103
  if platform.system() == "Linux" or platform.system() == "Darwin":
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machineconfig
3
- Version: 6.1
3
+ Version: 6.22
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -128,7 +128,7 @@ machineconfig/scripts/python/entry.py,sha256=Az7dK1eXHGW5l46Yg10Cd88VChCdhvLAzO3
128
128
  machineconfig/scripts/python/fire_jobs.py,sha256=O5DrckUGLxGblOcLf_iXU31pmCSpTg-c0hQZxQKD1os,13591
129
129
  machineconfig/scripts/python/ftpx.py,sha256=UBDP6IIfWkaML1uZT1FrfGUUy_Of5LI82IdqEzo05_U,9760
130
130
  machineconfig/scripts/python/interactive.py,sha256=8HbT9OaZ3lhoIYghIkeE6bI5TZ0RPlL0LwEszK6oPNw,11790
131
- machineconfig/scripts/python/sessions.py,sha256=CfXeEAABFigrYbzJgjsE5NX_Y7Lf3wji0PFmSxcYoQ8,9756
131
+ machineconfig/scripts/python/sessions.py,sha256=l0NhO8kLtpDHdvNTlZ-Stt0VqARZqKUqiJlKvGIqCC0,9778
132
132
  machineconfig/scripts/python/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
133
133
  machineconfig/scripts/python/ai/generate_files.py,sha256=VfjKdwgF8O6E4oiRtfWNliibLmmwGe7f9ld6wpOsXTw,14498
134
134
  machineconfig/scripts/python/ai/initai.py,sha256=9SZtWOcRuwk8ZU3wHOfPzjInERD79ZTYFY8tVACgza4,2260
@@ -160,7 +160,7 @@ machineconfig/scripts/python/ai/solutions/kilocode/privacy.md,sha256=oKOXnfFOdUu
160
160
  machineconfig/scripts/python/ai/solutions/opencode/opencode.json,sha256=nahHKRw1dNzkUCS_vCX_fy2TisRtfg8DXH-D4N1iUVU,99
161
161
  machineconfig/scripts/python/ai/solutions/opencode/opencode.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
162
162
  machineconfig/scripts/python/cloud_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
163
- machineconfig/scripts/python/cloud_helpers/cloud_copy.py,sha256=7w0bNMPmSlsoYPCaicja7c2uEwxpj3pyA_ZaPqvmsgc,8517
163
+ machineconfig/scripts/python/cloud_helpers/cloud_copy.py,sha256=qh96_QWxsaRPpgLDZaMPIUyHfkr1dTMb2bwvalY_kiA,8691
164
164
  machineconfig/scripts/python/cloud_helpers/cloud_helpers.py,sha256=GA-bxXouUmknk9fyQAsPT-Xl3RG9-yBed71a2tu9Pig,4914
165
165
  machineconfig/scripts/python/cloud_helpers/cloud_mount.py,sha256=DEZHwOgFcAVoI-NrBflFLbAjijOYZYq_D5M8xJQdtSQ,6487
166
166
  machineconfig/scripts/python/cloud_helpers/cloud_sync.py,sha256=-xRPOF2S4_Q5QoNOmp_lJ_wWGNyeztEjn0o57V31ZjI,3447
@@ -178,7 +178,7 @@ machineconfig/scripts/python/devops_helpers/cli_config_dotfile.py,sha256=rjTys4F
178
178
  machineconfig/scripts/python/devops_helpers/cli_data.py,sha256=kvJ7g2CccjjXIhCwdu_Vlif8JHC0qUoLjuGcTSqT-IU,514
179
179
  machineconfig/scripts/python/devops_helpers/cli_nw.py,sha256=nI_zmcmUvijVeXIWT2dN5onoy3ou-lub1cL-SJImmDA,4125
180
180
  machineconfig/scripts/python/devops_helpers/cli_repos.py,sha256=GEsW0ykgu8mtoiXurOSjOlbY_Xrngy_aeBq4eRZY8ts,12335
181
- machineconfig/scripts/python/devops_helpers/cli_self.py,sha256=oBci1GDFyA43ZHu04VpjuBq6MnfCIOKpp5dK7-NxRdw,5638
181
+ machineconfig/scripts/python/devops_helpers/cli_self.py,sha256=PCTAOX5K4WBFWQ_ZRcLKyyHpsPH93Ou4RY56Cp1Xu_U,5733
182
182
  machineconfig/scripts/python/devops_helpers/cli_share_server.py,sha256=q9pFJ6AxPuygMr3onMNOKEuuQHbVE_6Qoyo7xRT5FX0,4196
183
183
  machineconfig/scripts/python/devops_helpers/cli_terminal.py,sha256=k_PzXaiGyE0vXr0Ii1XcJz2A7UvyPJrR31TRWt4RKRI,6019
184
184
  machineconfig/scripts/python/devops_helpers/devops_backup_retrieve.py,sha256=nK47Rc7gQuDCnkk6_sW1y82gBnDJ9TdHU8XwMPFBK9c,5591
@@ -204,8 +204,8 @@ machineconfig/scripts/python/helpers_fire/fire_agents_helper_types.py,sha256=TUz
204
204
  machineconfig/scripts/python/helpers_fire/fire_agents_load_balancer.py,sha256=mpqx3uaQdBXYieuvhdK-qsvLepf9oIMo3pwPj9mSEDI,1079
205
205
  machineconfig/scripts/python/helpers_fire/helpers4.py,sha256=iKR5vVJygaDIpFXhcdma9jOpyxKtUhmqcmalFxJmY0w,4749
206
206
  machineconfig/scripts/python/helpers_fire/prompt.txt,sha256=Ni6r-Dh0Ez2XwfOZl3MOMDhfn6BJ2z4IdK3wFvA3c_o,116
207
- machineconfig/scripts/python/helpers_fire/template.ps1,sha256=NWkYlM4_l9eT52lS9NdOxmEn548gyy-bl1Q3AU3YKxY,1085
208
- machineconfig/scripts/python/helpers_fire/template.sh,sha256=Pzmjzf7TTTkUDiEp3rMky0QesF8qHdS4gvLzbzfyKwI,1163
207
+ machineconfig/scripts/python/helpers_fire/template.ps1,sha256=9F7h9NMIJisunMIii2wETpgonQmiGLHLHfWg9k_QWKo,859
208
+ machineconfig/scripts/python/helpers_fire/template.sh,sha256=rOND8s0-MuymFMn6lUspa0SkDikQkKlnJRl2Kyo57Ho,837
209
209
  machineconfig/scripts/python/helpers_fire/agentic_frameworks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
210
210
  machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_crush.json,sha256=YGuJF-qlMjhICPf0QnNfQlGNPsYrJJDlNcgmes0TFhM,252
211
211
  machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_crush.py,sha256=NRcnjVu4-_6UqWdeRH4A2g79QIAOwnqVtiqOwn7qzlE,1614
@@ -238,7 +238,7 @@ machineconfig/scripts/python/nw/ssh_debug_windows.py,sha256=2prJs3PMsoAUu5LlZhHI
238
238
  machineconfig/scripts/python/nw/wifi_conn.py,sha256=4GdLhgma9GRmZ6OFg3oxOX-qY3sr45njPckozlpM_A0,15566
239
239
  machineconfig/scripts/python/nw/wsl_windows_transfer.py,sha256=1ab9l-8MtAxofW5nGH9G2-BjlszaiLETu6WBECcNNhA,3546
240
240
  machineconfig/scripts/python/repos_helpers/action.py,sha256=pl0U53FAGoH2yk-CGNIy3aggImXY5ZVz28-XVFHDvfA,14862
241
- machineconfig/scripts/python/repos_helpers/clone.py,sha256=9vGb9NCXT0lkerPzOJjmFfhU8LSzE-_1LDvjkhgnal0,5461
241
+ machineconfig/scripts/python/repos_helpers/clone.py,sha256=5Dm6xWFWl6BZlx-l6fRbYYNsIktLntG090D7NM2Hs0M,5426
242
242
  machineconfig/scripts/python/repos_helpers/count_lines.py,sha256=Q5c7b-DxvTlQmljoic7niTuiAVyFlwYvkVQ7uRJHiTo,16009
243
243
  machineconfig/scripts/python/repos_helpers/count_lines_frontend.py,sha256=KkkecMNXssfwBK9nLEXZgilq_DME1ah325MTRV6-z2c,607
244
244
  machineconfig/scripts/python/repos_helpers/entrypoint.py,sha256=UagEar85QCAXX7oOqJjDJp2Vds5UQxehYPmckL_S0oI,2836
@@ -421,8 +421,8 @@ machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoS
421
421
  machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
422
422
  machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
423
423
  machineconfig/utils/ssh_utils/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
424
- machineconfig-6.1.dist-info/METADATA,sha256=kXGOmMpW4eD3gRmpLwh3No6nfJ_xPOjQsHZHky-bZJU,3011
425
- machineconfig-6.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
426
- machineconfig-6.1.dist-info/entry_points.txt,sha256=M0jwN_brZdXWhmNVeXLvdKxfkv8WhhXFZYcuKBA9qnk,418
427
- machineconfig-6.1.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
428
- machineconfig-6.1.dist-info/RECORD,,
424
+ machineconfig-6.22.dist-info/METADATA,sha256=HnJRINSB6YlvkKADJB35sH3yLmc0LvKk8ZCgfbtKFGY,3012
425
+ machineconfig-6.22.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
426
+ machineconfig-6.22.dist-info/entry_points.txt,sha256=M0jwN_brZdXWhmNVeXLvdKxfkv8WhhXFZYcuKBA9qnk,418
427
+ machineconfig-6.22.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
428
+ machineconfig-6.22.dist-info/RECORD,,