From 4e3e8b7cc457b2fabb1e07fe34f1f6a193d63300 Mon Sep 17 00:00:00 2001 From: Craig Raw Date: Wed, 11 Oct 2023 11:44:40 +0200 Subject: [PATCH] add figure caption to overview diagram on transaction tab to describe transaction --- drongo | 2 +- .../sparrowwallet/sparrow/SparrowDesktop.java | 1 + .../sparrow/control/TransactionDiagram.java | 31 +- .../control/TransactionDiagramLabel.java | 268 ++++++++++++++++++ .../sparrow/glyphfont/FontAwesome5.java | 2 + .../transaction/HeadersController.java | 10 +- .../transaction/TransactionController.java | 4 +- .../sparrow/transaction/headers.css | 16 ++ .../sparrow/transaction/headers.fxml | 6 +- src/main/resources/font/RobotoMono-Italic.ttf | Bin 0 -> 94372 bytes 10 files changed, 330 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/sparrowwallet/sparrow/control/TransactionDiagramLabel.java create mode 100644 src/main/resources/font/RobotoMono-Italic.ttf diff --git a/drongo b/drongo index 74d2bfec..30aff119 160000 --- a/drongo +++ b/drongo @@ -1 +1 @@ -Subproject commit 74d2bfec24204300392d7a750b6b010038fb9727 +Subproject commit 30aff119081a4a13f931ea6625f69d7974addb04 diff --git a/src/main/java/com/sparrowwallet/sparrow/SparrowDesktop.java b/src/main/java/com/sparrowwallet/sparrow/SparrowDesktop.java index a5a3cd20..70db8fe3 100644 --- a/src/main/java/com/sparrowwallet/sparrow/SparrowDesktop.java +++ b/src/main/java/com/sparrowwallet/sparrow/SparrowDesktop.java @@ -45,6 +45,7 @@ public class SparrowDesktop extends Application { GlyphFontRegistry.register(new FontAwesome5()); GlyphFontRegistry.register(new FontAwesome5Brands()); Font.loadFont(AppServices.class.getResourceAsStream("/font/RobotoMono-Regular.ttf"), 13); + Font.loadFont(AppServices.class.getResourceAsStream("/font/RobotoMono-Italic.ttf"), 11); URL.setURLStreamHandlerFactory(protocol -> WalletIcon.PROTOCOL.equals(protocol) ? new WalletIcon.WalletIconStreamHandler() : null); AppServices.initialize(this); diff --git a/src/main/java/com/sparrowwallet/sparrow/control/TransactionDiagram.java b/src/main/java/com/sparrowwallet/sparrow/control/TransactionDiagram.java index 2c6035f6..693efb61 100644 --- a/src/main/java/com/sparrowwallet/sparrow/control/TransactionDiagram.java +++ b/src/main/java/com/sparrowwallet/sparrow/control/TransactionDiagram.java @@ -72,6 +72,7 @@ public class TransactionDiagram extends GridPane { private WalletTransaction walletTx; private final BooleanProperty finalProperty = new SimpleBooleanProperty(false); + private final ObjectProperty labelProperty = new SimpleObjectProperty<>(null); private final ObjectProperty optimizationStrategyProperty = new SimpleObjectProperty<>(OptimizationStrategy.EFFICIENCY); private boolean expanded; private TransactionDiagram expandedDiagram; @@ -154,6 +155,10 @@ public class TransactionDiagram extends GridPane { updateDerivedDiagram(expandedDiagram); } } + + if(getLabel() != null) { + getLabel().update(this); + } } public void update(String message) { @@ -534,7 +539,7 @@ public class TransactionDiagram extends GridPane { return input.getLabel() != null && !input.getLabel().isEmpty() ? input.getLabel() : input.getHashAsString().substring(0, 8) + "..:" + input.getIndex(); } - private String getSatsValue(long amount) { + String getSatsValue(long amount) { UnitFormat format = Config.get().getUnitFormat() == null ? UnitFormat.DOT : Config.get().getUnitFormat(); return format.formatSatsValue(amount); } @@ -923,12 +928,12 @@ public class TransactionDiagram extends GridPane { } if(payment.getType() == Payment.Type.WHIRLPOOL_FEE) { - return "Whirlpool Fee"; + return "Whirlpool fee"; } else if(walletTx.isPremixSend(payment)) { int premixIndex = getOutputIndex(payment.getAddress(), payment.getAmount()) - 2; return "Premix #" + premixIndex; } else if(walletTx.isBadbankSend(payment)) { - return "Badbank Change"; + return "Badbank change"; } return null; @@ -938,7 +943,7 @@ public class TransactionDiagram extends GridPane { return walletTx.getTransaction().getOutputs().stream().filter(txOutput -> address.equals(txOutput.getScript().getToAddress()) && txOutput.getValue() == amount).mapToInt(TransactionOutput::getIndex).findFirst().orElseThrow(); } - private Wallet getToWallet(Payment payment) { + Wallet getToWallet(Payment payment) { for(Wallet openWallet : AppServices.get().getOpenWallets().keySet()) { if(openWallet != walletTx.getWallet() && openWallet.isValid()) { WalletNode addressNode = openWallet.getWalletAddresses().get(payment.getAddress()); @@ -1078,7 +1083,7 @@ public class TransactionDiagram extends GridPane { return changeReplaceGlyph; } - private Glyph getFeeGlyph() { + public Glyph getFeeGlyph() { Glyph feeGlyph = new Glyph(FontAwesome5.FONT_NAME, FontAwesome5.Glyph.HAND_HOLDING); feeGlyph.getStyleClass().add("fee-icon"); feeGlyph.setFontSize(12); @@ -1162,6 +1167,10 @@ public class TransactionDiagram extends GridPane { } } + public WalletTransaction getWalletTransaction() { + return walletTx; + } + public boolean isFinal() { return finalProperty.get(); } @@ -1174,6 +1183,18 @@ public class TransactionDiagram extends GridPane { this.finalProperty.set(isFinal); } + public TransactionDiagramLabel getLabel() { + return labelProperty.get(); + } + + public ObjectProperty labelProperty() { + return labelProperty; + } + + public void setLabelProperty(TransactionDiagramLabel label) { + this.labelProperty.set(label); + } + public OptimizationStrategy getOptimizationStrategy() { return optimizationStrategyProperty.get(); } diff --git a/src/main/java/com/sparrowwallet/sparrow/control/TransactionDiagramLabel.java b/src/main/java/com/sparrowwallet/sparrow/control/TransactionDiagramLabel.java new file mode 100644 index 00000000..e3f964bf --- /dev/null +++ b/src/main/java/com/sparrowwallet/sparrow/control/TransactionDiagramLabel.java @@ -0,0 +1,268 @@ +package com.sparrowwallet.sparrow.control; + +import com.sparrowwallet.drongo.wallet.*; +import com.sparrowwallet.sparrow.glyphfont.FontAwesome5; +import javafx.beans.property.IntegerProperty; +import javafx.beans.property.SimpleIntegerProperty; +import javafx.geometry.Pos; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.layout.HBox; +import javafx.scene.text.Font; +import org.controlsfx.glyphfont.Glyph; + +import java.util.*; +import java.util.stream.Collectors; + +public class TransactionDiagramLabel extends HBox { + private final List outputs = new ArrayList<>(); + private final Button left; + private final Button right; + private final IntegerProperty displayedIndex = new SimpleIntegerProperty(-1); + + public TransactionDiagramLabel() { + setSpacing(5); + setAlignment(Pos.CENTER_RIGHT); + + left = new Button(""); + left.setGraphic(getLeftGlyph()); + left.setOnAction(event -> { + int index = displayedIndex.get(); + if(index > 0) { + index--; + } + displayedIndex.set(index); + }); + + right = new Button(""); + right.setGraphic(getRightGlyph()); + right.setOnAction(event -> { + int index = displayedIndex.get(); + if(index < outputs.size() - 1) { + index++; + } + displayedIndex.set(index); + }); + + displayedIndex.addListener((observable, oldValue, newValue) -> { + left.setDisable(newValue.intValue() <= 0); + right.setDisable(newValue.intValue() < 0 || newValue.intValue() >= outputs.size() - 1); + if(oldValue.intValue() >= 0 && oldValue.intValue() < outputs.size()) { + outputs.get(oldValue.intValue()).setVisible(false); + } + if(newValue.intValue() >= 0 && newValue.intValue() < outputs.size()) { + outputs.get(newValue.intValue()).setVisible(true); + } + }); + } + + public void update(TransactionDiagram transactionDiagram) { + getChildren().clear(); + outputs.clear(); + displayedIndex.set(-1); + double maxWidth = getMaxWidth(); + + WalletTransaction walletTx = transactionDiagram.getWalletTransaction(); + List outputLabels = new ArrayList<>(); + + List premixOutputs = walletTx.getPayments().stream().filter(walletTx::isPremixSend).collect(Collectors.toList()); + if(!premixOutputs.isEmpty()) { + OutputLabel premixOutputLabel = getPremixOutputLabel(transactionDiagram, premixOutputs); + if(premixOutputLabel != null) { + outputLabels.add(premixOutputLabel); + } + + Optional optWhirlpoolFee = walletTx.getPayments().stream().filter(payment -> payment.getType() == Payment.Type.WHIRLPOOL_FEE).findFirst(); + if(optWhirlpoolFee.isPresent()) { + OutputLabel whirlpoolFeeOutputLabel = getWhirlpoolFeeOutputLabel(transactionDiagram, optWhirlpoolFee.get(), premixOutputs); + outputLabels.add(whirlpoolFeeOutputLabel); + } + + List badbankOutputs = walletTx.getPayments().stream().filter(walletTx::isBadbankSend).collect(Collectors.toList()); + List badbankOutputLabels = badbankOutputs.stream().map(payment -> getBadbankOutputLabel(transactionDiagram, payment)).collect(Collectors.toList()); + outputLabels.addAll(badbankOutputLabels); + } else if(walletTx.getPayments().size() >= 5 && walletTx.getPayments().stream().mapToLong(Payment::getAmount).distinct().count() <= 1 + && walletTx.getWallet().getStandardAccountType() == StandardAccount.WHIRLPOOL_PREMIX && walletTx.getPayments().stream().anyMatch(walletTx::isPostmixSend)) { + OutputLabel mixOutputLabel = getMixOutputLabel(transactionDiagram, walletTx.getPayments()); + if(mixOutputLabel != null) { + outputLabels.add(mixOutputLabel); + } + } else if(walletTx.getPayments().size() >= 5 && walletTx.getPayments().stream().mapToLong(Payment::getAmount).distinct().count() <= 1 + && walletTx.getWallet().getStandardAccountType() == StandardAccount.WHIRLPOOL_POSTMIX && walletTx.getPayments().stream().anyMatch(walletTx::isConsolidationSend)) { + OutputLabel remixOutputLabel = getRemixOutputLabel(transactionDiagram, walletTx.getPayments()); + if(remixOutputLabel != null) { + outputLabels.add(remixOutputLabel); + } + } else { + List payments = walletTx.getPayments().stream().filter(payment -> payment.getType() == Payment.Type.DEFAULT && !walletTx.isConsolidationSend(payment)).collect(Collectors.toList()); + List paymentLabels = payments.stream().map(payment -> getOutputLabel(transactionDiagram, payment)).collect(Collectors.toList()); + if(walletTx.getSelectedUtxos().values().stream().allMatch(Objects::isNull)) { + paymentLabels.sort(Comparator.comparingInt(paymentLabel -> (paymentLabel.text.startsWith("Receive") ? 0 : 1))); + } + outputLabels.addAll(paymentLabels); + + List consolidations = walletTx.getPayments().stream().filter(payment -> payment.getType() == Payment.Type.DEFAULT && walletTx.isConsolidationSend(payment)).collect(Collectors.toList()); + outputLabels.addAll(consolidations.stream().map(consolidation -> getOutputLabel(transactionDiagram, consolidation)).collect(Collectors.toList())); + + List mixes = walletTx.getPayments().stream().filter(payment -> payment.getType() == Payment.Type.MIX || payment.getType() == Payment.Type.FAKE_MIX).collect(Collectors.toList()); + outputLabels.addAll(mixes.stream().map(payment -> getOutputLabel(transactionDiagram, payment)).collect(Collectors.toList())); + } + + Map changeMap = walletTx.getChangeMap(); + outputLabels.addAll(changeMap.entrySet().stream().map(changeEntry -> getOutputLabel(transactionDiagram, changeEntry)).collect(Collectors.toList())); + + OutputLabel feeOutputLabel = getFeeOutputLabel(transactionDiagram); + if(feeOutputLabel != null) { + outputLabels.add(feeOutputLabel); + } + + for(OutputLabel outputLabel : outputLabels) { + maxWidth = Math.max(maxWidth, outputLabel.width); + outputs.add(outputLabel.hBox); + getChildren().add(outputLabel.hBox); + } + + HBox buttonBox = new HBox(); + buttonBox.setAlignment(Pos.CENTER_RIGHT); + buttonBox.getChildren().addAll(left, right); + getChildren().add(buttonBox); + + setMaxWidth(maxWidth); + setPrefWidth(maxWidth); + + if(outputLabels.size() > 0) { + displayedIndex.set(0); + } + } + + private OutputLabel getPremixOutputLabel(TransactionDiagram transactionDiagram, List premixOutputs) { + if(premixOutputs.isEmpty()) { + return null; + } + + Payment premixOutput = premixOutputs.get(0); + long total = premixOutputs.stream().mapToLong(Payment::getAmount).sum(); + Glyph glyph = transactionDiagram.getOutputGlyph(premixOutput); + String text; + if(premixOutputs.size() == 1) { + text = "Premix transaction with 1 output of " + transactionDiagram.getSatsValue(premixOutput.getAmount()) + " sats"; + } else { + text = "Premix transaction with " + premixOutputs.size() + " outputs of " + transactionDiagram.getSatsValue(premixOutput.getAmount()) + " sats each (" + + transactionDiagram.getSatsValue(total) + " sats)"; + } + + return getOutputLabel(glyph, text); + } + + private OutputLabel getBadbankOutputLabel(TransactionDiagram transactionDiagram, Payment payment) { + Glyph glyph = transactionDiagram.getOutputGlyph(payment); + String text = "Badbank change of " + transactionDiagram.getSatsValue(payment.getAmount()) + " sats to " + payment.getAddress().toString(); + + return getOutputLabel(glyph, text); + } + + private OutputLabel getWhirlpoolFeeOutputLabel(TransactionDiagram transactionDiagram, Payment whirlpoolFee, List premixOutputs) { + long total = premixOutputs.stream().mapToLong(Payment::getAmount).sum(); + double feePercentage = (double)whirlpoolFee.getAmount() / (total - whirlpoolFee.getAmount()); + Glyph glyph = transactionDiagram.getOutputGlyph(whirlpoolFee); + String text = "Whirlpool fee of " + transactionDiagram.getSatsValue(whirlpoolFee.getAmount()) + " sats (" + String.format("%.2f", feePercentage * 100.0) + "% of total premix value)"; + + return getOutputLabel(glyph, text); + } + + private OutputLabel getMixOutputLabel(TransactionDiagram transactionDiagram, List mixOutputs) { + if(mixOutputs.isEmpty()) { + return null; + } + + Payment remixOutput = mixOutputs.get(0); + long total = mixOutputs.stream().mapToLong(Payment::getAmount).sum(); + Glyph glyph = TransactionDiagram.getPremixGlyph(); + String text = "Mix transaction with " + mixOutputs.size() + " outputs of " + transactionDiagram.getSatsValue(remixOutput.getAmount()) + " sats each (" + + transactionDiagram.getSatsValue(total) + " sats)"; + + return getOutputLabel(glyph, text); + } + + private OutputLabel getRemixOutputLabel(TransactionDiagram transactionDiagram, List remixOutputs) { + if(remixOutputs.isEmpty()) { + return null; + } + + Payment remixOutput = remixOutputs.get(0); + long total = remixOutputs.stream().mapToLong(Payment::getAmount).sum(); + Glyph glyph = TransactionDiagram.getPremixGlyph(); + String text = "Remix transaction with " + remixOutputs.size() + " outputs of " + transactionDiagram.getSatsValue(remixOutput.getAmount()) + " sats each (" + + transactionDiagram.getSatsValue(total) + " sats)"; + + return getOutputLabel(glyph, text); + } + + private OutputLabel getOutputLabel(TransactionDiagram transactionDiagram, Payment payment) { + WalletTransaction walletTx = transactionDiagram.getWalletTransaction(); + Wallet toWallet = transactionDiagram.getToWallet(payment); + WalletNode toNode = walletTx.getWallet() != null && !walletTx.getWallet().isBip47() ? walletTx.getAddressNodeMap().get(payment.getAddress()) : null; + + Glyph glyph = transactionDiagram.getOutputGlyph(payment); + String text = (toWallet == null ? (toNode != null ? "Consolidate " : "Pay ") : "Receive ") + transactionDiagram.getSatsValue(payment.getAmount()) + " sats to " + payment.getAddress().toString(); + + return getOutputLabel(glyph, text); + } + + private OutputLabel getOutputLabel(TransactionDiagram transactionDiagram, Map.Entry changeEntry) { + WalletTransaction walletTx = transactionDiagram.getWalletTransaction(); + + Glyph glyph = TransactionDiagram.getChangeGlyph(); + String text = "Change of " + transactionDiagram.getSatsValue(changeEntry.getValue()) + " sats to " + walletTx.getChangeAddress(changeEntry.getKey()).toString(); + + return getOutputLabel(glyph, text); + } + + private OutputLabel getFeeOutputLabel(TransactionDiagram transactionDiagram) { + WalletTransaction walletTx = transactionDiagram.getWalletTransaction(); + if(walletTx.getFee() < 0) { + return null; + } + + Glyph glyph = transactionDiagram.getFeeGlyph(); + String text = "Fee of " + transactionDiagram.getSatsValue(walletTx.getFee()) + " sats (" + String.format("%.2f", walletTx.getFeePercentage() * 100.0) + "%)"; + + return getOutputLabel(glyph, text); + } + + private OutputLabel getOutputLabel(Glyph glyph, String text) { + Label icon = new Label(); + icon.setMinWidth(15); + glyph.setFontSize(12); + icon.setGraphic(glyph); + + CopyableLabel label = new CopyableLabel(); + label.setFont(Font.font("Roboto Mono Italic", 13)); + label.setText(text); + + HBox output = new HBox(5); + output.setAlignment(Pos.CENTER); + output.managedProperty().bind(output.visibleProperty()); + output.setVisible(false); + output.getChildren().addAll(icon, label); + + double lineWidth = TextUtils.computeTextWidth(label.getFont(), label.getText(), 0.0D) + 2 + getSpacing() + icon.getMinWidth() + 60; + return new OutputLabel(output, lineWidth, text); + } + + public static Glyph getLeftGlyph() { + Glyph caretLeftGlyph = new Glyph(FontAwesome5.FONT_NAME, FontAwesome5.Glyph.CARET_LEFT); + caretLeftGlyph.getStyleClass().add("label-left-icon"); + caretLeftGlyph.setFontSize(15); + return caretLeftGlyph; + } + + public static Glyph getRightGlyph() { + Glyph caretRightGlyph = new Glyph(FontAwesome5.FONT_NAME, FontAwesome5.Glyph.CARET_RIGHT); + caretRightGlyph.getStyleClass().add("label-right-icon"); + caretRightGlyph.setFontSize(15); + return caretRightGlyph; + } + + private record OutputLabel(HBox hBox, double width, String text) {} +} diff --git a/src/main/java/com/sparrowwallet/sparrow/glyphfont/FontAwesome5.java b/src/main/java/com/sparrowwallet/sparrow/glyphfont/FontAwesome5.java index ae33d192..2b83a2b9 100644 --- a/src/main/java/com/sparrowwallet/sparrow/glyphfont/FontAwesome5.java +++ b/src/main/java/com/sparrowwallet/sparrow/glyphfont/FontAwesome5.java @@ -25,6 +25,8 @@ public class FontAwesome5 extends GlyphFont { BTC('\uf15a'), BULLSEYE('\uf140'), CAMERA('\uf030'), + CARET_LEFT('\uf0d9'), + CARET_RIGHT('\uf0da'), CHECK_CIRCLE('\uf058'), CIRCLE('\uf111'), COINS('\uf51e'), diff --git a/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java b/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java index 9a52641b..532dacb7 100644 --- a/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java +++ b/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java @@ -95,6 +95,9 @@ public class HeadersController extends TransactionFormController implements Init @FXML private TransactionDiagram transactionDiagram; + @FXML + private TransactionDiagramLabel transactionDiagramLabel; + @FXML private IntegerSpinner version; @@ -440,6 +443,7 @@ public class HeadersController extends TransactionFormController implements Init updateFee(feeAmt); } + transactionDiagram.labelProperty().set(transactionDiagramLabel); transactionDiagram.update(getWalletTransaction(headersForm.getInputTransactions())); blockchainForm.managedProperty().bind(blockchainForm.visibleProperty()); @@ -628,7 +632,11 @@ public class HeadersController extends TransactionFormController implements Init payments.add(new Payment(txOutput.getScript().getToAddress(), ".." + changeNode + " (Mix)", txOutput.getValue(), false, Payment.Type.MIX)); } } else { - changeMap.put(changeNode, txOutput.getValue()); + if(changeMap.containsKey(changeNode)) { + payments.add(new Payment(txOutput.getScript().getToAddress(), headersForm.getName(), txOutput.getValue(), false, Payment.Type.DEFAULT)); + } else { + changeMap.put(changeNode, txOutput.getValue()); + } } } else { Payment.Type paymentType = Payment.Type.DEFAULT; diff --git a/src/main/java/com/sparrowwallet/sparrow/transaction/TransactionController.java b/src/main/java/com/sparrowwallet/sparrow/transaction/TransactionController.java index a3a53fce..0ad686dd 100644 --- a/src/main/java/com/sparrowwallet/sparrow/transaction/TransactionController.java +++ b/src/main/java/com/sparrowwallet/sparrow/transaction/TransactionController.java @@ -70,14 +70,14 @@ public class TransactionController implements Initializable { public void initializeView() { fetchTransactions(); initializeTxTree(); - transactionMasterDetail.setDividerPosition(0.82); + transactionMasterDetail.setDividerPosition(0.85); transactionMasterDetail.setShowDetailNode(Config.get().isShowTransactionHex()); txhex.setTransaction(getTransaction()); highlightTxHex(); transactionMasterDetail.sceneProperty().addListener((observable, oldScene, newScene) -> { if(oldScene == null && newScene != null) { - transactionMasterDetail.setDividerPosition(AppServices.isReducedWindowHeight(transactionMasterDetail) ? 0.9 : 0.82); + transactionMasterDetail.setDividerPosition(AppServices.isReducedWindowHeight(transactionMasterDetail) ? 0.9 : 0.85); } }); } diff --git a/src/main/resources/com/sparrowwallet/sparrow/transaction/headers.css b/src/main/resources/com/sparrowwallet/sparrow/transaction/headers.css index bc1ae3be..cc2dc6b5 100644 --- a/src/main/resources/com/sparrowwallet/sparrow/transaction/headers.css +++ b/src/main/resources/com/sparrowwallet/sparrow/transaction/headers.css @@ -82,6 +82,22 @@ -fx-text-fill: rgb(238, 210, 2); } +#transactionDiagramLabel .button { + -fx-padding: 0; + -fx-pref-height: 18; + -fx-pref-width: 18; + -fx-border-width: 0; + -fx-background-color: -fx-background; +} + +#transactionDiagramLabel .button .glyph-font { + -fx-text-fill: #0184bc; +} + +#transactionDiagramLabel .button:hover .glyph-font { + -fx-text-fill: #259cf5; +} + .details-lower .fieldset { -fx-padding: 0 0 0 0; } diff --git a/src/main/resources/com/sparrowwallet/sparrow/transaction/headers.fxml b/src/main/resources/com/sparrowwallet/sparrow/transaction/headers.fxml index ab07619b..30d074a2 100644 --- a/src/main/resources/com/sparrowwallet/sparrow/transaction/headers.fxml +++ b/src/main/resources/com/sparrowwallet/sparrow/transaction/headers.fxml @@ -29,6 +29,7 @@ + @@ -73,7 +74,10 @@ - + + + + diff --git a/src/main/resources/font/RobotoMono-Italic.ttf b/src/main/resources/font/RobotoMono-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..61e5303325a1b4d196d3ba631ac4681b1fdfb7c9 GIT binary patch literal 94372 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