nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix

ghidra, ghidra-bin: 11.3.2 -> 11.4.2

+109 -82
+35 -45
pkgs/tools/security/ghidra/0001-Use-protobuf-gradle-plugin.patch
··· 1 - From be4c852769e260e3a9b516bb5626a6a6a68a2cd3 Mon Sep 17 00:00:00 2001 2 - From: roblabla <unfiltered@roblab.la> 3 - Date: Wed, 31 Jan 2024 13:19:55 +0100 4 - Subject: [PATCH] Use com.google.protobuf:protobuf-gradle-plugin 5 - 6 - --- 7 - Ghidra/Debug/Debugger-isf/build.gradle | 8 +- 8 - Ghidra/Debug/Debugger-rmi-trace/build.gradle | 16 ++-- 9 - build.gradle | 6 ++ 10 - gradle/hasProtobuf.gradle | 94 -------------------- 11 - 4 files changed, 22 insertions(+), 102 deletions(-) 12 - delete mode 100644 gradle/hasProtobuf.gradle 13 - 14 1 diff --git a/Ghidra/Debug/Debugger-isf/build.gradle b/Ghidra/Debug/Debugger-isf/build.gradle 15 - index f6c8464405..396b52d188 100644 2 + index 2db94ed67e..925f394cf0 100644 16 3 --- a/Ghidra/Debug/Debugger-isf/build.gradle 17 4 +++ b/Ghidra/Debug/Debugger-isf/build.gradle 18 5 @@ -18,11 +18,17 @@ apply from: "${rootProject.projectDir}/gradle/javaProject.gradle" ··· 19 32 +} 20 33 + 21 34 dependencies { 22 - api project(':Framework-AsyncComm') 23 35 api project(':ProposedUtils') 36 + } 24 37 diff --git a/Ghidra/Debug/Debugger-rmi-trace/build.gradle b/Ghidra/Debug/Debugger-rmi-trace/build.gradle 25 - index 8b6589f035..05da5a7a7e 100644 38 + index 4fa3b9a539..2663aeaeb0 100644 26 39 --- a/Ghidra/Debug/Debugger-rmi-trace/build.gradle 27 40 +++ b/Ghidra/Debug/Debugger-rmi-trace/build.gradle 28 41 @@ -19,12 +19,17 @@ apply from: "${rootProject.projectDir}/gradle/helpProject.gradle" ··· 43 56 +} 44 57 + 45 58 dependencies { 59 + api project(':ProposedUtils') 46 60 api project(':Pty') 47 - api project(':Debugger') 48 - @@ -44,12 +49,9 @@ task generateProtoPy { 49 - ext.outdir = file("build/generated/source/proto/main/py") 50 - outputs.dir(outdir) 51 - inputs.files(src) 61 + @@ -37,13 +42,10 @@ dependencies { 62 + } 63 + 64 + task configureGenerateProtoPy { 52 65 - dependsOn(configurations.protocArtifact) 53 66 + dependsOn(protobuf.generateProtoTasks.all()) 54 - doLast { 67 + 68 + - doLast { 55 69 - def exe = configurations.protocArtifact.first() 56 70 - if (!isCurrentWindows()) { 57 71 - exe.setExecutable(true) 58 72 - } 73 + + doLast { 59 74 + def exe = protobuf.tools.protoc.path 60 - exec { 61 - commandLine exe, "--python_out=$outdir", "-I$srcdir" 62 - args src 75 + generateProtoPy.commandLine exe 76 + generateProtoPy.args "--python_out=${generateProtoPy.outdir}" 77 + generateProtoPy.args "--pyi_out=${generateProtoPy.stubsOutdir}" 63 78 diff --git a/build.gradle b/build.gradle 64 - index 2d75307a08..aa8f1d7604 100644 79 + index 159eb7dd7b..ef4add1ad8 100644 65 80 --- a/build.gradle 66 81 +++ b/build.gradle 67 82 @@ -80,6 +80,12 @@ if (flatRepo.isDirectory()) { ··· 81 92 else { 82 93 diff --git a/gradle/hasProtobuf.gradle b/gradle/hasProtobuf.gradle 83 94 deleted file mode 100644 84 - index 23b4ce74bb..0000000000 95 + index a8c176bcbe..0000000000 85 96 --- a/gradle/hasProtobuf.gradle 86 97 +++ /dev/null 87 - @@ -1,94 +0,0 @@ 98 + @@ -1,98 +0,0 @@ 88 99 -/* ### 89 100 - * IP: GHIDRA 90 101 - * 91 102 - * Licensed under the Apache License, Version 2.0 (the "License"); 92 103 - * you may not use this file except in compliance with the License. 93 104 - * You may obtain a copy of the License at 94 - - * 105 + - * 95 106 - * http://www.apache.org/licenses/LICENSE-2.0 96 - - * 107 + - * 97 108 - * Unless required by applicable law or agreed to in writing, software 98 109 - * distributed under the License is distributed on an "AS IS" BASIS, 99 110 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ··· 146 157 - } 147 158 -}*/ 148 159 - 149 - -task generateProto { 160 + -task configureGenerateProto { 161 + - dependsOn(configurations.protocArtifact) 162 + - 163 + - doLast { 164 + - def exe = configurations.protocArtifact.first() 165 + - if (!isCurrentWindows()) { 166 + - exe.setExecutable(true) 167 + - } 168 + - generateProto.commandLine exe, "--java_out=${generateProto.outdir}", "-I${generateProto.srcdir}" 169 + - generateProto.args generateProto.src 170 + - } 171 + -} 172 + - 173 + -// Can't use providers.exec, or else we see no output 174 + -task generateProto(type:Exec) { 175 + - dependsOn(configureGenerateProto) 150 176 - ext.srcdir = file("src/main/proto") 151 177 - ext.src = fileTree(srcdir) { 152 178 - include "**/*.proto" ··· 169 165 - ext.outdir = file("build/generated/source/proto/main/java") 170 166 - outputs.dir(outdir) 171 167 - inputs.files(src) 172 - - dependsOn(configurations.protocArtifact) 173 - - doLast { 174 - - def exe = configurations.protocArtifact.first() 175 - - if (!isCurrentWindows()) { 176 - - exe.setExecutable(true) 177 - - } 178 - - exec { 179 - - commandLine exe, "--java_out=$outdir", "-I$srcdir" 180 - - args src 181 - - } 182 - - } 183 168 -} 184 169 - 185 170 -tasks.compileJava.dependsOn(tasks.generateProto) ··· 183 190 - } 184 191 -} 185 192 -zipSourceSubproject.dependsOn generateProto 186 - -- 187 - 2.47.0 188 -
+2 -2
pkgs/tools/security/ghidra/build.nix
··· 20 20 let 21 21 pkg_path = "$out/lib/ghidra"; 22 22 pname = "ghidra"; 23 - version = "11.3.2"; 23 + version = "11.4.2"; 24 24 25 25 isMacArm64 = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64; 26 26 ··· 30 30 owner = "NationalSecurityAgency"; 31 31 repo = "Ghidra"; 32 32 rev = "Ghidra_${version}_build"; 33 - hash = "sha256-EvIOC/VIUaEl7eneVzgEt2fhLSP9DaawMAutk4ouFp8="; 33 + hash = "sha256-/veSp2WuGOF0cYwUC4QFJD6kaMae5NuKrQ5Au4LjDe8="; 34 34 # populate values that require us to use git. By doing this in postFetch we 35 35 # can delete .git afterwards and maintain better reproducibility of the src. 36 36 leaveDotGit = true;
+3 -4
pkgs/tools/security/ghidra/default.nix
··· 28 28 in 29 29 stdenv.mkDerivation rec { 30 30 pname = "ghidra"; 31 - version = "11.3.2"; 32 - versiondate = "20250415"; 33 - 31 + version = "11.4.2"; 32 + versiondate = "20250826"; 34 33 src = fetchzip { 35 34 url = "https://github.com/NationalSecurityAgency/ghidra/releases/download/Ghidra_${version}_build/ghidra_${version}_PUBLIC_${versiondate}.zip"; 36 - hash = "sha256-97L3BueekbZfFAdiLX1DHlVSzNyspu4exafpFVraMWE="; 35 + hash = "sha256-5illpD+kWZfwtN8QpSJFcnsTrOPpvll3zNXR5r5q7jA="; 37 36 }; 38 37 39 38 nativeBuildInputs = [
+69 -31
pkgs/tools/security/ghidra/deps.json
··· 99 99 } 100 100 }, 101 101 "https://ftp.postgresql.org": { 102 - "pub/source/v15.10/postgresql-15.10": { 103 - "tar.gz": "sha256-FzNmYFJZqD3BicQyf/TDclSv7WW0+GbL2KXvLqRJ6PM=" 102 + "pub/source/v15.13/postgresql-15.13": { 103 + "tar.gz": "sha256-r9wisKblvse2VyN1a5DUTqkR5hsvewHE3FUkq4E7TYk=" 104 104 } 105 105 }, 106 - "https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_11.3.2": { 106 + "https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_11.4.2": { 107 + "Debugger/dbgmodel": { 108 + "tlb": "sha256-jPXzouuBFgqjSQVqXKTCxyaxtumL8wl81BNRRxYzQ8c=" 109 + }, 107 110 "FunctionID/vs2012_x64": { 108 111 "fidb": "sha256-1OmKs/eQuDF5MhhDC7oNiySl+/TaZbDB/6jLDPvrDNw=" 109 112 }, ··· 286 283 "jar": "sha256-fZOMgXiQKARcCMBl6UvnX8KAUnYg1b1itRnVg4UyNoo=", 287 284 "pom": "sha256-w1zKe2HUZ42VeMvAuQG4cXtTmr+SVEQdp4uP5g3gZNA=" 288 285 }, 286 + "commons-codec#commons-codec/1.18.0": { 287 + "jar": "sha256-ugBfMEzvkqPe3iSjitWsm4r8zw2PdYOdbBM4Y0z39uQ=", 288 + "pom": "sha256-dLkW2ksDhMYZ5t1MGN7+iqQ4f3lSBSU8+0u7L0WM3c4=" 289 + }, 289 290 "commons-collections#commons-collections/3.2.2": { 290 291 "jar": "sha256-7urpF5FxRKaKdB1MDf9mqlxcX9hVk/8he87T/Iyng7g=", 291 292 "pom": "sha256-1dgfzCiMDYxxHDAgB8raSqmiJu0aES1LqmTLHWMiFws=" ··· 297 290 "commons-io#commons-io/2.11.0": { 298 291 "jar": "sha256-lhsvbYfbrMXVSr9Fq3puJJX4m3VZiWLYxyPOqbwhCQg=", 299 292 "pom": "sha256-LgFv1+MkS18sIKytg02TqkeQSG7h5FZGQTYaPoMe71k=" 293 + }, 294 + "commons-io#commons-io/2.19.0": { 295 + "jar": "sha256-gkJokZtLYvn0DwjFQ4HeWZOwePWGZ+My0XNIrgGdcrk=", 296 + "pom": "sha256-VCt6UC7WGVDRuDEStRsWF9NAfjpN9atWqY12Dg+MWVA=" 300 297 }, 301 298 "commons-lang#commons-lang/2.6": { 302 299 "jar": "sha256-UPEbCfh3wpTVbyRGP0fSj5Kc9QRPZIZhwPDPuumi9Jw=", ··· 343 332 "jar": "sha256-/PSSLTj/hRhPHSMoMXu2CCbhTalIq9YG7j1bjGpw3r0=", 344 333 "pom": "sha256-uIEr4lGsoTl/S2pCO/Tt06KERONFOyIDtTSTNrmVgik=" 345 334 }, 346 - "junit#junit/4.12": { 347 - "jar": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=", 348 - "pom": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ=" 335 + "junit#junit/4.13.2": { 336 + "jar": "sha256-jklbY0Rp1k+4rPo0laBly6zIoP/1XOHjEAe+TBbcV9M=", 337 + "pom": "sha256-Vptpd+5GA8llwcRsMFj6bpaSkbAWDraWTdCSzYnq3ZQ=" 349 338 }, 350 339 "kr/motd/maven#os-maven-plugin/1.7.0": { 351 340 "jar": "sha256-lDBTUBpCnlPRxNYhUu7BJfo2Yg4NxmtzkKiVCXz96s4=", ··· 443 432 "org/apache#apache/27": { 444 433 "pom": "sha256-srD8aeIqZQw4kvHDZtdwdvKVdcZzjfTHpwpEhESEzfk=" 445 434 }, 435 + "org/apache#apache/33": { 436 + "pom": "sha256-14vYUkxfg4ChkKZSVoZimpXf5RLfIRETg6bYwJI6RBU=" 437 + }, 446 438 "org/apache#apache/7": { 447 439 "pom": "sha256-E5fOHbQzrcnyI9vwdJbRM2gUSHUfSuKeWPaOePtLbCU=" 448 440 }, ··· 457 443 "jar": "sha256-Hfi5QwtcjtFD14FeQD4z71NxskAKrb6b2giDdi4IRtE=", 458 444 "pom": "sha256-JxvWc4Oa9G5zr/lX4pGNS/lvWsT2xs9NW+k/0fEnHE0=" 459 445 }, 460 - "org/apache/commons#commons-compress/1.21": { 461 - "jar": "sha256-auz9VFlyillWAc+gcljRMZcv/Dm0kutIvdWWV3ovJEo=", 462 - "pom": "sha256-Z1uwI8m+7d4yMpSZebl0Kl/qlGKApVobRi1Mp4AQiM0=" 446 + "org/apache/commons#commons-compress/1.27.1": { 447 + "jar": "sha256-KT2A9UtTa3QJXc1+o88KKbv8NAJRkoEzJJX0Qg03DRY=", 448 + "pom": "sha256-34zBqDh9TOhCNjtyCf3G0135djg5/T/KtVig+D+dhBw=" 463 449 }, 464 450 "org/apache/commons#commons-dbcp2/2.9.0": { 465 451 "jar": "sha256-iHcgkSxcu83/bg4h1QNJN1Vfj/xZc4Hv+Pp38zzm1k4=", ··· 468 454 "org/apache/commons#commons-lang3/3.11": { 469 455 "pom": "sha256-mA1mXYP+0EZlE08FeOUHRCoOdQaRBzeEORsKeYhySnU=" 470 456 }, 471 - "org/apache/commons#commons-lang3/3.12.0": { 472 - "jar": "sha256-2RnZBEhsA3+NGTQS2gyS4iqfokIwudZ6V4VcXDHH6U4=", 473 - "pom": "sha256-gtMfHcxFg+/9dE6XkWWxbaZL+GvKYj/F0bA+2U9FyFo=" 457 + "org/apache/commons#commons-lang3/3.17.0": { 458 + "jar": "sha256-bucx31yOWil2ocoCO2uzIOqNNTn75kyKHVy3ZRJ8M7Q=", 459 + "pom": "sha256-NRxuSUDpObHzMN9H9g8Tujg9uB7gCBga9UHzoqbSpWw=" 474 460 }, 475 461 "org/apache/commons#commons-lang3/3.9": { 476 462 "pom": "sha256-pAIkKbmEJbQwGBkVchJ5pS9hDzRki9rEh9TKy76N/rU=" ··· 501 487 }, 502 488 "org/apache/commons#commons-parent/54": { 503 489 "pom": "sha256-AA2Bh5UrIjcC/eKW33mVY/Nd6CznKttOe/FXNCN4++M=" 490 + }, 491 + "org/apache/commons#commons-parent/72": { 492 + "pom": "sha256-Q0Xev8dnsa6saKvdcvxn0YtSHUs5A3KhG2P/DFhrIyA=" 493 + }, 494 + "org/apache/commons#commons-parent/73": { 495 + "pom": "sha256-TtRFYLB/hEhHnf0eg6Qiuk6D5gs25RsocaxQKm1cG+o=" 496 + }, 497 + "org/apache/commons#commons-parent/79": { 498 + "pom": "sha256-Yo3zAUis08SRz8trc8euS1mJ5VJqsTovQo3qXUrRDXo=" 499 + }, 500 + "org/apache/commons#commons-parent/81": { 501 + "pom": "sha256-NI1OfBMb5hFMhUpxnOekQwenw5vTZghJd7JP0prQ7bQ=" 504 502 }, 505 503 "org/apache/commons#commons-pool2/2.11.1": { 506 504 "jar": "sha256-6gUF7nUV5YsawOaG5NGl2ffYCOJRphvDcaoFlbmWP4M=", ··· 549 523 "org/apache/logging/log4j#log4j/2.17.1": { 550 524 "pom": "sha256-lnq8AkRDqcsJaTVVmvXprW8P9hN1+Esn1EDS+nCAawk=" 551 525 }, 552 - "org/bouncycastle#bcpkix-jdk15on/1.69": { 553 - "jar": "sha256-QIN20Xqqh4nnrNBV/kBCiaEfozX9fGinUykEn7fSjtI=", 554 - "pom": "sha256-WrvkytLCMJR0ZvsgmiJn48xqDTgKajGRWVnTqtm4F2w=" 526 + "org/bouncycastle#bcpkix-jdk18on/1.80": { 527 + "jar": "sha256-T0umqSYX6hncGD8PpdtJLu5Cb93ioKLWyUd3/9GvZBM=", 528 + "pom": "sha256-pKEiETRntyjhjyb7DP1X8LGg18SlO4Zxis5wv4uG7Uc=" 555 529 }, 556 - "org/bouncycastle#bcprov-jdk15on/1.69": { 557 - "jar": "sha256-5Gm9Ofk2mZ8lYAJjEAP/AioilR2p1b2Xicer+pdjopI=", 558 - "pom": "sha256-/YHicUSVvOeeauazAp2s0kzyz/NAJB2lgQVYlae6eN4=" 530 + "org/bouncycastle#bcprov-jdk18on/1.80": { 531 + "jar": "sha256-6K0gn4xY0pGjfKl1Dp6frGBZaVbJg+Sd2Cgjgd2LMkk=", 532 + "pom": "sha256-oKdcdtkcQh7qVtD2Bi+49j7ff6x+xyT9QgzNytcYHUM=" 559 533 }, 560 - "org/bouncycastle#bcutil-jdk15on/1.69": { 561 - "jar": "sha256-KeQOJGbQQNgqbw6ZY10LwrujqUJRz3k5zwtpMhyu/Ak=", 562 - "pom": "sha256-p2e8fzQtGTKJfso8i6zHAEygOAv6dSnyOpc0VJZcffw=" 534 + "org/bouncycastle#bcutil-jdk18on/1.80": { 535 + "jar": "sha256-Iuymh/eVVBH0Vq8z5uqOaPxzzYDLizKqX3qLGCfXxng=", 536 + "pom": "sha256-Qhp95L/rnFs4sfxHxCagh9kIeJVdQQf1t6gusde3R7Y=" 563 537 }, 564 538 "org/checkerframework#checker-compat-qual/2.5.2": { 565 539 "pom": "sha256-da9ztewybj29yUayH9RoAtXafGEsO/Hlh1N0yY1+pP0=" ··· 573 547 "module": "sha256-clinadyqJrmBVNIp2FzHLls2ZrC8tjfS2vFuxJiVZjg=", 574 548 "pom": "sha256-AjkvvUziGQH5RWFUcrHU1NNZGzqr3wExBfXJLsMstPA=" 575 549 }, 576 - "org/checkerframework#checker-qual/3.42.0": { 577 - "jar": "sha256-zK7dM68LeJTZ8vO2RPTRnkOSjjKQLmGsTRB3eDD1qsc=", 578 - "module": "sha256-4PpiK33mPq4RBH726RtMKtDx8OE8uQP/UggKR/V6V0Y=", 579 - "pom": "sha256-v1/KqycvVMvPG753w72WPIIcmrrSBYcIvwvtPIdUlMo=" 550 + "org/checkerframework#checker-qual/3.49.3": { 551 + "jar": "sha256-Nn7b8v6fYGwf21qLpuHJwnYlmT4f+VTjho3nC8xkFrc=", 552 + "module": "sha256-dv9CWNsfoaC8bOeur0coPfEGD9Q3oJvm7zxcMmnqWtM=", 553 + "pom": "sha256-i+QBdkYoXZFCx/sibPuARFwXfcfBNjsj2UH6bJuwXc8=" 580 554 }, 581 555 "org/codehaus#codehaus-parent/3": { 582 556 "pom": "sha256-UOslOs0LbuBI9DLZ/Do7NiZO+z2h/6f7B/bE1LeoyjE=" ··· 604 578 "org/commonmark#commonmark-ext-footnotes/0.23.0": { 605 579 "jar": "sha256-YwKKfV6V7sjibuBCSxQfh+nalccYTypaSbtD371TsQQ=", 606 580 "pom": "sha256-zMoEy/7Z60gzSM+6aexh9gvdyfPjwJJLZLsZ0cqy4s0=" 581 + }, 582 + "org/commonmark#commonmark-ext-gfm-tables/0.23.0": { 583 + "jar": "sha256-WfO2Gthywhg7guygUn14GspFThF31xmMl5WydH0XC3s=", 584 + "pom": "sha256-x6/bJCGgs9hFDewHWaPrfBHEqZfTlLd8VR3Bgi3S2Uk=" 607 585 }, 608 586 "org/commonmark#commonmark-ext-heading-anchor/0.23.0": { 609 587 "jar": "sha256-7O27O1jbcgxhNXwb4boTKlweeczr4B8NPZo25VJCDL0=", ··· 699 669 "jar": "sha256-EhJRcOeVUZum3IAQwHC1PHaq6StIXB43Uw5Uq13QjUM=", 700 670 "pom": "sha256-EMo7z1F48YUH8hCmOtljeJaFM0OtHBKRoBmhFvIWpUg=" 701 671 }, 702 - "org/junit#junit-bom/5.7.1": { 703 - "module": "sha256-mFTjiU1kskhSB+AEa8oHs9QtFp54L0+oyc4imnj67gQ=", 704 - "pom": "sha256-C5sUo9YhBvr+jGinF7h7h60YaFiZRRt1PAT6QbaFd4Q=" 672 + "org/junit#junit-bom/5.11.0": { 673 + "module": "sha256-9+2+Z/IgQnCMQQq8VHQI5cR29An1ViNqEXkiEnSi7S0=", 674 + "pom": "sha256-5nRZ1IgkJKxjdPQNscj0ouiJRrNAugcsgL6TKivkZE0=" 675 + }, 676 + "org/junit#junit-bom/5.11.0-M2": { 677 + "module": "sha256-hkd6vPSQ1soFmqmXPLEI0ipQb0nRpVabsyzGy/Q8LM4=", 678 + "pom": "sha256-Sj/8Sk7c/sLLXWGZInBqlAcWF5hXGTn4VN/ac+ThfMg=" 679 + }, 680 + "org/junit#junit-bom/5.11.4": { 681 + "module": "sha256-qaTye+lOmbnVcBYtJGqA9obSd9XTGutUgQR89R2vRuQ=", 682 + "pom": "sha256-GdS3R7IEgFMltjNFUylvmGViJ3pKwcteWTpeTE9eQRU=" 705 683 }, 706 684 "org/junit#junit-bom/5.7.2": { 707 685 "module": "sha256-87zrHFndT2mT9DBN/6WAFyuN9lp2zTb6T9ksBXjSitg=", ··· 773 735 "jar": "sha256-jK3UOsXrbQneBfrsyji5F6BAu5E5x+3rTMgcdAtxMoE=", 774 736 "pom": "sha256-cimwOzCnPukQCActnkVppR2FR/roxQ9SeEGu9MGwuqg=" 775 737 }, 776 - "org/postgresql#postgresql/42.7.3": { 777 - "jar": "sha256-omRMv7obqhRf9+jI71gqbu16fsTKeS9/BUEivex1Ymg=", 778 - "pom": "sha256-wqy2hFfZlqjkntB3flklW3RlCXZSOVHxAa25QHXhWIU=" 738 + "org/postgresql#postgresql/42.7.6": { 739 + "jar": "sha256-8qHMA1LdXlxvZdut/ye+4Awy5DLGrQMNB0R/ilmDxCo=", 740 + "pom": "sha256-SfNzCJO2khPK99foymodjHaf9mhCHVJS3gBSvFVGp8c=" 779 741 }, 780 742 "org/python#jython-standalone/2.7.4": { 781 743 "jar": "sha256-H7oXae/8yLGfXhBDa8gnShWM6YhVnyV5J8JMc7sTfzw=",